X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fcfm.at;h=7ab4354e9d139c55a218339b8a48a8d94cc1c2bd;hb=1e827902be9194d71ea851c9ce2676f65eeed33a;hp=638e03ffb8c9727145acea7c4f4dca8258574299;hpb=2bd135b5f88b1633042fe4dc99119bfbe14bd73e;p=sliver-openvswitch.git diff --git a/tests/cfm.at b/tests/cfm.at index 638e03ffb..7ab4354e9 100644 --- a/tests/cfm.at +++ b/tests/cfm.at @@ -14,9 +14,16 @@ Remote MPID $7 ]) ]) +m4_define([CFM_VSCTL_LIST_IFACE], [ +AT_CHECK([ovs-vsctl list interface $1 | sed -n '/$2/p'],[0], +[dnl +$3 +]) +]) + # test cfm under demand mode. AT_SETUP([cfm - demand mode]) -#Create 2 bridges connected by patch ports and enable BFD +#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 -- \ @@ -55,3 +62,75 @@ done OVS_VSWITCHD_STOP AT_CLEANUP + +# test cfm_flap_count. +AT_SETUP([cfm - flap_count]) +#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 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]) + +# 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 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]) + +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