]> git.proxmox.com Git - ovs.git/blob - tests/multipath.at
meta-flow.xml: Fix typos of flow-based tunnel command examples.
[ovs.git] / 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([[ovstest 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([[ovstest 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([[ovstest 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([[ovstest 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 destination too narrow])
307 AT_CHECK([ovs-ofctl parse-flow 'actions=multipath(eth_src,50,modulo_n,1024,0,NXM_NX_REG0[[0..7]])'], [1], [],
308 [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
309 ])
310 AT_CLEANUP
311
312 AT_SETUP([modulo_n multipath symmetric_l3 link selection])
313 AT_CHECK([[ovstest test-multipath 'symmetric_l3,50,modulo_n,1,0,NXM_NX_REG0[]']],
314 [0], [ignore])
315 # 1 -> 2: disruption=0.50 (perfect=0.50); stddev/expected=0.0000
316 # 2 -> 3: disruption=0.66 (perfect=0.33); stddev/expected=0.0023
317 # 3 -> 4: disruption=0.75 (perfect=0.25); stddev/expected=0.0061
318 # 4 -> 5: disruption=0.80 (perfect=0.20); stddev/expected=0.0082
319 # 5 -> 6: disruption=0.83 (perfect=0.17); stddev/expected=0.0083
320 # 6 -> 7: disruption=0.86 (perfect=0.14); stddev/expected=0.0061
321 # 7 -> 8: disruption=0.88 (perfect=0.12); stddev/expected=0.0103
322 # 8 -> 9: disruption=0.89 (perfect=0.11); stddev/expected=0.0129
323 # 9 -> 10: disruption=0.90 (perfect=0.10); stddev/expected=0.0091
324 #10 -> 11: disruption=0.91 (perfect=0.09); stddev/expected=0.0114
325 #11 -> 12: disruption=0.91 (perfect=0.08); stddev/expected=0.0073
326 #12 -> 13: disruption=0.92 (perfect=0.08); stddev/expected=0.0165
327 #13 -> 14: disruption=0.93 (perfect=0.07); stddev/expected=0.0149
328 #14 -> 15: disruption=0.93 (perfect=0.07); stddev/expected=0.0127
329 #15 -> 16: disruption=0.94 (perfect=0.06); stddev/expected=0.0142
330 #16 -> 17: disruption=0.94 (perfect=0.06); stddev/expected=0.0098
331 #17 -> 18: disruption=0.94 (perfect=0.06); stddev/expected=0.0159
332 #18 -> 19: disruption=0.95 (perfect=0.05); stddev/expected=0.0121
333 #19 -> 20: disruption=0.95 (perfect=0.05); stddev/expected=0.0195
334 #20 -> 21: disruption=0.95 (perfect=0.05); stddev/expected=0.0120
335 #21 -> 22: disruption=0.95 (perfect=0.05); stddev/expected=0.0181
336 #22 -> 23: disruption=0.96 (perfect=0.04); stddev/expected=0.0222
337 #23 -> 24: disruption=0.96 (perfect=0.04); stddev/expected=0.0164
338 #24 -> 25: disruption=0.96 (perfect=0.04); stddev/expected=0.0146
339 #25 -> 26: disruption=0.96 (perfect=0.04); stddev/expected=0.0175
340 #26 -> 27: disruption=0.96 (perfect=0.04); stddev/expected=0.0231
341 #27 -> 28: disruption=0.96 (perfect=0.04); stddev/expected=0.0172
342 #28 -> 29: disruption=0.97 (perfect=0.03); stddev/expected=0.0211
343 #29 -> 30: disruption=0.97 (perfect=0.03); stddev/expected=0.0213
344 #30 -> 31: disruption=0.97 (perfect=0.03); stddev/expected=0.0253
345 #31 -> 32: disruption=0.97 (perfect=0.03); stddev/expected=0.0208
346 #32 -> 33: disruption=0.97 (perfect=0.03); stddev/expected=0.0223
347 #33 -> 34: disruption=0.97 (perfect=0.03); stddev/expected=0.0215
348 #34 -> 35: disruption=0.97 (perfect=0.03); stddev/expected=0.0201
349 #35 -> 36: disruption=0.97 (perfect=0.03); stddev/expected=0.0220
350 #36 -> 37: disruption=0.97 (perfect=0.03); stddev/expected=0.0221
351 #37 -> 38: disruption=0.97 (perfect=0.03); stddev/expected=0.0201
352 #38 -> 39: disruption=0.97 (perfect=0.03); stddev/expected=0.0215
353 #39 -> 40: disruption=0.97 (perfect=0.03); stddev/expected=0.0271
354 #40 -> 41: disruption=0.98 (perfect=0.02); stddev/expected=0.0272
355 #41 -> 42: disruption=0.98 (perfect=0.02); stddev/expected=0.0208
356 #42 -> 43: disruption=0.98 (perfect=0.02); stddev/expected=0.0226
357 #43 -> 44: disruption=0.98 (perfect=0.02); stddev/expected=0.0264
358 #44 -> 45: disruption=0.98 (perfect=0.02); stddev/expected=0.0233
359 #45 -> 46: disruption=0.98 (perfect=0.02); stddev/expected=0.0285
360 #46 -> 47: disruption=0.98 (perfect=0.02); stddev/expected=0.0246
361 #47 -> 48: disruption=0.98 (perfect=0.02); stddev/expected=0.0282
362 #48 -> 49: disruption=0.98 (perfect=0.02); stddev/expected=0.0233
363 #49 -> 50: disruption=0.98 (perfect=0.02); stddev/expected=0.0197
364 #50 -> 51: disruption=0.98 (perfect=0.02); stddev/expected=0.0317
365 #51 -> 52: disruption=0.98 (perfect=0.02); stddev/expected=0.0283
366 #52 -> 53: disruption=0.98 (perfect=0.02); stddev/expected=0.0282
367 #53 -> 54: disruption=0.98 (perfect=0.02); stddev/expected=0.0273
368 #54 -> 55: disruption=0.98 (perfect=0.02); stddev/expected=0.0283
369 #55 -> 56: disruption=0.98 (perfect=0.02); stddev/expected=0.0288
370 #56 -> 57: disruption=0.98 (perfect=0.02); stddev/expected=0.0263
371 #57 -> 58: disruption=0.98 (perfect=0.02); stddev/expected=0.0339
372 #58 -> 59: disruption=0.98 (perfect=0.02); stddev/expected=0.0262
373 #59 -> 60: disruption=0.98 (perfect=0.02); stddev/expected=0.0309
374 #60 -> 61: disruption=0.98 (perfect=0.02); stddev/expected=0.0285
375 #61 -> 62: disruption=0.98 (perfect=0.02); stddev/expected=0.0288
376 #62 -> 63: disruption=0.98 (perfect=0.02); stddev/expected=0.0298
377 #63 -> 64: disruption=0.98 (perfect=0.02); stddev/expected=0.0277
378 AT_CLEANUP
379
380 AT_SETUP([hash_threshold multipath symmetric_l3 link selection])
381 AT_CHECK([[ovstest test-multipath 'symmetric_l3,50,hash_threshold,1,0,NXM_NX_REG0[]']],
382 [0], [ignore])
383 # 1 -> 2: disruption=0.50 (perfect=0.50); stddev/expected=0.0000
384 # 2 -> 3: disruption=0.50 (perfect=0.33); stddev/expected=0.0056
385 # 3 -> 4: disruption=0.50 (perfect=0.25); stddev/expected=0.0050
386 # 4 -> 5: disruption=0.50 (perfect=0.20); stddev/expected=0.0074
387 # 5 -> 6: disruption=0.50 (perfect=0.17); stddev/expected=0.0031
388 # 6 -> 7: disruption=0.50 (perfect=0.14); stddev/expected=0.0078
389 # 7 -> 8: disruption=0.50 (perfect=0.12); stddev/expected=0.0085
390 # 8 -> 9: disruption=0.50 (perfect=0.11); stddev/expected=0.0093
391 # 9 -> 10: disruption=0.50 (perfect=0.10); stddev/expected=0.0083
392 #10 -> 11: disruption=0.51 (perfect=0.09); stddev/expected=0.0110
393 #11 -> 12: disruption=0.50 (perfect=0.08); stddev/expected=0.0124
394 #12 -> 13: disruption=0.50 (perfect=0.08); stddev/expected=0.0143
395 #13 -> 14: disruption=0.50 (perfect=0.07); stddev/expected=0.0148
396 #14 -> 15: disruption=0.50 (perfect=0.07); stddev/expected=0.0099
397 #15 -> 16: disruption=0.50 (perfect=0.06); stddev/expected=0.0166
398 #16 -> 17: disruption=0.50 (perfect=0.06); stddev/expected=0.0099
399 #17 -> 18: disruption=0.50 (perfect=0.06); stddev/expected=0.0194
400 #18 -> 19: disruption=0.50 (perfect=0.05); stddev/expected=0.0169
401 #19 -> 20: disruption=0.50 (perfect=0.05); stddev/expected=0.0169
402 #20 -> 21: disruption=0.50 (perfect=0.05); stddev/expected=0.0185
403 #21 -> 22: disruption=0.50 (perfect=0.05); stddev/expected=0.0160
404 #22 -> 23: disruption=0.50 (perfect=0.04); stddev/expected=0.0236
405 #23 -> 24: disruption=0.50 (perfect=0.04); stddev/expected=0.0147
406 #24 -> 25: disruption=0.50 (perfect=0.04); stddev/expected=0.0195
407 #25 -> 26: disruption=0.50 (perfect=0.04); stddev/expected=0.0199
408 #26 -> 27: disruption=0.50 (perfect=0.04); stddev/expected=0.0227
409 #27 -> 28: disruption=0.50 (perfect=0.04); stddev/expected=0.0198
410 #28 -> 29: disruption=0.50 (perfect=0.03); stddev/expected=0.0216
411 #29 -> 30: disruption=0.50 (perfect=0.03); stddev/expected=0.0233
412 #30 -> 31: disruption=0.50 (perfect=0.03); stddev/expected=0.0266
413 #31 -> 32: disruption=0.51 (perfect=0.03); stddev/expected=0.0238
414 #32 -> 33: disruption=0.50 (perfect=0.03); stddev/expected=0.0194
415 #33 -> 34: disruption=0.50 (perfect=0.03); stddev/expected=0.0173
416 #34 -> 35: disruption=0.50 (perfect=0.03); stddev/expected=0.0223
417 #35 -> 36: disruption=0.50 (perfect=0.03); stddev/expected=0.0220
418 #36 -> 37: disruption=0.50 (perfect=0.03); stddev/expected=0.0237
419 #37 -> 38: disruption=0.50 (perfect=0.03); stddev/expected=0.0237
420 #38 -> 39: disruption=0.50 (perfect=0.03); stddev/expected=0.0251
421 #39 -> 40: disruption=0.50 (perfect=0.03); stddev/expected=0.0212
422 #40 -> 41: disruption=0.50 (perfect=0.02); stddev/expected=0.0267
423 #41 -> 42: disruption=0.50 (perfect=0.02); stddev/expected=0.0242
424 #42 -> 43: disruption=0.50 (perfect=0.02); stddev/expected=0.0222
425 #43 -> 44: disruption=0.50 (perfect=0.02); stddev/expected=0.0244
426 #44 -> 45: disruption=0.50 (perfect=0.02); stddev/expected=0.0231
427 #45 -> 46: disruption=0.50 (perfect=0.02); stddev/expected=0.0299
428 #46 -> 47: disruption=0.50 (perfect=0.02); stddev/expected=0.0263
429 #47 -> 48: disruption=0.50 (perfect=0.02); stddev/expected=0.0307
430 #48 -> 49: disruption=0.50 (perfect=0.02); stddev/expected=0.0253
431 #49 -> 50: disruption=0.50 (perfect=0.02); stddev/expected=0.0228
432 #50 -> 51: disruption=0.50 (perfect=0.02); stddev/expected=0.0273
433 #51 -> 52: disruption=0.50 (perfect=0.02); stddev/expected=0.0243
434 #52 -> 53: disruption=0.50 (perfect=0.02); stddev/expected=0.0268
435 #53 -> 54: disruption=0.50 (perfect=0.02); stddev/expected=0.0251
436 #54 -> 55: disruption=0.50 (perfect=0.02); stddev/expected=0.0297
437 #55 -> 56: disruption=0.50 (perfect=0.02); stddev/expected=0.0287
438 #56 -> 57: disruption=0.50 (perfect=0.02); stddev/expected=0.0299
439 #57 -> 58: disruption=0.50 (perfect=0.02); stddev/expected=0.0272
440 #58 -> 59: disruption=0.50 (perfect=0.02); stddev/expected=0.0295
441 #59 -> 60: disruption=0.50 (perfect=0.02); stddev/expected=0.0312
442 #60 -> 61: disruption=0.50 (perfect=0.02); stddev/expected=0.0361
443 #61 -> 62: disruption=0.50 (perfect=0.02); stddev/expected=0.0308
444 #62 -> 63: disruption=0.50 (perfect=0.02); stddev/expected=0.0283
445 #63 -> 64: disruption=0.50 (perfect=0.02); stddev/expected=0.0325
446 AT_CLEANUP
447
448 AT_SETUP([hrw multipath symmetric_l3 link selection])
449 AT_CHECK([[ovstest test-multipath 'symmetric_l3,50,hrw,1,0,NXM_NX_REG0[]']],
450 [0], [ignore])
451 # 1 -> 2: disruption=0.50 (perfect=0.50); stddev/expected=0.0000
452 # 2 -> 3: disruption=0.33 (perfect=0.33); stddev/expected=0.0033
453 # 3 -> 4: disruption=0.25 (perfect=0.25); stddev/expected=0.0076
454 # 4 -> 5: disruption=0.20 (perfect=0.20); stddev/expected=0.0059
455 # 5 -> 6: disruption=0.17 (perfect=0.17); stddev/expected=0.0030
456 # 6 -> 7: disruption=0.14 (perfect=0.14); stddev/expected=0.0124
457 # 7 -> 8: disruption=0.13 (perfect=0.12); stddev/expected=0.0072
458 # 8 -> 9: disruption=0.11 (perfect=0.11); stddev/expected=0.0074
459 # 9 -> 10: disruption=0.10 (perfect=0.10); stddev/expected=0.0161
460 #10 -> 11: disruption=0.09 (perfect=0.09); stddev/expected=0.0055
461 #11 -> 12: disruption=0.08 (perfect=0.08); stddev/expected=0.0092
462 #12 -> 13: disruption=0.08 (perfect=0.08); stddev/expected=0.0134
463 #13 -> 14: disruption=0.07 (perfect=0.07); stddev/expected=0.0124
464 #14 -> 15: disruption=0.07 (perfect=0.07); stddev/expected=0.0156
465 #15 -> 16: disruption=0.06 (perfect=0.06); stddev/expected=0.0182
466 #16 -> 17: disruption=0.06 (perfect=0.06); stddev/expected=0.0150
467 #17 -> 18: disruption=0.06 (perfect=0.06); stddev/expected=0.0109
468 #18 -> 19: disruption=0.05 (perfect=0.05); stddev/expected=0.0162
469 #19 -> 20: disruption=0.05 (perfect=0.05); stddev/expected=0.0149
470 #20 -> 21: disruption=0.05 (perfect=0.05); stddev/expected=0.0148
471 #21 -> 22: disruption=0.05 (perfect=0.05); stddev/expected=0.0230
472 #22 -> 23: disruption=0.04 (perfect=0.04); stddev/expected=0.0208
473 #23 -> 24: disruption=0.04 (perfect=0.04); stddev/expected=0.0210
474 #24 -> 25: disruption=0.04 (perfect=0.04); stddev/expected=0.0228
475 #25 -> 26: disruption=0.04 (perfect=0.04); stddev/expected=0.0155
476 #26 -> 27: disruption=0.04 (perfect=0.04); stddev/expected=0.0208
477 #27 -> 28: disruption=0.04 (perfect=0.04); stddev/expected=0.0218
478 #28 -> 29: disruption=0.03 (perfect=0.03); stddev/expected=0.0193
479 #29 -> 30: disruption=0.03 (perfect=0.03); stddev/expected=0.0169
480 #30 -> 31: disruption=0.03 (perfect=0.03); stddev/expected=0.0163
481 #31 -> 32: disruption=0.03 (perfect=0.03); stddev/expected=0.0192
482 #32 -> 33: disruption=0.03 (perfect=0.03); stddev/expected=0.0212
483 #33 -> 34: disruption=0.03 (perfect=0.03); stddev/expected=0.0240
484 #34 -> 35: disruption=0.03 (perfect=0.03); stddev/expected=0.0227
485 #35 -> 36: disruption=0.03 (perfect=0.03); stddev/expected=0.0230
486 #36 -> 37: disruption=0.03 (perfect=0.03); stddev/expected=0.0183
487 #37 -> 38: disruption=0.03 (perfect=0.03); stddev/expected=0.0227
488 #38 -> 39: disruption=0.03 (perfect=0.03); stddev/expected=0.0255
489 #39 -> 40: disruption=0.03 (perfect=0.03); stddev/expected=0.0247
490 #40 -> 41: disruption=0.02 (perfect=0.02); stddev/expected=0.0228
491 #41 -> 42: disruption=0.02 (perfect=0.02); stddev/expected=0.0247
492 #42 -> 43: disruption=0.02 (perfect=0.02); stddev/expected=0.0265
493 #43 -> 44: disruption=0.02 (perfect=0.02); stddev/expected=0.0250
494 #44 -> 45: disruption=0.02 (perfect=0.02); stddev/expected=0.0258
495 #45 -> 46: disruption=0.02 (perfect=0.02); stddev/expected=0.0196
496 #46 -> 47: disruption=0.02 (perfect=0.02); stddev/expected=0.0235
497 #47 -> 48: disruption=0.02 (perfect=0.02); stddev/expected=0.0314
498 #48 -> 49: disruption=0.02 (perfect=0.02); stddev/expected=0.0293
499 #49 -> 50: disruption=0.02 (perfect=0.02); stddev/expected=0.0241
500 #50 -> 51: disruption=0.02 (perfect=0.02); stddev/expected=0.0291
501 #51 -> 52: disruption=0.02 (perfect=0.02); stddev/expected=0.0304
502 #52 -> 53: disruption=0.02 (perfect=0.02); stddev/expected=0.0307
503 #53 -> 54: disruption=0.02 (perfect=0.02); stddev/expected=0.0250
504 #54 -> 55: disruption=0.02 (perfect=0.02); stddev/expected=0.0290
505 #55 -> 56: disruption=0.02 (perfect=0.02); stddev/expected=0.0284
506 #56 -> 57: disruption=0.02 (perfect=0.02); stddev/expected=0.0272
507 #57 -> 58: disruption=0.02 (perfect=0.02); stddev/expected=0.0272
508 #58 -> 59: disruption=0.02 (perfect=0.02); stddev/expected=0.0304
509 #59 -> 60: disruption=0.02 (perfect=0.02); stddev/expected=0.0345
510 #60 -> 61: disruption=0.02 (perfect=0.02); stddev/expected=0.0251
511 #61 -> 62: disruption=0.02 (perfect=0.02); stddev/expected=0.0249
512 #62 -> 63: disruption=0.02 (perfect=0.02); stddev/expected=0.0285
513 #63 -> 64: disruption=0.02 (perfect=0.02); stddev/expected=0.0285
514 AT_CLEANUP
515
516 AT_SETUP([iter_hash symmetric_l3 multipath link selection])
517 AT_CHECK([[ovstest test-multipath 'symmetric_l3,50,iter_hash,1,0,NXM_NX_REG0[]']],
518 [0], [ignore])
519 # 1 -> 2: disruption=0.50 (perfect=0.50); stddev/expected=0.0000
520 # 2 -> 3: disruption=0.42 (perfect=0.33); stddev/expected=0.0034
521 # 3 -> 4: disruption=0.25 (perfect=0.25); stddev/expected=0.0082
522 # 4 -> 5: disruption=0.42 (perfect=0.20); stddev/expected=0.0073
523 # 5 -> 6: disruption=0.17 (perfect=0.17); stddev/expected=0.0040
524 # 6 -> 7: disruption=0.14 (perfect=0.14); stddev/expected=0.0069
525 # 7 -> 8: disruption=0.13 (perfect=0.12); stddev/expected=0.0131
526 # 8 -> 9: disruption=0.45 (perfect=0.11); stddev/expected=0.0093
527 # 9 -> 10: disruption=0.10 (perfect=0.10); stddev/expected=0.0127
528 #10 -> 11: disruption=0.09 (perfect=0.09); stddev/expected=0.0134
529 #11 -> 12: disruption=0.08 (perfect=0.08); stddev/expected=0.0101
530 #12 -> 13: disruption=0.08 (perfect=0.08); stddev/expected=0.0127
531 #13 -> 14: disruption=0.07 (perfect=0.07); stddev/expected=0.0115
532 #14 -> 15: disruption=0.07 (perfect=0.07); stddev/expected=0.0100
533 #15 -> 16: disruption=0.06 (perfect=0.06); stddev/expected=0.0111
534 #16 -> 17: disruption=0.47 (perfect=0.06); stddev/expected=0.0137
535 #17 -> 18: disruption=0.05 (perfect=0.06); stddev/expected=0.0204
536 #18 -> 19: disruption=0.05 (perfect=0.05); stddev/expected=0.0082
537 #19 -> 20: disruption=0.05 (perfect=0.05); stddev/expected=0.0124
538 #20 -> 21: disruption=0.05 (perfect=0.05); stddev/expected=0.0203
539 #21 -> 22: disruption=0.05 (perfect=0.05); stddev/expected=0.0196
540 #22 -> 23: disruption=0.04 (perfect=0.04); stddev/expected=0.0183
541 #23 -> 24: disruption=0.04 (perfect=0.04); stddev/expected=0.0212
542 #24 -> 25: disruption=0.04 (perfect=0.04); stddev/expected=0.0176
543 #25 -> 26: disruption=0.04 (perfect=0.04); stddev/expected=0.0173
544 #26 -> 27: disruption=0.04 (perfect=0.04); stddev/expected=0.0159
545 #27 -> 28: disruption=0.03 (perfect=0.04); stddev/expected=0.0168
546 #28 -> 29: disruption=0.03 (perfect=0.03); stddev/expected=0.0190
547 #29 -> 30: disruption=0.03 (perfect=0.03); stddev/expected=0.0305
548 #30 -> 31: disruption=0.03 (perfect=0.03); stddev/expected=0.0282
549 #31 -> 32: disruption=0.03 (perfect=0.03); stddev/expected=0.0255
550 #32 -> 33: disruption=0.49 (perfect=0.03); stddev/expected=0.0220
551 #33 -> 34: disruption=0.03 (perfect=0.03); stddev/expected=0.0188
552 #34 -> 35: disruption=0.03 (perfect=0.03); stddev/expected=0.0203
553 #35 -> 36: disruption=0.03 (perfect=0.03); stddev/expected=0.0207
554 #36 -> 37: disruption=0.03 (perfect=0.03); stddev/expected=0.0261
555 #37 -> 38: disruption=0.03 (perfect=0.03); stddev/expected=0.0226
556 #38 -> 39: disruption=0.03 (perfect=0.03); stddev/expected=0.0233
557 #39 -> 40: disruption=0.03 (perfect=0.03); stddev/expected=0.0161
558 #40 -> 41: disruption=0.03 (perfect=0.02); stddev/expected=0.0303
559 #41 -> 42: disruption=0.02 (perfect=0.02); stddev/expected=0.0249
560 #42 -> 43: disruption=0.02 (perfect=0.02); stddev/expected=0.0262
561 #43 -> 44: disruption=0.02 (perfect=0.02); stddev/expected=0.0260
562 #44 -> 45: disruption=0.02 (perfect=0.02); stddev/expected=0.0266
563 #45 -> 46: disruption=0.02 (perfect=0.02); stddev/expected=0.0287
564 #46 -> 47: disruption=0.02 (perfect=0.02); stddev/expected=0.0213
565 #47 -> 48: disruption=0.02 (perfect=0.02); stddev/expected=0.0301
566 #48 -> 49: disruption=0.02 (perfect=0.02); stddev/expected=0.0230
567 #49 -> 50: disruption=0.02 (perfect=0.02); stddev/expected=0.0248
568 #50 -> 51: disruption=0.02 (perfect=0.02); stddev/expected=0.0203
569 #51 -> 52: disruption=0.02 (perfect=0.02); stddev/expected=0.0235
570 #52 -> 53: disruption=0.02 (perfect=0.02); stddev/expected=0.0340
571 #53 -> 54: disruption=0.02 (perfect=0.02); stddev/expected=0.0264
572 #54 -> 55: disruption=0.02 (perfect=0.02); stddev/expected=0.0292
573 #55 -> 56: disruption=0.02 (perfect=0.02); stddev/expected=0.0246
574 #56 -> 57: disruption=0.02 (perfect=0.02); stddev/expected=0.0270
575 #57 -> 58: disruption=0.02 (perfect=0.02); stddev/expected=0.0299
576 #58 -> 59: disruption=0.02 (perfect=0.02); stddev/expected=0.0307
577 #59 -> 60: disruption=0.02 (perfect=0.02); stddev/expected=0.0275
578 #60 -> 61: disruption=0.02 (perfect=0.02); stddev/expected=0.0289
579 #61 -> 62: disruption=0.02 (perfect=0.02); stddev/expected=0.0292
580 #62 -> 63: disruption=0.02 (perfect=0.02); stddev/expected=0.0292
581 #63 -> 64: disruption=0.02 (perfect=0.02); stddev/expected=0.0307
582 AT_CLEANUP