Test harness improvements and test coverage of all methods within SNMP::Info base class

This commit is contained in:
Eric A. Miller
2018-03-27 21:07:04 -04:00
parent 9af7a7661c
commit cbc756a3f8
2 changed files with 1153 additions and 117 deletions

View File

@@ -58,11 +58,26 @@ sub setup : Tests(setup) {
my $class = $test->class;
my $sess = $test->mock_session;
$test->{info}
= $class->new('AutoSpecify' => 0, 'BulkWalk' => 0, 'Session' => $sess,);
$test->{info} = $class->new(
'AutoSpecify' => 0,
'BulkWalk' => 0,
'UseEnums' => 1,
'RetryNoSuch' => 1,
'DestHost' => '127.0.0.1',
'Community' => 'public',
'Version' => 2,
'Session' => $sess,
);
}
sub teardown : Tests(teardown) { my $test = shift; $test->{info} = undef; }
sub teardown : Tests(teardown) {
my $test = shift;
my $sess = $test->mock_session;
# Make sure we start clear object and any mocked session data after each test
$test->{info} = undef;
$sess->{Data} = {};
}
sub create_mock_session {
@@ -137,10 +152,14 @@ sub mock_get {
($leaf, $iid) = $oid_name =~ /^(\S+::\w+)[.]?(\S+)*$/x;
}
# This is a lot of indirection, but we need the base OID, it may be
# passed with a zero for non table leaf
my $oid_base = SNMP::translateObj($leaf);
$iid ||= 0;
my $new_iid = $iid;
my $val = $EMPTY;
my $data = $c_data->{$leaf} || {};
my $data = $c_data->{$leaf} || $c_data->{$oid_base} || {};
my $count = scalar keys %{$data} || 0;
if ($count > 1) {
my $found = 0;
@@ -233,7 +252,17 @@ sub mock_getnext {
}
# For testing purposes assume sets worked
sub mock_set {1}
sub mock_set {
my $mock_session = shift;
$mock_session->mock(
'set',
sub {
return 1;
}
);
return;
}
# Utility to load snmpwalk from a file to use for mock sessions
sub load_snmpdata {
@@ -257,15 +286,20 @@ sub load_snmpdata {
return $snmp_data;
}
# Grab the symbol table for verification that
# dynamic methods via AUTOLOAD and can() have been inserted
sub symbols {
my $test = shift;
my $class = $test->class;
# Returns 1 if the method is defined in the symbol table 0 otherwise, used for
# verification that dynamic methods via AUTOLOAD and can() have been inserted
# into the symbol table
sub symbol_test {
my $test = shift;
my $method = shift;
my $class = $test->class;
my %symbols = ();
{
no strict 'refs'; ## no critic (ProhibitNoStrict)
return \%{$class . '::'};
%symbols = %{$class . '::'};
}
return (defined($symbols{$method}) ? 1 : 0);
}
1;

File diff suppressed because it is too large Load Diff