#!/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 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 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 456 false 111 Entry 1 public Context name 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.2" 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" validate_oid $OID_INDEX_1 $OID_INDEX_1 "INTEGER" "1" new "Get next $OID_INDEX_1" validate_oid $OID_INDEX_1 $OID_INDEX_2 "INTEGER" "2" new "Get index, $OID_INDEX_2" validate_oid $OID_INDEX_2 $OID_INDEX_2 "INTEGER" "2" new "Get next $OID_INDEX_2" validate_oid $OID_INDEX_2 $OID_DESCR_1 "STRING" "\"Entity 1\"" new "Get index, $OID_DESCR_1" validate_oid $OID_DESCR_1 $OID_DESCR_1 "STRING" "\"Entity 1\"" new "Get next $OID_DESCR_1" validate_oid $OID_DESCR_1 $OID_DESCR_2 "STRING" "\"Entity 2\"" new "Get index, $OID_DESCR_2" validate_oid $OID_DESCR_2 $OID_DESCR_2 "STRING" "\"Entity 2\"" # new "Get next $OID_DESCR_2" # validate_oid $OID_DESCR_2 $OID_CONTAINER_1 "INTEGER" "9" # new "Get container, $OID_CONTAINED_1" # validate_oid $OID_CONTAINED_1 $OID_CONTAINED_1 "INTEGER" "9" new "Get next container, $OID_CONTAINED_1" validate_oid $OID_CONTAINED_1 $OID_CONTAINED_2 "INTEGER" "4" new "Get container, $OID_CONTAINED_2" validate_oid $OID_CONTAINED_2 $OID_CONTAINED_2 "INTEGER" "4" new "Get next container, $OID_CONTAINED_2" validate_oid $OID_CONTAINED_2 $OID_PARENT_1 "INTEGER" "123" new "Get container, $OID_PARENT_1" validate_oid $OID_PARENT_1 $OID_PARENT_1 "INTEGER" "123" new "Get next container, $OID_PARENT_1" validate_oid $OID_PARENT_1 $OID_PARENT_2 "INTEGER" "999" new "Get container, $OID_PARENT_2" validate_oid $OID_PARENT_2 $OID_PARENT_2 "INTEGER" "999" new "Get next container, $OID_PARENT_2" validate_oid $OID_PARENT_2 $OID_NAME_1 "STRING" "\"ABCD1234\"" new "Get name, $OID_NAME_1" validate_oid $OID_NAME_1 $OID_NAME_1 "STRING" "\"ABCD1234\"" new "Get next container, $OID_NAME_1" validate_oid $OID_NAME_1 $OID_NAME_2 "STRING" "\"XXZZ11994\"" new "Get name, $OID_NAME_2" validate_oid $OID_NAME_2 $OID_NAME_2 "STRING" "\"XXZZ11994\"" new "Get next, $OID_NAME_2" validate_oid $OID_NAME_2 $OID_HWREV_1 "STRING" "\"REV 099\"" new "Get rev, $OID_HWREV_1" validate_oid $OID_HWREV_1 $OID_HWREV_1 "STRING" "\"REV 099\"" new "Get next hw rev, $OID_HWREV_1" validate_oid $OID_HWREV_1 $OID_HWREV_2 "STRING" "\"REV 100\"" new "Get hw rev, $OID_HWREV_2" validate_oid $OID_HWREV_2 $OID_HWREV_2 "STRING" "\"REV 100\"" new "Get next hw rev, $OID_HWREV_2" validate_oid $OID_HWREV_2 $OID_FWREV_1 "STRING" "\"REV 123\"" new "Get fw rev, $OID_FWREV_1" validate_oid $OID_FWREV_1 $OID_FWREV_1 "STRING" "\"REV 123\"" new "Get next fw rev, $OID_FWREV_1" validate_oid $OID_FWREV_1 $OID_FWREV_2 "STRING" "\"REV 234\"" new "Get fw rev, $OID_FWREV_2" validate_oid $OID_FWREV_2 $OID_FWREV_2 "STRING" "\"REV 234\"" new "Get next fw rev, $OID_FWREV_2" validate_oid $OID_FWREV_2 $OID_SWREV_1 "STRING" "\"Clixon Version XXX.YYY year ZZZ\"" new "Get sw rev, $OID_SWREV_1" validate_oid $OID_SWREV_1 $OID_SWREV_1 "STRING" "\"Clixon Version XXX.YYY year ZZZ\"" new "Get next sw rev, $OID_SWREV_1" validate_oid $OID_SWREV_1 $OID_SWREV_2 "STRING" "\"Clixon Version XXX.YYY year ZZZ\"" new "Get sw rev, $OID_SWREV_2" validate_oid $OID_SWREV_2 $OID_SWREV_2 "STRING" "\"Clixon Version XXX.YYY year ZZZ\"" new "Get next sw rev, $OID_SWREV_2" validate_oid $OID_SWREV_2 $OID_SERIAL_1 "STRING" "\"1234-1234-ABCD-ABCD\"" new "Get serial, $OID_SERIAL_1" validate_oid $OID_SERIAL_1 $OID_SERIAL_1 "STRING" "\"1234-1234-ABCD-ABCD\"" new "Get next serial, $OID_SERIAL_1" validate_oid $OID_SERIAL_1 $OID_SERIAL_2 "STRING" "\"2345-2345-ABCD-ABCD\"" new "Get serial, $OID_SERIAL_2" validate_oid $OID_SERIAL_2 $OID_SERIAL_2 "STRING" "\"2345-2345-ABCD-ABCD\"" new "Get next serial, $OID_SERIAL_2" validate_oid $OID_SERIAL_2 $OID_MFGNAME_1 "STRING" "\"Olof Hagsand Datakonsult AB\"" new "Get manufacturer, $OID_MFGNAME_1" validate_oid $OID_MFGNAME_1 $OID_MFGNAME_1 "STRING" "\"Olof Hagsand Datakonsult AB\"" new "Get next manufacturer, $OID_MFGNAME_1" validate_oid $OID_MFGNAME_1 $OID_MFGNAME_2 "STRING" "\"Olof Hagsand Datakonsult AB\"" new "Get manufacturer, $OID_MFGNAME_2" validate_oid $OID_MFGNAME_2 $OID_MFGNAME_2 "STRING" "\"Olof Hagsand Datakonsult AB\"" new "Get next manufacturer, $OID_MFGNAME_2" validate_oid $OID_MFGNAME_2 $OID_MODEL_1 "STRING" "\"Model AA.BB\"" new "Get model, $OID_MODEL_1" validate_oid $OID_MODEL_1 $OID_MODEL_1 "STRING" "\"Model AA.BB\"" new "Get next model, $OID_MODEL_1" validate_oid $OID_MODEL_1 $OID_MODEL_2 "STRING" "\"Model CC.DD\"" new "Get model, $OID_MODEL_2" validate_oid $OID_MODEL_2 $OID_MODEL_2 "STRING" "\"Model CC.DD\"" new "Get next model, $OID_MODEL_2" validate_oid $OID_MODEL_2 $OID_ALIAS_1 "STRING" "\"Alias 123\"" new "Get alias, $OID_ALIAS_1" validate_oid $OID_ALIAS_1 $OID_ALIAS_1 "STRING" "\"Alias 123\"" new "Get next alias, $OID_ALIAS_1" validate_oid $OID_ALIAS_1 $OID_ALIAS_2 "STRING" "\"Alias 456\"" new "Get alias, $OID_ALIAS_2" validate_oid $OID_ALIAS_2 $OID_ASSET_1 "STRING" "\"Asset 123\"" new "Get next alias, $OID_ALIAS_2" validate_oid $OID_ALIAS_2 $OID_ASSET_1 "STRING" "\"Asset 123\"" new "Get asset, $OID_ASSET_1" validate_oid $OID_ASSET_1 $OID_ASSET_1 "STRING" "\"ASSET 123\"" new "Get next asset, $OID_ASSET_1" validate_oid $OID_ASSET_1 $OID_ASSET_2 "STRING" "\"Asset 456\"" new "Get asset, $OID_ASSET_2" validate_oid $OID_ASSET_2 $OID_ASSET_2 "STRING" "\"ASSET 456\"" new "Get next asset, $OID_ASSET_2" validate_oid $OID_ASSET_2 $OID_FRU_1 "INTEGER" "1" new "Get fru, $OID_FRU_1" validate_oid $OID_FRU_1 $OID_FRU_1 "INTEGER" "1" new "Get next fru, $OID_FRU_1" validate_oid $OID_FRU_1 $OID_FRU_2 "INTEGER" "0" new "Get fru 2, $OID_FRU_2" validate_oid $OID_FRU_2 $OID_FRU_2 "INTEGER" "0" new "Cleaning up" testexit new "endtest" endtest