More base class test coverage
This commit is contained in:
		| @@ -97,23 +97,25 @@ sub funcs : Tests(2) { | ||||
| # or context as described in documentation | ||||
|  | ||||
| # TODO - Commented out as causing problems during CI build | ||||
| #sub update : Tests(4) { | ||||
| #  my $test = shift; | ||||
| sub update : Tests(4) { | ||||
|   my $test = shift; | ||||
|  | ||||
|   # Starting community | ||||
| #  is($test->{info}{sess}{Community}, 'public', 'original community'); | ||||
|   is($test->{info}{sess}{Community}, 'public', 'original community'); | ||||
|  | ||||
|   # Change community | ||||
| #  $test->{info}->update('Community' => 'new_community',); | ||||
| #  is($test->{info}{sess}{Community}, 'new_community', 'community changed'); | ||||
|   my %update_args = ('Community' => 'new_community',); | ||||
|   $test->{info}->update(%update_args); | ||||
|   is($test->{info}{sess}{Community}, 'new_community', 'community changed'); | ||||
|  | ||||
|   # Starting context | ||||
| #  is($test->{info}{sess}{Context}, '', 'original context'); | ||||
|   is($test->{info}{sess}{Context}, '', 'original context'); | ||||
|  | ||||
|   # Change context | ||||
| #  $test->{info}->update('Context' => 'new_context',); | ||||
| #  is($test->{info}->{sess}->{Context}, 'new_context', 'context changed'); | ||||
| #} | ||||
|   %update_args = ('Context' => 'new_context',); | ||||
|   $test->{info}->update(%update_args); | ||||
|   is($test->{info}->{sess}->{Context}, 'new_context', 'context changed'); | ||||
| } | ||||
|  | ||||
| sub cache_and_clear_cache : Tests(9) { | ||||
|   my $test = shift; | ||||
| @@ -677,4 +679,86 @@ sub munge_i_up : Tests(4) { | ||||
|   is(SNMP::Info::munge_i_up(7), 'lowerLayerDown', 'Lower layer down status'); | ||||
| } | ||||
|  | ||||
| sub munge_port_list : Tests(2) { | ||||
|   my $test = shift; | ||||
|  | ||||
|   can_ok($test->{info}, 'munge_port_list'); | ||||
|  | ||||
|   # These are typically longer bit strings to cover the all ports in a switch | ||||
|   my $bit_string = '01010101010101010101010101010101'; | ||||
|   my $bits = pack("B*", $bit_string); | ||||
|  | ||||
|   # We are going to get a reference of array of bits back so convert the | ||||
|   # string to an array | ||||
|   my $expected = []; | ||||
|   for my $value (split //, $bit_string) { | ||||
|     $expected->[++$#$expected] = $value; | ||||
|   } | ||||
|   is_deeply(SNMP::Info::munge_port_list($bits), | ||||
|     $expected, 'Portlist octet string coverted to ASCII bit array'); | ||||
| } | ||||
|  | ||||
| sub munge_null : Tests(2) { | ||||
|   my $test = shift; | ||||
|  | ||||
|   can_ok($test->{info}, 'munge_null'); | ||||
|  | ||||
|   # See if all possible control characters and nulls are removed | ||||
|   my $cntl_string = "Test\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09"; | ||||
|   $cntl_string .= "This\x0A\x0B\x0C\x0D\x0E\x0F"; | ||||
|   $cntl_string .= "Crazy\x11\x12\x13\x14\x15\x16\x17\x18\x19"; | ||||
|   $cntl_string .= "Cntl\x1A\x1B\x1C\x1D\x1E\x1F"; | ||||
|   $cntl_string .= "\x7FString"; | ||||
|  | ||||
|   # This is layers munge, use L3 test case | ||||
|   is(SNMP::Info::munge_null($cntl_string), | ||||
|     'TestThisCrazyCntlString', 'Null and control characters removed'); | ||||
| } | ||||
|  | ||||
| sub munge_e_type : Tests(3) { | ||||
|   my $test = shift; | ||||
|  | ||||
|   can_ok($test->{info}, 'munge_e_type'); | ||||
|  | ||||
|   # This is just calling SNMP::translateOb, so rather than loading another MIB | ||||
|   # let's just resolve an OID we don't use from a loaded MIB. | ||||
|   is(SNMP::Info::munge_e_type('.1.3.6.1.2.1.11.4'), | ||||
|     'snmpInBadCommunityNames', 'OID translated properly'); | ||||
|  | ||||
|   # Bogus OID | ||||
|   is(SNMP::Info::munge_e_type('.100.3.6.1.2.1.11.4'), | ||||
|     '.100.3.6.1.2.1.11.4', 'OID returned when unable to translate'); | ||||
| } | ||||
|  | ||||
| sub init : Tests(4) { | ||||
|   my $test = shift; | ||||
|  | ||||
|   can_ok($test->{info}, 'init'); | ||||
|  | ||||
|   # When the test info object was created init() was called so all of the | ||||
|   # entries in %MIBS should be loaded | ||||
|   subtest 'Base MIBs loaded subtest' => sub { | ||||
|  | ||||
|     my $base_mibs = $test->{info}->mibs(); | ||||
|  | ||||
|     foreach my $key (keys %$base_mibs) { | ||||
|       my $qual_name = "$key" . '::' . "$base_mibs->{$key}"; | ||||
|       ok(defined $SNMP::MIB{$base_mibs->{$key}}, "$qual_name defined"); | ||||
|       like(SNMP::translateObj($qual_name), | ||||
|         qr/^(\.\d+)+$/, "$qual_name translates to a OID"); | ||||
|     } | ||||
|   }; | ||||
|    | ||||
|   # Get SNMP::Version so we can restore | ||||
|   my $netsnmp_ver = $SNMP::VERSION; | ||||
|   local $SNMP::VERSION = '5.0.1'; | ||||
|    | ||||
|   warnings_like { $test->{info}->init() } | ||||
|   [{carped => qr/Net-SNMP\s5.0.1\sseems\sto\sbe\srather\sbuggy/x}], | ||||
|     'Use of bad Net-SNMP gives warning'; | ||||
|    | ||||
|   $SNMP::VERSION = $netsnmp_ver; | ||||
| } | ||||
|  | ||||
|  | ||||
| 1; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user