From a7df2cd2f266a0adfad63c0fd7a688bee0873ec2 Mon Sep 17 00:00:00 2001 From: Olof hagsand Date: Tue, 24 May 2022 11:16:44 +0200 Subject: [PATCH] SNMP frontend tests: Added more descriptic types of each get/set value and netsnmp instructions --- test/README.md | 9 ++++++ test/test_snmp_set.sh | 67 ++++++++++++++++++++----------------------- 2 files changed, 40 insertions(+), 36 deletions(-) diff --git a/test/README.md b/test/README.md index a5aa2eed..7609d1d7 100644 --- a/test/README.md +++ b/test/README.md @@ -150,6 +150,15 @@ If you do not have them, generate self-signed certs, eg as follows: There are also client-cert tests, eg `test_ssl_certs.sh` +## SNMP + +Clixon snmp frontend tests require a running netsnmpd and converted YANG files from MIB. + +Netsnmpd is 5.9 or later and can be started via systemd. For the tests +to run, the systems IFMIB should be disabled: `-I -ifTable,ifNumber,ifXTable` + +Converted YANG files are available at `https://github.com/clicon/mib-yangs` or alternatively use `smidump` version 0.5 or later. + ## Known issues [Workaround: Unicode double-quote in iana-if-type@2022-03-07.yang](https://github.com/clicon/clixon/issues/315) diff --git a/test/test_snmp_set.sh b/test/test_snmp_set.sh index 1bd481c1..081d1bec 100755 --- a/test/test_snmp_set.sh +++ b/test/test_snmp_set.sh @@ -105,7 +105,7 @@ OID5="${MIB}.1.5" # ifType OID6="${MIB}.1.6" # ifSpeed OID7="${MIB}.1.7" # ifAdminStatus OID8="${MIB}.1.8" # ifInOctets -OID9="${MIB}.1.9" # ifHCInOctets +OID9="${MIB}.1.9" # ifHCInOctets NB 64-bit not tested and seems not supported OID10="${MIB}.1.10" # ifPromiscuousMode OID11="${MIB}.1.11" # ifCounterDiscontinuityTime OID12="${MIB}.1.12" # ifStackStatus @@ -121,32 +121,42 @@ OID21="${MIB}.2.2.1.3" # netSnmpHostAddress OID22="${MIB}.2.2.1.4" # netSnmpHostStorage OID23="${MIB}.2.2.1.5" # netSnmpHostRowStatus -new "Test SNMP get for default value" -expectpart "$($snmpget $OID1)" 0 "$OID1 = INTEGER: 42" +NAME=netSnmpExampleInteger +OID=$OID1 +VALUE=1234 +TYPE=INTEGER # Integer32 -new "Set new value to OID1" -expectpart "$($snmpset $OID1 i 1234)" 0 "$OID1 = INTEGER: 1234" +new "Get $NAME default" +expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: 42" -new "Get new value" -expectpart "$($snmpget $OID1)" 0 "$OID1 = INTEGER: 1234" +new "Set $NAME $VALUE" +expectpart "$($snmpset $OID i "$VALUE")" 0 "$OID = $TYPE: $VALUE" +new "Get $NAME $VALUE" +expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" + new "Set new value via NETCONF" -expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "none999" "" "" +expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "none<$NAME>999" "" "" new "netconf commit" expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "" "" "" -new "Get new value" -expectpart "$($snmpget $OID1)" 0 "$OID1 = INTEGER: 999" +new "Get $NAME again" +expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: 999" -new "Test SNMP get string for default value" -expectpart "$($snmpget $OID3)" 0 "$OID3 = STRING: So long, and thanks for all the fish!." +NAME=netSnmpExampleString +OID=$OID3 +VALUE="foo bar" +TYPE=STRING # SnmpAdminString -new "Set new string value to OID3" -expectpart "$($snmpset $OID3 s foobar)" 0 "$OID3 = STRING: foobar" +new "Get $NAME default" +expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: So long, and thanks for all the fish!." -new "Get new value" -expectpart "$($snmpget $OID3)" 0 "$OID3 = STRING: foobar" +new "Set $NAME $VALUE" +expectpart "$($snmpset $OID s "$VALUE")" 0 "$OID = $TYPE: $VALUE" + +new "Get $NAME $VALUE" +expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" NAME=ifTableLastChange OID=$OID4 @@ -165,7 +175,7 @@ expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" NAME=ifType OID=$OID5 VALUE=48 # modem(48) -TYPE=INTEGER # enum IANAifType modem(48) +TYPE=INTEGER # IANAifType /enum new "Set $NAME $VALUE" expectpart "$($snmpset $OID i $VALUE)" 0 "$OID = $TYPE: $VALUE" @@ -198,7 +208,7 @@ expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" NAME=ifInOctets OID=$OID8 VALUE=123456 -TYPE=Gauge32 +TYPE=Gauge32 # Counter32 new "Set $NAME $VALUE" expectpart "$($snmpset $OID u $VALUE)" 0 "$OID = $TYPE: $VALUE" @@ -206,25 +216,10 @@ expectpart "$($snmpset $OID u $VALUE)" 0 "$OID = $TYPE: $VALUE" new "Get $NAME $VALUE" expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" -if false; then # XXX i/u/c doesnt work for counter64? -NAME=ifHCInOctets -OID=$OID9 -VALUE=4294967296 -TYPE=Counter64 - -new "Set $NAME $VALUE" -echo "$snmpset $OID C $VALUE" -expectpart "$($snmpset $OID C $VALUE)" 0 "$OID = $TYPE: $VALUE" -exit -new "Get $NAME $VALUE" -expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" - -fi - NAME=ifPromiscuousMode OID=$OID10 VALUE=1 # true(1) -TYPE=INTEGER +TYPE=INTEGER # TruthValue new "Set $NAME $VALUE" expectpart "$($snmpset $OID i $VALUE)" 0 "$OID = $TYPE: $VALUE" @@ -235,7 +230,7 @@ expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" NAME=ifCounterDiscontinuityTime OID=$OID11 VALUE=1234567890 -TYPE=Gauge32 +TYPE=Gauge32 # TomeStamp new "Set $NAME $VALUE" expectpart "$($snmpset $OID u $VALUE)" 0 "$OID = $TYPE: $VALUE" @@ -246,7 +241,7 @@ expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" NAME=ifStackStatus OID=$OID12 VALUE=1 # active(1) -TYPE=INTEGER +TYPE=INTEGER # RowStatus / enum new "Set $NAME $VALUE" expectpart "$($snmpset $OID i $VALUE)" 0 "$OID = $TYPE: $VALUE"