ovs-brcompatd: Simplify code in brc_recv_update().
[openvswitch] / tests / multipath.at
1 AT_BANNER([multipath link selection])
2
3 # The test-multipath program prints a lot of output on stdout, but each of the
4 # tests below ignores it because it will vary a bit depending on endianness and
5 # floating point precision.  test-multipath will output an error message on
6 # stderr and return with exit code 1 if anything really goes wrong.  In each
7 # case, we list the (approximate) expected output in a comment to aid debugging
8 # if the test does fail.
9
10 AT_SETUP([modulo_n multipath link selection])
11 AT_CHECK([[test-multipath 'eth_src,50,modulo_n,1,0,NXM_NX_REG0[]']],
12   [0], [ignore])
13 # 1 ->  2: disruption=0.50 (perfect=0.50); stddev/expected=0.0000
14 # 2 ->  3: disruption=0.66 (perfect=0.33); stddev/expected=0.0023
15 # 3 ->  4: disruption=0.75 (perfect=0.25); stddev/expected=0.0061
16 # 4 ->  5: disruption=0.80 (perfect=0.20); stddev/expected=0.0082
17 # 5 ->  6: disruption=0.83 (perfect=0.17); stddev/expected=0.0083
18 # 6 ->  7: disruption=0.86 (perfect=0.14); stddev/expected=0.0061
19 # 7 ->  8: disruption=0.88 (perfect=0.12); stddev/expected=0.0103
20 # 8 ->  9: disruption=0.89 (perfect=0.11); stddev/expected=0.0129
21 # 9 -> 10: disruption=0.90 (perfect=0.10); stddev/expected=0.0091
22 #10 -> 11: disruption=0.91 (perfect=0.09); stddev/expected=0.0114
23 #11 -> 12: disruption=0.91 (perfect=0.08); stddev/expected=0.0073
24 #12 -> 13: disruption=0.92 (perfect=0.08); stddev/expected=0.0165
25 #13 -> 14: disruption=0.93 (perfect=0.07); stddev/expected=0.0149
26 #14 -> 15: disruption=0.93 (perfect=0.07); stddev/expected=0.0127
27 #15 -> 16: disruption=0.94 (perfect=0.06); stddev/expected=0.0142
28 #16 -> 17: disruption=0.94 (perfect=0.06); stddev/expected=0.0098
29 #17 -> 18: disruption=0.94 (perfect=0.06); stddev/expected=0.0159
30 #18 -> 19: disruption=0.95 (perfect=0.05); stddev/expected=0.0121
31 #19 -> 20: disruption=0.95 (perfect=0.05); stddev/expected=0.0195
32 #20 -> 21: disruption=0.95 (perfect=0.05); stddev/expected=0.0120
33 #21 -> 22: disruption=0.95 (perfect=0.05); stddev/expected=0.0181
34 #22 -> 23: disruption=0.96 (perfect=0.04); stddev/expected=0.0222
35 #23 -> 24: disruption=0.96 (perfect=0.04); stddev/expected=0.0164
36 #24 -> 25: disruption=0.96 (perfect=0.04); stddev/expected=0.0146
37 #25 -> 26: disruption=0.96 (perfect=0.04); stddev/expected=0.0175
38 #26 -> 27: disruption=0.96 (perfect=0.04); stddev/expected=0.0231
39 #27 -> 28: disruption=0.96 (perfect=0.04); stddev/expected=0.0172
40 #28 -> 29: disruption=0.97 (perfect=0.03); stddev/expected=0.0211
41 #29 -> 30: disruption=0.97 (perfect=0.03); stddev/expected=0.0213
42 #30 -> 31: disruption=0.97 (perfect=0.03); stddev/expected=0.0253
43 #31 -> 32: disruption=0.97 (perfect=0.03); stddev/expected=0.0208
44 #32 -> 33: disruption=0.97 (perfect=0.03); stddev/expected=0.0223
45 #33 -> 34: disruption=0.97 (perfect=0.03); stddev/expected=0.0215
46 #34 -> 35: disruption=0.97 (perfect=0.03); stddev/expected=0.0201
47 #35 -> 36: disruption=0.97 (perfect=0.03); stddev/expected=0.0220
48 #36 -> 37: disruption=0.97 (perfect=0.03); stddev/expected=0.0221
49 #37 -> 38: disruption=0.97 (perfect=0.03); stddev/expected=0.0201
50 #38 -> 39: disruption=0.97 (perfect=0.03); stddev/expected=0.0215
51 #39 -> 40: disruption=0.97 (perfect=0.03); stddev/expected=0.0271
52 #40 -> 41: disruption=0.98 (perfect=0.02); stddev/expected=0.0272
53 #41 -> 42: disruption=0.98 (perfect=0.02); stddev/expected=0.0208
54 #42 -> 43: disruption=0.98 (perfect=0.02); stddev/expected=0.0226
55 #43 -> 44: disruption=0.98 (perfect=0.02); stddev/expected=0.0264
56 #44 -> 45: disruption=0.98 (perfect=0.02); stddev/expected=0.0233
57 #45 -> 46: disruption=0.98 (perfect=0.02); stddev/expected=0.0285
58 #46 -> 47: disruption=0.98 (perfect=0.02); stddev/expected=0.0246
59 #47 -> 48: disruption=0.98 (perfect=0.02); stddev/expected=0.0282
60 #48 -> 49: disruption=0.98 (perfect=0.02); stddev/expected=0.0233
61 #49 -> 50: disruption=0.98 (perfect=0.02); stddev/expected=0.0197
62 #50 -> 51: disruption=0.98 (perfect=0.02); stddev/expected=0.0317
63 #51 -> 52: disruption=0.98 (perfect=0.02); stddev/expected=0.0283
64 #52 -> 53: disruption=0.98 (perfect=0.02); stddev/expected=0.0282
65 #53 -> 54: disruption=0.98 (perfect=0.02); stddev/expected=0.0273
66 #54 -> 55: disruption=0.98 (perfect=0.02); stddev/expected=0.0283
67 #55 -> 56: disruption=0.98 (perfect=0.02); stddev/expected=0.0288
68 #56 -> 57: disruption=0.98 (perfect=0.02); stddev/expected=0.0263
69 #57 -> 58: disruption=0.98 (perfect=0.02); stddev/expected=0.0339
70 #58 -> 59: disruption=0.98 (perfect=0.02); stddev/expected=0.0262
71 #59 -> 60: disruption=0.98 (perfect=0.02); stddev/expected=0.0309
72 #60 -> 61: disruption=0.98 (perfect=0.02); stddev/expected=0.0285
73 #61 -> 62: disruption=0.98 (perfect=0.02); stddev/expected=0.0288
74 #62 -> 63: disruption=0.98 (perfect=0.02); stddev/expected=0.0298
75 #63 -> 64: disruption=0.98 (perfect=0.02); stddev/expected=0.0277
76 AT_CLEANUP
77
78 AT_SETUP([hash_threshold multipath link selection])
79 AT_CHECK([[test-multipath 'eth_src,50,hash_threshold,1,0,NXM_NX_REG0[]']],
80   [0], [ignore])
81 # 1 ->  2: disruption=0.50 (perfect=0.50); stddev/expected=0.0000
82 # 2 ->  3: disruption=0.50 (perfect=0.33); stddev/expected=0.0056
83 # 3 ->  4: disruption=0.50 (perfect=0.25); stddev/expected=0.0050
84 # 4 ->  5: disruption=0.50 (perfect=0.20); stddev/expected=0.0074
85 # 5 ->  6: disruption=0.50 (perfect=0.17); stddev/expected=0.0031
86 # 6 ->  7: disruption=0.50 (perfect=0.14); stddev/expected=0.0078
87 # 7 ->  8: disruption=0.50 (perfect=0.12); stddev/expected=0.0085
88 # 8 ->  9: disruption=0.50 (perfect=0.11); stddev/expected=0.0093
89 # 9 -> 10: disruption=0.50 (perfect=0.10); stddev/expected=0.0083
90 #10 -> 11: disruption=0.51 (perfect=0.09); stddev/expected=0.0110
91 #11 -> 12: disruption=0.50 (perfect=0.08); stddev/expected=0.0124
92 #12 -> 13: disruption=0.50 (perfect=0.08); stddev/expected=0.0143
93 #13 -> 14: disruption=0.50 (perfect=0.07); stddev/expected=0.0148
94 #14 -> 15: disruption=0.50 (perfect=0.07); stddev/expected=0.0099
95 #15 -> 16: disruption=0.50 (perfect=0.06); stddev/expected=0.0166
96 #16 -> 17: disruption=0.50 (perfect=0.06); stddev/expected=0.0099
97 #17 -> 18: disruption=0.50 (perfect=0.06); stddev/expected=0.0194
98 #18 -> 19: disruption=0.50 (perfect=0.05); stddev/expected=0.0169
99 #19 -> 20: disruption=0.50 (perfect=0.05); stddev/expected=0.0169
100 #20 -> 21: disruption=0.50 (perfect=0.05); stddev/expected=0.0185
101 #21 -> 22: disruption=0.50 (perfect=0.05); stddev/expected=0.0160
102 #22 -> 23: disruption=0.50 (perfect=0.04); stddev/expected=0.0236
103 #23 -> 24: disruption=0.50 (perfect=0.04); stddev/expected=0.0147
104 #24 -> 25: disruption=0.50 (perfect=0.04); stddev/expected=0.0195
105 #25 -> 26: disruption=0.50 (perfect=0.04); stddev/expected=0.0199
106 #26 -> 27: disruption=0.50 (perfect=0.04); stddev/expected=0.0227
107 #27 -> 28: disruption=0.50 (perfect=0.04); stddev/expected=0.0198
108 #28 -> 29: disruption=0.50 (perfect=0.03); stddev/expected=0.0216
109 #29 -> 30: disruption=0.50 (perfect=0.03); stddev/expected=0.0233
110 #30 -> 31: disruption=0.50 (perfect=0.03); stddev/expected=0.0266
111 #31 -> 32: disruption=0.51 (perfect=0.03); stddev/expected=0.0238
112 #32 -> 33: disruption=0.50 (perfect=0.03); stddev/expected=0.0194
113 #33 -> 34: disruption=0.50 (perfect=0.03); stddev/expected=0.0173
114 #34 -> 35: disruption=0.50 (perfect=0.03); stddev/expected=0.0223
115 #35 -> 36: disruption=0.50 (perfect=0.03); stddev/expected=0.0220
116 #36 -> 37: disruption=0.50 (perfect=0.03); stddev/expected=0.0237
117 #37 -> 38: disruption=0.50 (perfect=0.03); stddev/expected=0.0237
118 #38 -> 39: disruption=0.50 (perfect=0.03); stddev/expected=0.0251
119 #39 -> 40: disruption=0.50 (perfect=0.03); stddev/expected=0.0212
120 #40 -> 41: disruption=0.50 (perfect=0.02); stddev/expected=0.0267
121 #41 -> 42: disruption=0.50 (perfect=0.02); stddev/expected=0.0242
122 #42 -> 43: disruption=0.50 (perfect=0.02); stddev/expected=0.0222
123 #43 -> 44: disruption=0.50 (perfect=0.02); stddev/expected=0.0244
124 #44 -> 45: disruption=0.50 (perfect=0.02); stddev/expected=0.0231
125 #45 -> 46: disruption=0.50 (perfect=0.02); stddev/expected=0.0299
126 #46 -> 47: disruption=0.50 (perfect=0.02); stddev/expected=0.0263
127 #47 -> 48: disruption=0.50 (perfect=0.02); stddev/expected=0.0307
128 #48 -> 49: disruption=0.50 (perfect=0.02); stddev/expected=0.0253
129 #49 -> 50: disruption=0.50 (perfect=0.02); stddev/expected=0.0228
130 #50 -> 51: disruption=0.50 (perfect=0.02); stddev/expected=0.0273
131 #51 -> 52: disruption=0.50 (perfect=0.02); stddev/expected=0.0243
132 #52 -> 53: disruption=0.50 (perfect=0.02); stddev/expected=0.0268
133 #53 -> 54: disruption=0.50 (perfect=0.02); stddev/expected=0.0251
134 #54 -> 55: disruption=0.50 (perfect=0.02); stddev/expected=0.0297
135 #55 -> 56: disruption=0.50 (perfect=0.02); stddev/expected=0.0287
136 #56 -> 57: disruption=0.50 (perfect=0.02); stddev/expected=0.0299
137 #57 -> 58: disruption=0.50 (perfect=0.02); stddev/expected=0.0272
138 #58 -> 59: disruption=0.50 (perfect=0.02); stddev/expected=0.0295
139 #59 -> 60: disruption=0.50 (perfect=0.02); stddev/expected=0.0312
140 #60 -> 61: disruption=0.50 (perfect=0.02); stddev/expected=0.0361
141 #61 -> 62: disruption=0.50 (perfect=0.02); stddev/expected=0.0308
142 #62 -> 63: disruption=0.50 (perfect=0.02); stddev/expected=0.0283
143 #63 -> 64: disruption=0.50 (perfect=0.02); stddev/expected=0.0325
144 AT_CLEANUP
145
146 AT_SETUP([hrw multipath link selection])
147 AT_CHECK([[test-multipath 'eth_src,50,hrw,1,0,NXM_NX_REG0[]']],
148   [0], [ignore])
149 # 1 ->  2: disruption=0.50 (perfect=0.50); stddev/expected=0.0000
150 # 2 ->  3: disruption=0.33 (perfect=0.33); stddev/expected=0.0033
151 # 3 ->  4: disruption=0.25 (perfect=0.25); stddev/expected=0.0076
152 # 4 ->  5: disruption=0.20 (perfect=0.20); stddev/expected=0.0059
153 # 5 ->  6: disruption=0.17 (perfect=0.17); stddev/expected=0.0030
154 # 6 ->  7: disruption=0.14 (perfect=0.14); stddev/expected=0.0124
155 # 7 ->  8: disruption=0.13 (perfect=0.12); stddev/expected=0.0072
156 # 8 ->  9: disruption=0.11 (perfect=0.11); stddev/expected=0.0074
157 # 9 -> 10: disruption=0.10 (perfect=0.10); stddev/expected=0.0161
158 #10 -> 11: disruption=0.09 (perfect=0.09); stddev/expected=0.0055
159 #11 -> 12: disruption=0.08 (perfect=0.08); stddev/expected=0.0092
160 #12 -> 13: disruption=0.08 (perfect=0.08); stddev/expected=0.0134
161 #13 -> 14: disruption=0.07 (perfect=0.07); stddev/expected=0.0124
162 #14 -> 15: disruption=0.07 (perfect=0.07); stddev/expected=0.0156
163 #15 -> 16: disruption=0.06 (perfect=0.06); stddev/expected=0.0182
164 #16 -> 17: disruption=0.06 (perfect=0.06); stddev/expected=0.0150
165 #17 -> 18: disruption=0.06 (perfect=0.06); stddev/expected=0.0109
166 #18 -> 19: disruption=0.05 (perfect=0.05); stddev/expected=0.0162
167 #19 -> 20: disruption=0.05 (perfect=0.05); stddev/expected=0.0149
168 #20 -> 21: disruption=0.05 (perfect=0.05); stddev/expected=0.0148
169 #21 -> 22: disruption=0.05 (perfect=0.05); stddev/expected=0.0230
170 #22 -> 23: disruption=0.04 (perfect=0.04); stddev/expected=0.0208
171 #23 -> 24: disruption=0.04 (perfect=0.04); stddev/expected=0.0210
172 #24 -> 25: disruption=0.04 (perfect=0.04); stddev/expected=0.0228
173 #25 -> 26: disruption=0.04 (perfect=0.04); stddev/expected=0.0155
174 #26 -> 27: disruption=0.04 (perfect=0.04); stddev/expected=0.0208
175 #27 -> 28: disruption=0.04 (perfect=0.04); stddev/expected=0.0218
176 #28 -> 29: disruption=0.03 (perfect=0.03); stddev/expected=0.0193
177 #29 -> 30: disruption=0.03 (perfect=0.03); stddev/expected=0.0169
178 #30 -> 31: disruption=0.03 (perfect=0.03); stddev/expected=0.0163
179 #31 -> 32: disruption=0.03 (perfect=0.03); stddev/expected=0.0192
180 #32 -> 33: disruption=0.03 (perfect=0.03); stddev/expected=0.0212
181 #33 -> 34: disruption=0.03 (perfect=0.03); stddev/expected=0.0240
182 #34 -> 35: disruption=0.03 (perfect=0.03); stddev/expected=0.0227
183 #35 -> 36: disruption=0.03 (perfect=0.03); stddev/expected=0.0230
184 #36 -> 37: disruption=0.03 (perfect=0.03); stddev/expected=0.0183
185 #37 -> 38: disruption=0.03 (perfect=0.03); stddev/expected=0.0227
186 #38 -> 39: disruption=0.03 (perfect=0.03); stddev/expected=0.0255
187 #39 -> 40: disruption=0.03 (perfect=0.03); stddev/expected=0.0247
188 #40 -> 41: disruption=0.02 (perfect=0.02); stddev/expected=0.0228
189 #41 -> 42: disruption=0.02 (perfect=0.02); stddev/expected=0.0247
190 #42 -> 43: disruption=0.02 (perfect=0.02); stddev/expected=0.0265
191 #43 -> 44: disruption=0.02 (perfect=0.02); stddev/expected=0.0250
192 #44 -> 45: disruption=0.02 (perfect=0.02); stddev/expected=0.0258
193 #45 -> 46: disruption=0.02 (perfect=0.02); stddev/expected=0.0196
194 #46 -> 47: disruption=0.02 (perfect=0.02); stddev/expected=0.0235
195 #47 -> 48: disruption=0.02 (perfect=0.02); stddev/expected=0.0314
196 #48 -> 49: disruption=0.02 (perfect=0.02); stddev/expected=0.0293
197 #49 -> 50: disruption=0.02 (perfect=0.02); stddev/expected=0.0241
198 #50 -> 51: disruption=0.02 (perfect=0.02); stddev/expected=0.0291
199 #51 -> 52: disruption=0.02 (perfect=0.02); stddev/expected=0.0304
200 #52 -> 53: disruption=0.02 (perfect=0.02); stddev/expected=0.0307
201 #53 -> 54: disruption=0.02 (perfect=0.02); stddev/expected=0.0250
202 #54 -> 55: disruption=0.02 (perfect=0.02); stddev/expected=0.0290
203 #55 -> 56: disruption=0.02 (perfect=0.02); stddev/expected=0.0284
204 #56 -> 57: disruption=0.02 (perfect=0.02); stddev/expected=0.0272
205 #57 -> 58: disruption=0.02 (perfect=0.02); stddev/expected=0.0272
206 #58 -> 59: disruption=0.02 (perfect=0.02); stddev/expected=0.0304
207 #59 -> 60: disruption=0.02 (perfect=0.02); stddev/expected=0.0345
208 #60 -> 61: disruption=0.02 (perfect=0.02); stddev/expected=0.0251
209 #61 -> 62: disruption=0.02 (perfect=0.02); stddev/expected=0.0249
210 #62 -> 63: disruption=0.02 (perfect=0.02); stddev/expected=0.0285
211 #63 -> 64: disruption=0.02 (perfect=0.02); stddev/expected=0.0285
212 AT_CLEANUP
213
214 AT_SETUP([iter_hash multipath link selection])
215 AT_CHECK([[test-multipath 'eth_src,50,iter_hash,1,0,NXM_NX_REG0[]']],
216   [0], [ignore])
217 # 1 ->  2: disruption=0.50 (perfect=0.50); stddev/expected=0.0000
218 # 2 ->  3: disruption=0.42 (perfect=0.33); stddev/expected=0.0034
219 # 3 ->  4: disruption=0.25 (perfect=0.25); stddev/expected=0.0082
220 # 4 ->  5: disruption=0.42 (perfect=0.20); stddev/expected=0.0073
221 # 5 ->  6: disruption=0.17 (perfect=0.17); stddev/expected=0.0040
222 # 6 ->  7: disruption=0.14 (perfect=0.14); stddev/expected=0.0069
223 # 7 ->  8: disruption=0.13 (perfect=0.12); stddev/expected=0.0131
224 # 8 ->  9: disruption=0.45 (perfect=0.11); stddev/expected=0.0093
225 # 9 -> 10: disruption=0.10 (perfect=0.10); stddev/expected=0.0127
226 #10 -> 11: disruption=0.09 (perfect=0.09); stddev/expected=0.0134
227 #11 -> 12: disruption=0.08 (perfect=0.08); stddev/expected=0.0101
228 #12 -> 13: disruption=0.08 (perfect=0.08); stddev/expected=0.0127
229 #13 -> 14: disruption=0.07 (perfect=0.07); stddev/expected=0.0115
230 #14 -> 15: disruption=0.07 (perfect=0.07); stddev/expected=0.0100
231 #15 -> 16: disruption=0.06 (perfect=0.06); stddev/expected=0.0111
232 #16 -> 17: disruption=0.47 (perfect=0.06); stddev/expected=0.0137
233 #17 -> 18: disruption=0.05 (perfect=0.06); stddev/expected=0.0204
234 #18 -> 19: disruption=0.05 (perfect=0.05); stddev/expected=0.0082
235 #19 -> 20: disruption=0.05 (perfect=0.05); stddev/expected=0.0124
236 #20 -> 21: disruption=0.05 (perfect=0.05); stddev/expected=0.0203
237 #21 -> 22: disruption=0.05 (perfect=0.05); stddev/expected=0.0196
238 #22 -> 23: disruption=0.04 (perfect=0.04); stddev/expected=0.0183
239 #23 -> 24: disruption=0.04 (perfect=0.04); stddev/expected=0.0212
240 #24 -> 25: disruption=0.04 (perfect=0.04); stddev/expected=0.0176
241 #25 -> 26: disruption=0.04 (perfect=0.04); stddev/expected=0.0173
242 #26 -> 27: disruption=0.04 (perfect=0.04); stddev/expected=0.0159
243 #27 -> 28: disruption=0.03 (perfect=0.04); stddev/expected=0.0168
244 #28 -> 29: disruption=0.03 (perfect=0.03); stddev/expected=0.0190
245 #29 -> 30: disruption=0.03 (perfect=0.03); stddev/expected=0.0305
246 #30 -> 31: disruption=0.03 (perfect=0.03); stddev/expected=0.0282
247 #31 -> 32: disruption=0.03 (perfect=0.03); stddev/expected=0.0255
248 #32 -> 33: disruption=0.49 (perfect=0.03); stddev/expected=0.0220
249 #33 -> 34: disruption=0.03 (perfect=0.03); stddev/expected=0.0188
250 #34 -> 35: disruption=0.03 (perfect=0.03); stddev/expected=0.0203
251 #35 -> 36: disruption=0.03 (perfect=0.03); stddev/expected=0.0207
252 #36 -> 37: disruption=0.03 (perfect=0.03); stddev/expected=0.0261
253 #37 -> 38: disruption=0.03 (perfect=0.03); stddev/expected=0.0226
254 #38 -> 39: disruption=0.03 (perfect=0.03); stddev/expected=0.0233
255 #39 -> 40: disruption=0.03 (perfect=0.03); stddev/expected=0.0161
256 #40 -> 41: disruption=0.03 (perfect=0.02); stddev/expected=0.0303
257 #41 -> 42: disruption=0.02 (perfect=0.02); stddev/expected=0.0249
258 #42 -> 43: disruption=0.02 (perfect=0.02); stddev/expected=0.0262
259 #43 -> 44: disruption=0.02 (perfect=0.02); stddev/expected=0.0260
260 #44 -> 45: disruption=0.02 (perfect=0.02); stddev/expected=0.0266
261 #45 -> 46: disruption=0.02 (perfect=0.02); stddev/expected=0.0287
262 #46 -> 47: disruption=0.02 (perfect=0.02); stddev/expected=0.0213
263 #47 -> 48: disruption=0.02 (perfect=0.02); stddev/expected=0.0301
264 #48 -> 49: disruption=0.02 (perfect=0.02); stddev/expected=0.0230
265 #49 -> 50: disruption=0.02 (perfect=0.02); stddev/expected=0.0248
266 #50 -> 51: disruption=0.02 (perfect=0.02); stddev/expected=0.0203
267 #51 -> 52: disruption=0.02 (perfect=0.02); stddev/expected=0.0235
268 #52 -> 53: disruption=0.02 (perfect=0.02); stddev/expected=0.0340
269 #53 -> 54: disruption=0.02 (perfect=0.02); stddev/expected=0.0264
270 #54 -> 55: disruption=0.02 (perfect=0.02); stddev/expected=0.0292
271 #55 -> 56: disruption=0.02 (perfect=0.02); stddev/expected=0.0246
272 #56 -> 57: disruption=0.02 (perfect=0.02); stddev/expected=0.0270
273 #57 -> 58: disruption=0.02 (perfect=0.02); stddev/expected=0.0299
274 #58 -> 59: disruption=0.02 (perfect=0.02); stddev/expected=0.0307
275 #59 -> 60: disruption=0.02 (perfect=0.02); stddev/expected=0.0275
276 #60 -> 61: disruption=0.02 (perfect=0.02); stddev/expected=0.0289
277 #61 -> 62: disruption=0.02 (perfect=0.02); stddev/expected=0.0292
278 #62 -> 63: disruption=0.02 (perfect=0.02); stddev/expected=0.0292
279 #63 -> 64: disruption=0.02 (perfect=0.02); stddev/expected=0.0307
280 AT_CLEANUP
281
282 AT_SETUP([multipath action missing argument])
283 AT_CHECK([ovs-ofctl parse-flow actions=multipath], [1], [],
284   [ovs-ofctl: : not enough arguments to multipath action
285 ])
286 AT_CLEANUP
287
288 AT_SETUP([multipath action bad fields])
289 AT_CHECK([ovs-ofctl parse-flow 'actions=multipath(xyzzy,50,modulo_n,1,0,NXM_NX_REG0[[]])'], [1], [],
290   [ovs-ofctl: xyzzy,50,modulo_n,1,0,NXM_NX_REG0[[]]: unknown fields `xyzzy'
291 ])
292 AT_CLEANUP
293
294 AT_SETUP([multipath action bad algorithm])
295 AT_CHECK([ovs-ofctl parse-flow 'actions=multipath(eth_src,50,fubar,1,0,NXM_NX_REG0[[]])'], [1], [],
296   [ovs-ofctl: eth_src,50,fubar,1,0,NXM_NX_REG0[[]]: unknown algorithm `fubar'
297 ])
298 AT_CLEANUP
299
300 AT_SETUP([multipath action bad n_links])
301 AT_CHECK([ovs-ofctl parse-flow 'actions=multipath(eth_src,50,modulo_n,0,0,NXM_NX_REG0[[]])'], [1], [],
302   [ovs-ofctl: eth_src,50,modulo_n,0,0,NXM_NX_REG0[[]]: n_links 0 is not in valid range 1 to 65536
303 ])
304 AT_CLEANUP
305
306 AT_SETUP([multipath action bad destination])
307 AT_CHECK([ovs-ofctl parse-flow 'actions=multipath(eth_src,50,modulo_n,1,0,NXM_OF_VLAN_TCI[[]])'], [1], [],
308   [ovs-ofctl: eth_src,50,modulo_n,1,0,NXM_OF_VLAN_TCI[[]]: destination field must be register
309 ])
310 AT_CLEANUP
311
312 AT_SETUP([multipath action destination too narrow])
313 AT_CHECK([ovs-ofctl parse-flow 'actions=multipath(eth_src,50,modulo_n,1024,0,NXM_NX_REG0[[0..7]])'], [1], [],
314   [ovs-ofctl: eth_src,50,modulo_n,1024,0,NXM_NX_REG0[[0..7]]: 8-bit destination field has 256 possible values, less than specified n_links 1024
315 ])
316 AT_CLEANUP
317