cfm: Add ovsdb column "cfm_flap_count".
[sliver-openvswitch.git] / tests / cfm.at
1 AT_BANNER([cfm])
2
3 m4_define([CFM_CHECK_EXTENDED], [
4 AT_CHECK([ovs-appctl cfm/show $1 | sed -e '/next CCM tx:/d' | sed -e '/next fault check:/d' | sed -e  '/recv since check:/d'],[0],
5 [dnl
6 ---- $1 ----
7 MPID $2: extended
8         average health: $3
9         opstate: $4
10         remote_opstate: $5
11         interval: $6
12 Remote MPID $7
13         opstate: $8
14 ])
15 ])
16
17 m4_define([CFM_VSCTL_LIST_IFACE], [
18 AT_CHECK([ovs-vsctl list interface $1 | sed -n '/$2/p'],[0],
19 [dnl
20 $3
21 ])
22 ])
23
24 # test cfm under demand mode.
25 AT_SETUP([cfm - demand mode])
26 #Create 2 bridges connected by patch ports and enable cfm
27 OVS_VSWITCHD_START([add-br br1 -- \
28                     set bridge br1 datapath-type=dummy \
29                     other-config:hwaddr=aa:55:aa:56:00:00 -- \
30                     add-port br1 p1 -- set Interface p1 type=patch \
31                     options:peer=p0 -- \
32                     add-port br0 p0 -- set Interface p0 type=patch \
33                     options:peer=p1 -- \
34                     set Interface p0 cfm_mpid=1 other_config:cfm_interval=300 other_config:cfm_extended=true -- \
35                     set Interface p1 cfm_mpid=2 other_config:cfm_interval=300 other_config:cfm_extended=true ])
36
37 ovs-appctl time/stop
38 # wait for a while to stablize cfm.
39 for i in `seq 0 100`; do ovs-appctl time/warp 100; done
40 CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [300ms], [2], [up])
41 CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [300ms], [1], [up])
42
43 # turn on demand mode on one end.
44 AT_CHECK([ovs-vsctl set interface p0 other_config:cfm_demand=true])
45
46 # cfm should never go down.
47 for i in `seq 0 100`
48 do
49     ovs-appctl time/warp 100
50     CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [300ms], [2], [up])
51     CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [300ms], [1], [up])
52 done
53
54 # turn on demand mode on the other end.
55 AT_CHECK([ovs-vsctl set interface p1 other_config:cfm_demand=true])
56 for i in `seq 0 100`
57 do
58     ovs-appctl time/warp 100
59     CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [300ms], [2], [up])
60     CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [300ms], [1], [up])
61 done
62
63 OVS_VSWITCHD_STOP
64 AT_CLEANUP
65
66 # test cfm_flap_count.
67 AT_SETUP([cfm - flap_count])
68 #Create 2 bridges connected by patch ports and enable cfm
69 OVS_VSWITCHD_START([add-br br1 -- \
70                     set bridge br1 datapath-type=dummy \
71                     other-config:hwaddr=aa:55:aa:56:00:00 -- \
72                     add-port br1 p1 -- set Interface p1 type=patch \
73                     options:peer=p0 -- \
74                     add-port br0 p0 -- set Interface p0 type=patch \
75                     options:peer=p1 -- \
76                     set Interface p0 cfm_mpid=1 other_config:cfm_interval=100 other_config:cfm_extended=true -- \
77                     set Interface p1 cfm_mpid=2 other_config:cfm_interval=100 other_config:cfm_extended=true])
78
79 ovs-appctl time/stop
80
81 # wait for a while to stablize cfm.
82 for i in `seq 0 100`; do ovs-appctl time/warp 100; done
83 CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [100ms], [2], [up])
84 CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [100ms], [1], [up])
85
86 # turn cfm on p1 off, should increment the cfm_flap_count on p1.
87 AT_CHECK([ovs-vsctl remove interface p1 cfm_mpid 2])
88 for i in `seq 0 10`; do ovs-appctl time/warp 100; done
89 CFM_VSCTL_LIST_IFACE([p0], [cfm_flap_count], [cfm_flap_count      : 1])
90 CFM_VSCTL_LIST_IFACE([p1], [cfm_flap_count], [cfm_flap_count      : [[]]])
91
92 # turn cfm on p1 on again, should increment the cfm_flap_count on p1.
93 AT_CHECK([ovs-vsctl set interface p1 cfm_mpid=2])
94 for i in `seq 0 10`; do ovs-appctl time/warp 100; done
95 CFM_VSCTL_LIST_IFACE([p0], [cfm_flap_count], [cfm_flap_count      : 2])
96 CFM_VSCTL_LIST_IFACE([p1], [cfm_flap_count], [cfm_flap_count      : 0])
97
98 OVS_VSWITCHD_STOP
99 AT_CLEANUP