]>
Commit | Line | Data |
---|---|---|
03f209ba AW |
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 | ||
76c4290d AW |
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 | ||
03f209ba AW |
24 | # test cfm under demand mode. |
25 | AT_SETUP([cfm - demand mode]) | |
76c4290d | 26 | #Create 2 bridges connected by patch ports and enable cfm |
03f209ba AW |
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 | |
76c4290d AW |
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 | ||
881d47a9 | 86 | # turn cfm on p1 off, should increment the cfm_flap_count on p0. |
76c4290d AW |
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 | ||
881d47a9 | 92 | # turn cfm on p1 on again, should increment the cfm_flap_count on p0. |
76c4290d AW |
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]) | |
76c4290d | 96 | |
45ebaaf5 JS |
97 | OVS_VSWITCHD_STOP |
98 | AT_CLEANUP | |
99 | ||
100 | AT_SETUP([cfm - fault_override]) | |
101 | OVS_VSWITCHD_START([add-br br1 -- \ | |
102 | set bridge br1 datapath-type=dummy \ | |
103 | other-config:hwaddr=aa:55:aa:56:00:00 -- \ | |
104 | add-port br1 p1 -- set Interface p1 type=patch \ | |
105 | options:peer=p0 -- \ | |
106 | add-port br0 p0 -- set Interface p0 type=patch \ | |
107 | options:peer=p1 -- \ | |
108 | set Interface p0 cfm_mpid=1 other_config:cfm_interval=100 other_config:cfm_extended=true -- \ | |
109 | set Interface p1 cfm_mpid=2 other_config:cfm_interval=100 other_config:cfm_extended=true]) | |
110 | ||
111 | ovs-appctl time/stop | |
112 | # wait for a while to stablize cfm. | |
113 | for i in `seq 0 100`; do ovs-appctl time/warp 100; done | |
114 | CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [100ms], [2], [up]) | |
115 | CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [100ms], [1], [up]) | |
116 | AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override'], [1], [ignore]) | |
117 | CFM_VSCTL_LIST_IFACE([p1], [cfm_fault_status], [cfm_fault_status : [[]]]) | |
118 | ||
119 | # set a fault and see that this is shown in the CFM module and the database | |
120 | AT_CHECK([ovs-appctl cfm/set-fault p1 true], [0], [OK | |
121 | ]) | |
122 | AT_CHECK([ovs-appctl time/warp 100], [0], [ignore]) | |
123 | AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override' | sed -e 's/MPID [[0-9]]*: extended //'], [0], [dnl | |
124 | fault_override | |
125 | ]) | |
126 | CFM_VSCTL_LIST_IFACE([p1], [cfm_fault_status], [cfm_fault_status : [[override]]]) | |
127 | ||
128 | # reset and see that it returned to normal | |
129 | AT_CHECK([ovs-appctl cfm/set-fault normal], [0], [OK | |
130 | ]) | |
131 | AT_CHECK([ovs-appctl time/warp 100], [0], [ignore]) | |
132 | AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override'], [1], [ignore]) | |
133 | CFM_VSCTL_LIST_IFACE([p1], [cfm_fault_status], [cfm_fault_status : [[]]]) | |
134 | ||
76c4290d AW |
135 | OVS_VSWITCHD_STOP |
136 | AT_CLEANUP |