X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fcfm.at;h=a3c44a15843d3a6ae873101020b8b08347f6d00f;hb=003ce655b7116d18c86a74c50391e54990346931;hp=9e351d06e9c01c4e09ef188737c705c42e51ccb3;hpb=76c4290d8adceeec8ee4ffebd5742b5c1f6a1dec;p=sliver-openvswitch.git diff --git a/tests/cfm.at b/tests/cfm.at index 9e351d06e..a3c44a158 100644 --- a/tests/cfm.at +++ b/tests/cfm.at @@ -21,6 +21,44 @@ $3 ]) ]) +m4_define([CFM_CHECK_DB], [ +CFM_VSCTL_LIST_IFACE([$1], [cfm_fault_status], [cfm_fault_status : [[$2]]]) +CFM_VSCTL_LIST_IFACE([$1], [cfm_flap_count], [cfm_flap_count : $3]) +CFM_VSCTL_LIST_IFACE([$1], [cfm_health], [cfm_health : [[$4]]]) +CFM_VSCTL_LIST_IFACE([$1], [cfm_remote_mpids], [cfm_remote_mpids : [[$5]]]) +CFM_VSCTL_LIST_IFACE([$1], [cfm_remote_opstate], [cfm_remote_opstate : $6]) +]) + +# This test checks the update of cfm status to OVSDB at startup. +# The cfm status should be updated to OVSDB within 3.5 * cfm_interval. +AT_SETUP([cfm - check update ovsdb]) +#Create 2 bridges connected by patch ports and enable cfm +OVS_VSWITCHD_START([add-br br1 -- \ + set bridge br1 datapath-type=dummy \ + other-config:hwaddr=aa:55:aa:56:00:00 -- \ + add-port br1 p1 -- set Interface p1 type=patch \ + options:peer=p0 -- \ + add-port br0 p0 -- set Interface p0 type=patch \ + options:peer=p1 -- \ + set Interface p0 other_config:cfm_interval=300 other_config:cfm_extended=true -- \ + set Interface p1 other_config:cfm_interval=300 other_config:cfm_extended=true]) + +ovs-appctl time/stop + +AT_CHECK([ovs-vsctl set Interface p0 cfm_mpid=1]) +# check cfm status update in OVSDB. +for i in `seq 0 14`; do ovs-appctl time/warp 100; done +CFM_CHECK_DB([p0], [recv], [1], [], [], [up]) + +# turn cfm on p1 off, should increment the cfm_flap_count on p0. +AT_CHECK([ovs-vsctl set interface p1 cfm_mpid=2]) +for i in `seq 0 14`; do ovs-appctl time/warp 100; done +CFM_CHECK_DB([p0], [], [2], [], [2], [up]) +CFM_CHECK_DB([p1], [], [0], [], [1], [up]) + +OVS_VSWITCHD_STOP +AT_CLEANUP + # test cfm under demand mode. AT_SETUP([cfm - demand mode]) #Create 2 bridges connected by patch ports and enable cfm @@ -83,17 +121,54 @@ for i in `seq 0 100`; do ovs-appctl time/warp 100; done CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [100ms], [2], [up]) CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [100ms], [1], [up]) -# turn cfm on p1 off, should increment the cfm_flap_count on p1. +# turn cfm on p1 off, should increment the cfm_flap_count on p0. AT_CHECK([ovs-vsctl remove interface p1 cfm_mpid 2]) for i in `seq 0 10`; do ovs-appctl time/warp 100; done CFM_VSCTL_LIST_IFACE([p0], [cfm_flap_count], [cfm_flap_count : 1]) CFM_VSCTL_LIST_IFACE([p1], [cfm_flap_count], [cfm_flap_count : [[]]]) -# turn cfm on p1 on again, should increment the cfm_flap_count on p1. +# turn cfm on p1 on again, should increment the cfm_flap_count on p0. AT_CHECK([ovs-vsctl set interface p1 cfm_mpid=2]) for i in `seq 0 10`; do ovs-appctl time/warp 100; done CFM_VSCTL_LIST_IFACE([p0], [cfm_flap_count], [cfm_flap_count : 2]) -CFM_VSCTL_LIST_IFACE([p1], [cfm_flap_count], [cfm_flap_count : 0]) + +OVS_VSWITCHD_STOP +AT_CLEANUP + +AT_SETUP([cfm - fault_override]) +OVS_VSWITCHD_START([add-br br1 -- \ + set bridge br1 datapath-type=dummy \ + other-config:hwaddr=aa:55:aa:56:00:00 -- \ + add-port br1 p1 -- set Interface p1 type=patch \ + options:peer=p0 -- \ + add-port br0 p0 -- set Interface p0 type=patch \ + options:peer=p1 -- \ + set Interface p0 cfm_mpid=1 other_config:cfm_interval=100 other_config:cfm_extended=true -- \ + set Interface p1 cfm_mpid=2 other_config:cfm_interval=100 other_config:cfm_extended=true]) + +ovs-appctl time/stop +# wait for a while to stablize cfm. +for i in `seq 0 100`; do ovs-appctl time/warp 100; done +CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [100ms], [2], [up]) +CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [100ms], [1], [up]) +AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override'], [1], [ignore]) +CFM_VSCTL_LIST_IFACE([p1], [cfm_fault_status], [cfm_fault_status : [[]]]) + +# set a fault and see that this is shown in the CFM module and the database +AT_CHECK([ovs-appctl cfm/set-fault p1 true], [0], [OK +]) +AT_CHECK([ovs-appctl time/warp 100], [0], [ignore]) +AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override' | sed -e 's/MPID [[0-9]]*: extended //'], [0], [dnl +fault_override +]) +CFM_VSCTL_LIST_IFACE([p1], [cfm_fault_status], [cfm_fault_status : [[override]]]) + +# reset and see that it returned to normal +AT_CHECK([ovs-appctl cfm/set-fault normal], [0], [OK +]) +AT_CHECK([ovs-appctl time/warp 100], [0], [ignore]) +AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override'], [1], [ignore]) +CFM_VSCTL_LIST_IFACE([p1], [cfm_fault_status], [cfm_fault_status : [[]]]) OVS_VSWITCHD_STOP AT_CLEANUP \ No newline at end of file