]> git.proxmox.com Git - ovs.git/blame - tests/cfm.at
cfm: Define old_cfm_fault as 'enum cfm_fault_reason'.
[ovs.git] / tests / cfm.at
CommitLineData
03f209ba
AW
1AT_BANNER([cfm])
2
3m4_define([CFM_CHECK_EXTENDED], [
4AT_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 ----
7MPID $2: extended
8 average health: $3
9 opstate: $4
10 remote_opstate: $5
11 interval: $6
12Remote MPID $7
13 opstate: $8
14])
15])
16
76c4290d
AW
17m4_define([CFM_VSCTL_LIST_IFACE], [
18AT_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.
25AT_SETUP([cfm - demand mode])
76c4290d 26#Create 2 bridges connected by patch ports and enable cfm
03f209ba
AW
27OVS_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
37ovs-appctl time/stop
38# wait for a while to stablize cfm.
39for i in `seq 0 100`; do ovs-appctl time/warp 100; done
40CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [300ms], [2], [up])
41CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [300ms], [1], [up])
42
43# turn on demand mode on one end.
44AT_CHECK([ovs-vsctl set interface p0 other_config:cfm_demand=true])
45
46# cfm should never go down.
47for i in `seq 0 100`
48do
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])
52done
53
54# turn on demand mode on the other end.
55AT_CHECK([ovs-vsctl set interface p1 other_config:cfm_demand=true])
56for i in `seq 0 100`
57do
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])
61done
62
63OVS_VSWITCHD_STOP
64AT_CLEANUP
76c4290d
AW
65
66# test cfm_flap_count.
67AT_SETUP([cfm - flap_count])
68#Create 2 bridges connected by patch ports and enable cfm
69OVS_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
79ovs-appctl time/stop
80
81# wait for a while to stablize cfm.
82for i in `seq 0 100`; do ovs-appctl time/warp 100; done
83CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [100ms], [2], [up])
84CFM_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
87AT_CHECK([ovs-vsctl remove interface p1 cfm_mpid 2])
88for i in `seq 0 10`; do ovs-appctl time/warp 100; done
89CFM_VSCTL_LIST_IFACE([p0], [cfm_flap_count], [cfm_flap_count : 1])
90CFM_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
93AT_CHECK([ovs-vsctl set interface p1 cfm_mpid=2])
94for i in `seq 0 10`; do ovs-appctl time/warp 100; done
95CFM_VSCTL_LIST_IFACE([p0], [cfm_flap_count], [cfm_flap_count : 2])
76c4290d 96
45ebaaf5
JS
97OVS_VSWITCHD_STOP
98AT_CLEANUP
99
100AT_SETUP([cfm - fault_override])
101OVS_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
111ovs-appctl time/stop
112# wait for a while to stablize cfm.
113for i in `seq 0 100`; do ovs-appctl time/warp 100; done
114CFM_CHECK_EXTENDED([p0], [1], [100], [up], [up], [100ms], [2], [up])
115CFM_CHECK_EXTENDED([p1], [2], [100], [up], [up], [100ms], [1], [up])
116AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override'], [1], [ignore])
117CFM_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
120AT_CHECK([ovs-appctl cfm/set-fault p1 true], [0], [OK
121])
122AT_CHECK([ovs-appctl time/warp 100], [0], [ignore])
123AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override' | sed -e 's/MPID [[0-9]]*: extended //'], [0], [dnl
124fault_override
125])
126CFM_VSCTL_LIST_IFACE([p1], [cfm_fault_status], [cfm_fault_status : [[override]]])
127
128# reset and see that it returned to normal
129AT_CHECK([ovs-appctl cfm/set-fault normal], [0], [OK
130])
131AT_CHECK([ovs-appctl time/warp 100], [0], [ignore])
132AT_CHECK([ovs-appctl cfm/show p1 | grep 'fault_override'], [1], [ignore])
133CFM_VSCTL_LIST_IFACE([p1], [cfm_fault_status], [cfm_fault_status : [[]]])
134
76c4290d
AW
135OVS_VSWITCHD_STOP
136AT_CLEANUP