diff --git a/xt/lib/My/Test/Class.pm b/xt/lib/My/Test/Class.pm index b8dc227b..621f7969 100644 --- a/xt/lib/My/Test/Class.pm +++ b/xt/lib/My/Test/Class.pm @@ -106,7 +106,20 @@ sub constructor : Tests(8) { scalar keys %{$test->{info}{munge}}, 'Munge subclass data structure initialized' ); - is_deeply($test->{info}{store}, {}, 'Store initialized'); + ok(exists $test->{info}{store}, 'Store initialized'); +} + +sub device_type : Tests(2) { + my $test = shift; + my $class = $test->class; + + can_ok($test->{info}, 'device_type'); + + # This depends on cache or mocked session data being provided. + # Recommendation is to extend the existing setup method in the + # subclass to provide the common data. + is($test->{info}->device_type(), + $class, qq(Device type is $class)); } sub globals : Tests(2) { diff --git a/xt/lib/Test/SNMP/Info.pm b/xt/lib/Test/SNMP/Info.pm index 09ab0089..d28d615b 100644 --- a/xt/lib/Test/SNMP/Info.pm +++ b/xt/lib/Test/SNMP/Info.pm @@ -1,4 +1,4 @@ -# SNMP::Info::Test +# Test::SNMP::Info # # Copyright (c) 2018 Eric Miller # All rights reserved. @@ -59,13 +59,13 @@ sub update : Tests(9) { TODO: { # The update() method creates a new SNMP::Session, v1/2 do not actually - # need to contact the DestHost for sesssion creation while v3 does. + # need to contact the DestHost for session creation while v3 does. # It appears that Net-SNMP 5.8 changes the behavior of v3 session creation # so that it doesn't require contact with the DestHost to pass these tests # We also could connect to http://snmplabs.com v3 simulator but would # prefer to keep those tests isolated to 10_remote_snmplabs.t - we could # also move the update() tests to that file. - todo_skip "Revist v3 Context update() tests when using Net-SNMP 5.8+", 4 + todo_skip "Revisit v3 Context update() tests when using Net-SNMP 5.8+", 4 if 1; # Starting context @@ -186,24 +186,14 @@ sub loopdetect : Tests(4) { 'Loopdetect off'); } -sub device_type : Tests(8) { +sub device_type : Tests(+6) { my $test = shift; - can_ok($test->{info}, 'device_type'); - - # Empty args and no SNMP data should result in undef - is($test->{info}->device_type(), - undef, 'No sysServices, no sysDescr results in undef'); - - # Populate cache for tests rather than mocking session to limit code hit - # on these tests + # No sysServices and unknown sysDescr results in SNMP::Info my $cache_data = {'_layers' => '00000000', '_description' => 'My-Test-sysDescr',}; $test->{info}->cache($cache_data); - is($test->{info}->device_type(), - 'SNMP::Info', 'No sysServices and unknown sysDescr results in SNMP::Info'); - $test->{info}->debug(1); warnings_like { $test->{info}->device_type() } [{carped => qr/Might give unexpected results/i}], @@ -211,6 +201,10 @@ sub device_type : Tests(8) { $test->{info}->debug(0); $test->{info}->clear_cache(); + # Cache has been cleared, empty args and no SNMP data result in undef + is($test->{info}->device_type(), + undef, 'No sysServices, no sysDescr results in undef'); + # Test one oid per layer hash just to verify oid mapping, no need to test # every hash key - chose an id that is unique per layer @@ -261,7 +255,7 @@ sub device_type : Tests(8) { 'SNMP::Info::Layer7::APC', 'Layer 1 device type by sysObjectID'); $test->{info}->clear_cache(); - # Add Regex tests if needed + # We will test each specific subclass, so no need to check that logic here } sub error : Tests(7) {