Relax validation of MIB access checks until we have broader test coverage that this is a non-breaking change

Mark corresponding test TODO in Info test class
This commit is contained in:
Eric A. Miller
2018-04-01 21:50:26 -04:00
parent 66bedd4d54
commit facdf5b7a7
3 changed files with 15 additions and 11 deletions

View File

@@ -17,8 +17,8 @@ Version 3.54
* Don't use MIB leafs that are not-accessible according to MIB
* Fix logic for determining if MIB leaf supports set operations
NOTE: Fixing this logic now results in methods starting with set_ on MIB
leafs without Write or Create access and ANY method on a MIB leaf that is
not-accessible failing validation in _validate_autoload_method()
leafs without Write or Create access failing validation in
_validate_autoload_method()
Version 3.53 (2018-03-22)

View File

@@ -4626,15 +4626,13 @@ sub _validate_autoload_method {
# If we were given a fully qualified OID because we don't have the MIB
# file, it will translate above but we won't be able to check access so
# skip the check and return
if ($access) {
unless ( ( $method =~ /^set/ && $access =~ /Write|Create/ )
|| ($method !~ /^set/ && $access =~ /Read|Create/) )
{
if ($access && $method =~ /^set/ && $access !~ /Write|Create/) {
print
"SNMP::Info::_validate_autoload_method($attr : $oid) Not accessable for requested operation.\n"
if $self->debug();
return;
}
}
# If the parent of the leaf has indexes it is contained within a table

View File

@@ -188,6 +188,7 @@ sub loopdetect : Tests(4) {
sub device_type : Tests(+6) {
my $test = shift;
$test->SUPER::device_type();
# No sysServices and unknown sysDescr results in SNMP::Info
my $cache_data
@@ -252,7 +253,7 @@ sub device_type : Tests(+6) {
};
$test->{info}->cache($cache_data);
is($test->{info}->device_type,
'SNMP::Info::Layer7::APC', 'Layer 1 device type by sysObjectID');
'SNMP::Info::Layer7::APC', 'Layer 7 device type by sysObjectID');
$test->{info}->clear_cache();
# We will test each specific subclass, so no need to check that logic here
@@ -1597,10 +1598,15 @@ sub private_validate_autoload_method : Tests(8) {
q(Func 'ifPromiscuousMode_raw' validates)
);
};
TODO: {
local $TODO
= "Check MIB access for non set methods in _validate_autoload_method"
if 1;
# Test that not-accessible leaf returns undef IF-MIB::ifStackHigherLayer
is($test->{info}->_validate_autoload_method('ifStackHigherLayer'),
undef, q(MIB leaf 'ifStackHigherLayer' not-accessible, returns undef));
}
# Test that read-only leaf won't validate set_
is($test->{info}->_validate_autoload_method('set_i_lastchange'),