snmpset tests re-written.

This commit is contained in:
Kristofer Hallin 2022-06-02 16:21:59 +02:00
parent 118e198a1e
commit a33db6ef15
2 changed files with 75 additions and 119 deletions

View file

@ -216,6 +216,7 @@ fi
if $SNMPCHECK; then if $SNMPCHECK; then
snmpget="$(type -p snmpget) -On -c public -v2c localhost " snmpget="$(type -p snmpget) -On -c public -v2c localhost "
snmpset="$(type -p snmpset) -On -c public -v2c localhost "
snmpgetstr="$(type -p snmpget) -c public -v2c localhost " snmpgetstr="$(type -p snmpget) -c public -v2c localhost "
snmpgetnext="$(type -p snmpgetnext) -On -c public -v2c localhost " snmpgetnext="$(type -p snmpgetnext) -On -c public -v2c localhost "
snmpgetnextstr="$(type -p snmpgetnext) -c public -v2c localhost " snmpgetnextstr="$(type -p snmpgetnext) -c public -v2c localhost "
@ -266,6 +267,33 @@ if $SNMPCHECK; then
expectpart "$($snmpgetnextstr $name)" 0 "$name2 = $type: $value" expectpart "$($snmpgetnextstr $name)" 0 "$name2 = $type: $value"
fi fi
} }
function validate_set(){
oid=$1
type=$2
value=$3
case $type in
"INTEGER")
set_type="i"
;;
"STRING")
set_type="s"
;;
esac
if [ $type == "INTEGER" ]; then
set_type="i"
fi
new "Setting value $value to OID $oid with type $set_type"
if [ $type == "STRING" ]; then
expectpart "$($snmpset $oid $set_type "$value")" 0 "$type: \"$value\""
else
expectpart "$($snmpset $oid $set_type "$value")" 0 "$type: $value"
fi
}
fi fi
# Check sanity between --with-restconf setting and if nginx is started by systemd or not # Check sanity between --with-restconf setting and if nginx is started by systemd or not

View file

