From a0541483d45dfa6b985186ae91ae8dad0647a5e5 Mon Sep 17 00:00:00 2001 From: Kristofer Hallin Date: Fri, 27 May 2022 15:53:14 +0200 Subject: [PATCH] Initial entity tests. --- test/test_snmp_entity.sh | 361 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 361 insertions(+) create mode 100755 test/test_snmp_entity.sh diff --git a/test/test_snmp_entity.sh b/test/test_snmp_entity.sh new file mode 100755 index 00000000..4aed50ee --- /dev/null +++ b/test/test_snmp_entity.sh @@ -0,0 +1,361 @@ +#!/usr/bin/env bash +# SNMP "smoketest" Basic snmpget test for a scalar + +# Magic line must be first in script (see README.md) +s="$_" ; . ./lib.sh || if [ "$s" = $0 ]; then exit 0; else return 0; fi + +# Re-use main example backend state callbacks +APPNAME=example + +if [ ${ENABLE_NETSNMP} != "yes" ]; then + echo "Skipping test, Net-SNMP support not enabled." + if [ "$s" = $0 ]; then exit 0; else return 0; fi +fi + +snmpd=$(type -p snmpd) +snmpget="$(type -p snmpget) -On -c public -v2c localhost " +snmpgetnext="$(type -p snmpgetnext) -On -c public -v2c localhost " + +cfg=$dir/conf_startup.xml +fyang=$dir/clixon-example.yang +fstate=$dir/state.xml + +# AgentX unix socket +SOCK=/var/run/snmp.sock + +# Relies on example_backend.so for $fstate file handling + +cat < $cfg + + $cfg + ${YANG_INSTALLDIR} + ${YANG_STANDARD_DIR} + ${MIB_GENERATED_YANG_DIR} + $fyang + $dir/$APPNAME.sock + /usr/local/lib/$APPNAME/backend + /var/tmp/$APPNAME.pidfile + $dir + unix:$SOCK + ENTITY-MIB + +EOF + +cat < $fyang +module clixon-example{ + yang-version 1.1; + namespace "urn:example:clixon"; + prefix ex; + import ENTITY-MIB { + prefix "entity-mib"; + } +} +EOF + +# This is state data written to file that backend reads from (on request) +# integer and string have values, sleeper does not and uses default (=1) + +cat < $fstate + + + + 1 + Entity 1 + + 9 + + 123 + ABCD1234 + REV 099 + REV 123 + Clixon Version XXX.YYY year ZZZ + 1234-1234-ABCD-ABCD + Olof Hagsand Datakonsult AB + Model AA.BB + Alias 123 + Asset 123 + true + + + + + + 2 + Entity 2 + + 4 + + 999 + XXZZ11994 + REV 100 + REV 234 + Clixon Version XXX.YYY year ZZZ + 2345-2345-ABCD-ABCD + Olof Hagsand Datakonsult AB + Model CC.DD + Alias 456 + Asset 465 + false + + + + + + + +EOF + +function testinit(){ + new "test params: -f $cfg -- -sS $fstate" + if [ $BE -ne 0 ]; then + # Kill old backend and start a new one + new "kill old backend" + sudo clixon_backend -zf $cfg + if [ $? -ne 0 ]; then + err "Failed to start backend" + fi + + sudo pkill -f clixon_backend + + new "Starting backend" + start_backend -s init -f $cfg -- -sS $fstate + fi + + new "wait backend" + wait_backend + + if [ $CS -ne 0 ]; then + # Kill old clixon_snmp, if any + new "Terminating any old clixon_snmp processes" + sudo killall -q clixon_snmp + + new "Starting clixon_snmp" + start_snmp $cfg & + fi + + new "wait snmp" + wait_snmp +} + +function testexit(){ + stop_snmp +} + +ENTITY_OID=".1.3.6.1.2.1.47.1.1.1" + +OID_INDEX_1="${ENTITY_OID}.1.1.1" +OID_INDEX_2="${ENTITY_OID}.1.1.2" + +OID_DESCR_1="${ENTITY_OID}.1.2.1" +OID_DESCR_2="${ENTITY_OID}.1.2.2" + +OID_CONTAINED_1="${ENTITY_OID}.1.4.1" +OID_CONTAINED_2="${ENTITY_OID}.1.4.2" + +OID_PARENT_1="${ENTITY_OID}.1.6.1" +OID_PARENT_2="${ENTITY_OID}.1.6.2" + +OID_NAME_1="${ENTITY_OID}.1.7.1" +OID_NAME_2="${ENTITY_OID}.1.7.1" + +OID_HWREV_1="${ENTITY_OID}.1.8.1" +OID_HWREV_2="${ENTITY_OID}.1.8.2" + +OID_FWREV_1="${ENTITY_OID}.1.9.1" +OID_FWREV_2="${ENTITY_OID}.1.9.2" + +OID_SWREV_1="${ENTITY_OID}.1.10.1" +OID_SWREV_2="${ENTITY_OID}.1.10.2" + +OID_SERIAL_1="${ENTITY_OID}.1.11.1" +OID_SERIAL_2="${ENTITY_OID}.1.11.2" + +OID_MFGNAME_1="${ENTITY_OID}.1.12.1" +OID_MFGNAME_2="${ENTITY_OID}.1.12.2" + +OID_MODEL_1="${ENTITY_OID}.1.13.1" +OID_MODEL_2="${ENTITY_OID}.1.13.2" + +OID_ALIAS_1="${ENTITY_OID}.1.14.1" +OID_ALIAS_2="${ENTITY_OID}.1.14.2" + +OID_ASSET_1="${ENTITY_OID}.1.15.1" +OID_ASSET_2="${ENTITY_OID}.1.15.2" + +OID_FRU_1="${ENTITY_OID}.1.16.1" +OID_FRU_2="${ENTITY_OID}.1.16.2" + +new "SNMP system tests" +testinit + +new "Get index, $OID_INDEX_1" +expectpart "$($snmpget $OID_INDEX_1)" 0 "$OID_INDEX_1 = INTEGER: 1" + +new "Get next $OID_INDEX_1" +expectpart "$($snmpgetnext $OID_INDEX_1)" 0 "$OID_INDEX_2 = INTEGER: 2" + +new "Get index, $OID_INDEX_2" +expectpart "$($snmpget $OID_INDEX_2)" 0 "$OID_INDEX_2 = INTEGER: 2" + +# XXX: Why do we get a hex string? +# new "Get next $OID_INDEX_2" +# expectpart "$($snmpgetnext $OID_INDEX_2)" 0 "$OID_DESCR_1 = STRING: Entity 1" + +# new "Get index, $OID_DESCR_1" +# expectpart "$($snmpget $OID_DESCR_1)" 0 "$OID_DESCR_1 = STRING: Entity 1." + +# new "Get next $OID_DESCR_1" +# expectpart "$($snmpgetnext $OID_DESCR_1)" 0 "$OID_DESCR_2 = STRING: Entity 2" + +# new "Get index, $OID_DESCR_2" +# expectpart "$($snmpget $OID_DESCR_2)" 0 "$OID_DESCR_2 = STRING: Entity 2." + +new "Get next $OID_DESCR_2" +expectpart "$($snmpgetnext $OID_DESCR_2)" 0 "$OID_CONTAINER_1 = INTEGER: 9" + +new "Get container, $OID_CONTAINED_1" +expectpart "$($snmpget $OID_CONTAINED_1)" 0 "$OID_CONTAINED_1 = INTEGER: 9" + +new "Get next container, $OID_CONTAINED_1" +expectpart "$($snmpgetnext $OID_CONTAINED_1)" 0 "$OID_CONTAINED_2 = INTEGER: 4" + +new "Get container, $OID_CONTAINED_2" +expectpart "$($snmpget $OID_CONTAINED_2)" 0 "$OID_CONTAINED_2 = INTEGER: 4" + +new "Get next container, $OID_CONTAINED_2" +expectpart "$($snmpgetnext $OID_CONTAINED_2)" 0 "$OID_PARENT_1 = INTEGER: 123" + +new "Get container, $OID_PARENT_1" +expectpart "$($snmpget $OID_PARENT_1)" 0 "$OID_PARENT_1 = INTEGER: 123" + +new "Get next container, $OID_PARENT_1" +expectpart "$($snmpgetnext $OID_PARENT_1)" 0 "$OID_PARENT_2 = INTEGER: 999" + +new "Get container, $OID_PARENT_2" +expectpart "$($snmpget $OID_PARENT_2)" 0 "$OID_PARENT_2 = INTEGER: 999" + +# new "Get next container, $OID_PARENT_2" +# expectpart "$($snmpgetnext $OID_PARENT_2)" 0 "$OID_NAME_1 = STRING: ABCD1234" + +# new "Get name, $OID_NAME_1" +# expectpart "$($snmpgetnext $OID_NAME_1)" 0 "$OID_NAME_1 = STRING: ABCD1234" + +# new "Get next container, $OID_NAME_1" +# expectpart "$($snmpgetnext $OID_NAME_1)" 0 "$OID_NAME_2 = STRING: XXZZ11994" + +# new "Get name, $OID_NAME_2" +# expectpart "$($snmpget $OID_NAME_2)" 0 "$OID_NAME_2 = STRING: XXZZ11994" + +# new "Get next, $OID_NAME_2" +# expectpart "$($snmpgetnext $OID_NAME_2)" 0 "$OID_NAME_2 = STRING: REV 099" + +# new "Get rev, $OID_HWREV_1" +# expectpart "$($snmpget $OID_HWREV_1)" 0 "$OID_HWREV_1 = STRING: REV 099" + +# new "Get next rev, $OID_HWREV_1" +# expectpart "$($snmpgetnext $OID_HWREV_1)" 0 "$OID_HWREV_2 = STRING: REV 100" + +# new "Get rev, $OID_HWREV_2" +# expectpart "$($snmpget $OID_HWREV_2)" 0 "$OID_HWREV_2 = STRING: REV 100" + +# new "Get next rev, $OID_HWREV_2" +# expectpart "$($snmpgetnext $OID_HWREV_2)" 0 "$OID_FWREV_1 = STRING: REV 123" + +# new "Get rev, $OID_FWREV_1" +# expectpart "$($snmpget $OID_FWREV_1)" 0 "$OID_FWREV_1 = STRING: REV 123" + +# new "Get next rev, $OID_FWREV_1" +# expectpart "$($snmpgetnext $OID_FWREV_1)" 0 "$OID_FWREV_2 = STRING: REV 234" + +# new "Get rev, $OID_FWREV_2" +# expectpart "$($snmpget $OID_FWREV_2)" 0 "$OID_FWREV_2 = STRING: REV 234" + +# new "Get next rev, $OID_FWREV_2" +# expectpart "$($snmpgetnext $OID_FWREV_2)" 0 "$OID_SWREV_1 = STRING: Clixon Version XXX.YYY year ZZZ" + +# new "Get rev, $OID_SWREV_1" +# expectpart "$($snmpget $OID_SWREV_1)" 0 "$OID_SWREV_1 = STRING: Clixon Version XXX.YYY year ZZZ" + +# new "Get next rev, $OID_SWREV_1" +# expectpart "$($snmpgetnext $OID_SWREV_1)" 0 "$OID_SWREV_2 = STRING: Clixon Version XXX.YYY year ZZZ" + +# new "Get rev, $OID_SWREV_2" +# expectpart "$($snmpget $OID_SWREV_2)" 0 "$OID_SWREV_2 = STRING: Clixon Version XXX.YYY year ZZZ" + +# new "Get next rev, $OID_SWREV_2" +# expectpart "$($snmpgetnext $OID_SWREV_2)" 0 "$OID_SERIAL_2 = STRING: 1234-1234-ABCD-ABCD" + +# new "Get serial, $OID_SERIAL_1" +# expectpart "$($snmpget $OID_SERIAL_1)" 0 "$OID_SERIAL_1 = STRING: 1234-1234-ABCD-ABCD" + +# new "Get next serial, $OID_SERIAL_1" +# expectpart "$($snmpgetnext $OID_SERIAL_1)" 0 "$OID_SERIAL_2 = STRING: 2345-2345-ABCD-ABCD" + +# new "Get serial, $OID_SERIAL_2" +# expectpart "$($snmpget $OID_SERIAL_2)" 0 "$OID_SERIAL_2 = STRING: 2345-2345-ABCD-ABCD" + +# new "Get next serial, $OID_SERIAL_2" +# expectpart "$($snmpgetnext $OID_SERIAL_2)" 0 "$OID_MFGNAME_1 = STRING: Olof Hagsand Datakonsult AB" + +# new "Get manufacturer, $OID_MFGNAME_1" +# expectpart "$($snmpget $OID_MFGNAME_1)" 0 "$OID_MFGNAME_1 = STRING: Olof Hagsand Datakonsult AB" + +# new "Get next manufacturer, $OID_MFGNAME_1" +# expectpart "$($snmpgetnext $OID_MFGNAME_1)" 0 "$OID_MFGNAME_2 = STRING: Olof Hagsand Datakonsult AB" + +# new "Get manufacturer, $OID_MFGNAME_2" +# expectpart "$($snmpget $OID_MFGNAME_2)" 0 "$OID_MFGNAME_2 = STRING: Olof Hagsand Datakonsult AB" + +# new "Get next manufacturer, $OID_MFGNAME_2" +# expectpart "$($snmpgetnext $OID_MFGNAME_2)" 0 "$OID_MODEL_1 = STRING: Model AA.BB" + +# new "Get model, $OID_MODEL_1" +# expectpart "$($snmpget $OID_MODEL_1)" 0 "$OID_MODEL_1 = STRING: Model AA.BB" + +# new "Get next model, $OID_MODEL_1" +# expectpart "$($snmpgetnext $OID_MODEL_1)" 0 "$OID_MODEL_2 = STRING: Model CC.DD" + +# new "Get model, $OID_MODEL_2" +# expectpart "$($snmpget $OID_MODEL_2)" 0 "$OID_MODEL_2 = STRING: Model CC.DD" + +# new "Get next model, $OID_MODEL_2" +# expectpart "$($snmpgetnext $OID_MODEL_2)" 0 "$OID_ALIAS_1 = STRING: Alias 123" + +# new "Get alias, $OID_ALIAS_1" +# expectpart "$($snmpget $OID_ALIAS_1)" 0 "$OID_ALIAS_1 = STRING: Alias 123" + +# new "Get next alias, $OID_ALIAS_1" +# expectpart "$($snmpgetnext $OID_ALIAS_1)" 0 "$OID_ALIAS_2 = STRING: Alias 456" + +# new "Get alias, $OID_ALIAS_2" +# expectpart "$($snmpgetnext $OID_ALIAS_2)" 0 "$OID_ALIAS_2 = STRING: Alias 456" + +# new "Get next alias, $OID_ALIAS_2" +# expectpart "$($snmpgetnext $OID_ALIAS_2)" 0 "$OID_ASSET_1 = STRING: Asset 123" + +# new "Get asset, $OID_ASSET_1" +# expectpart "$($snmpget $OID_ASSET_1)" 0 "$OID_ASSET_1 = STRING: ASSET 123" + +# new "Get next asset, $OID_ASSET_1" +# expectpart "$($snmpgetnext $OID_ASSET_1)" 0 "$OID_ASSET_2 = STRING: Asset 456" + +# new "Get asset, $OID_ASSET_2" +# expectpart "$($snmpget $OID_ASSET_2)" 0 "$OID_ASSET_2 = STRING: ASSET 456" + +new "Get next asset, $OID_ASSET_2" +expectpart "$($snmpgetnext $OID_ASSET_2)" 0 "$OID_FRU_1 = INTEGER: 1" + +new "Get fru, $OID_FRU_1" +expectpart "$($snmpget $OID_FRU_1)" 0 "$OID_FRU_1 = INTEGER: 1" + +new "Get next fru, $OID_FRU_1" +expectpart "$($snmpgetnext $OID_FRU_1)" 0 "$OID_FRU_2 = INTEGER: 0" + +new "Get fru, $OID_FRU_2" +expectpart "$($snmpget $OID_FRU_2)" 0 "$OID_FRU_12= INTEGER: 0" + +new "Cleaning up" +testexit + +new "endtest" +endtest