@ -39,6 +39,32 @@ cat <<EOF > $cfg
</clixon-config> </clixon-config>
EOF EOF
cat <<EOF > $fstate
<CLIXON-TYPES-MIB xmlns="urn:ietf:params:xml:ns:yang:smiv2:CLIXON-TYPES-MIB">
<clixonExampleScalars>
<clixonExampleInteger>0x7fffffff</clixonExampleInteger>
<clixonExampleSleeper>-1</clixonExampleSleeper>
<clixonExampleString>This is not default</clixonExampleString>
</clixonExampleScalars>
<clixonIETFWGTable>
<clixonIETFWGEntry>
<nsIETFWGName>index</nsIETFWGName>
<nsIETFWGChair1>Name1</nsIETFWGChair1>
<nsIETFWGChair2>Name2</nsIETFWGChair2>
</clixonIETFWGEntry>
</clixonIETFWGTable>
<clixonHostsTable>
<clixonHostsEntry>
<clixonHostName>test</clixonHostName>
<clixonHostAddressType>ipv4</clixonHostAddressType>
<clixonHostAddress>10.20.30.40</clixonHostAddress>
<clixonHostStorage>permanent</clixonHostStorage>
<clixonHostRowStatus>active</clixonHostRowStatus>
</clixonHostsEntry>
</clixonHostsTable>
</CLIXON-TYPES-MIB>
EOF
cat <<EOF > $fyang cat <<EOF > $fyang
module clixon-example{ module clixon-example{
yang-version 1.1; yang-version 1.1;
@ -69,7 +95,7 @@ function testinit(){
sudo pkill -f clixon_backend sudo pkill -f clixon_backend
new "Starting backend" new "Starting backend"
start_backend -s init -f $cfg start_backend -s init -f $cfg -- -sS $fstate
fi fi
new "wait backend" new "wait backend"
@ -96,21 +122,11 @@ new "SNMP tests"
testinit testinit
# NET-SNMP-EXAMPLES-MIB::netSnmpExamples # NET-SNMP-EXAMPLES-MIB::netSnmpExamples
MIB=".1.3.6.1.4.1.8072.2" MIB=".1.3.6.1.4.1.8072.200"
OID1="${MIB}.1.1" # netSnmpExampleInteger OID1="${MIB}.1.1" # netSnmpExampleInteger
OID2="${MIB}.1.2" # netSnmpExampleSleeper OID2="${MIB}.1.2" # netSnmpExampleSleeper
OID3="${MIB}.1.3" # netSnmpExampleString OID3="${MIB}.1.3" # netSnmpExampleString
OID4="${MIB}.1.4" # ifTableLastChange
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 NB 64-bit not tested and seems not supported
OID10="${MIB}.1.10" # ifPromiscuousMode
OID11="${MIB}.1.11" # ifCounterDiscontinuityTime
OID12="${MIB}.1.12" # ifStackStatus
OID13="${MIB}.2.1" # netSnmpIETFWGTable
OID14="${MIB}.2.1.1" # netSnmpIETFWGEntry
OID15="${MIB}.2.1.1.1" # nsIETFWGName OID15="${MIB}.2.1.1.1" # nsIETFWGName
OID16="${MIB}.2.1.1.2" # nsIETFWGChair1 OID16="${MIB}.2.1.1.2" # nsIETFWGChair1
OID17="${MIB}.2.1.1.3" # nsIETFWGChair2 OID17="${MIB}.2.1.1.3" # nsIETFWGChair2
@ -121,124 +137,36 @@ OID21="${MIB}.2.2.1.3" # netSnmpHostAddress
OID22="${MIB}.2.2.1.4" # netSnmpHostStorage OID22="${MIB}.2.2.1.4" # netSnmpHostStorage
OID23="${MIB}.2.2.1.5" # netSnmpHostRowStatus OID23="${MIB}.2.2.1.5" # netSnmpHostRowStatus
NAME=netSnmpExampleInteger validate_set $OID1 "INTEGER" 1234
OID=$OID1 validate_oid $OID1 $OID1 "INTEGER" 1234
VALUE=1234
TYPE=INTEGER # Integer32
new "Get $NAME default" validate_set $OID2 "INTEGER" -1
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: 42" validate_oid $OID2 $OID2 "INTEGER" -1
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" new "Set new value via NETCONF"
expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "<rpc $DEFAULTNS><edit-config><default-operation>none</default-operation><target><candidate/></target><config><CLIXON-TYPES-MIB xmlns=\"urn:ietf:params:xml:ns:yang:smiv2:CLIXON-TYPES-MIB\"><netSnmpExampleScalars><$NAME>999</$NAME></netSnmpExampleScalars></CLIXON-TYPES-MIB></config></edit-config></rpc>" "" "<rpc-reply $DEFAULTNS><ok/></rpc-reply>" expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "<rpc $DEFAULTNS><edit-config><default-operation>none</default-operation><target><candidate/></target><config><CLIXON-TYPES-MIB xmlns=\"urn:ietf:params:xml:ns:yang:smiv2:CLIXON-TYPES-MIB\"><clixonExampleScalars><clixonExampleInteger>999</clixonExampleInteger></clixonExampleScalars></CLIXON-TYPES-MIB></config></edit-config></rpc>" "" "<rpc-reply $DEFAULTNS><ok/></rpc-reply>"
new "netconf commit" new "netconf commit"
expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "<rpc $DEFAULTNS><commit/></rpc>" "" "<rpc-reply $DEFAULTNS><ok/></rpc-reply>" expecteof_netconf "$clixon_netconf -qf $cfg" 0 "$DEFAULTHELLO" "<rpc $DEFAULTNS><commit/></rpc>" "" "<rpc-reply $DEFAULTNS><ok/></rpc-reply>"
new "Get $NAME again" validate_oid $OID1 $OID1 "INTEGER" 999
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: 999"
NAME=netSnmpExampleString validate_oid $OID3 $OID3 "STRING" "\"So long, and thanks for all the fish!\""
OID=$OID3 validate_set $OID3 "STRING" "foo bar"
VALUE="foo bar" validate_oid $OID3 $OID3 "STRING" "\"foo bar\""
TYPE=STRING # SnmpAdminString
new "Get $NAME default" # validate_set $OID16 "STRING" "asd"
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: So long, and thanks for all the fish!" # validate_oid $OID16 $OID16 "STRING" "asd"
new "Set $NAME $VALUE" # validate_set $OID17 "STRING" "asd"
expectpart "$($snmpset $OID s "$VALUE")" 0 "$OID = $TYPE: $VALUE" # validate_oid $OID17 $OID16 "STRING" "asdasd"
new "Get $NAME $VALUE" # validate_set $OID19 "STRING" "asd"
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE" # validate_oid $OID19 $OID19 "STRING" "asdasd"
NAME=ifTableLastChange # validate_set $OID20 "STRING" ipv6
OID=$OID4 # validate_oid $OID20 $OID20 "STRING" "asdasd"
VALUE=12345 # (12345) 0:02:03.45
TYPE=TimeTicks
new "Get $NAME"
expectpart "$($snmpget $OID)" 0 "$OID = No Such Instance currently exists at this OID"
new "Set $NAME $VALUE"
expectpart "$($snmpset $OID t $VALUE)" 0 "$OID = $TYPE: ($VALUE) 0:02:03.45"
new "Get $NAME $VALUE"
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: ($VALUE) 0:02:03.45"
NAME=ifType
OID=$OID5
VALUE=48 # modem(48)
TYPE=INTEGER # IANAifType /enum
new "Set $NAME $VALUE"
expectpart "$($snmpset $OID i $VALUE)" 0 "$OID = $TYPE: $VALUE"
new "Get $NAME $VALUE"
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE"
NAME=ifSpeed
OID=$OID6
VALUE=123123123
TYPE=Gauge32
new "Set $NAME $VALUE"
expectpart "$($snmpset $OID u $VALUE)" 0 "$OID = $TYPE: $VALUE"
new "Get $NAME $VALUE"
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE"
NAME=ifAdminStatus
OID=$OID7
VALUE=3 # testing(3)
TYPE=INTEGER
new "Set $NAME $VALUE"
expectpart "$($snmpset $OID i $VALUE)" 0 "$OID = $TYPE: $VALUE"
new "Get $NAME $VALUE"
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE"
NAME=ifPromiscuousMode
OID=$OID10
VALUE=1 # true(1)
TYPE=INTEGER # TruthValue
new "Set $NAME $VALUE"
expectpart "$($snmpset $OID i $VALUE)" 0 "$OID = $TYPE: $VALUE"
new "Get $NAME $VALUE"
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: $VALUE"
NAME=ifCounterDiscontinuityTime
OID=$OID11
VALUE=1234567890
#TYPE=Gauge32 # TimeStamp
TYPE=Timeticks
new "Set $NAME $VALUE"
echo "$snmpset $OID t $VALUE"
expectpart "$($snmpset $OID t $VALUE)" 0 "$OID = $TYPE: ($VALUE) 142 days, 21:21:18.90"
new "Get $NAME $VALUE"
expectpart "$($snmpget $OID)" 0 "$OID = $TYPE: ($VALUE) 142 days, 21:21:18.90"
NAME=ifStackStatus
OID=$OID12
VALUE=1 # active(1)
TYPE=INTEGER # RowStatus / enum
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 "Cleaning up" new "Cleaning up"
testexit testexit