The "vtep: 3 HVs, 1 VIFs/HV, 1 GW, 1 LS" test fails consistently on PPC.
The test expects a flow with the following to be present:
is_chassis_resident("cr-lrp1") || is_chassis_resident("cr-lrp2")
However, on PPC, the test fails because the flow has the following
instead:
is_chassis_resident("cr-lrp2") || is_chassis_resident("cr-lrp1")
In other words, the fields are reversed. This is because the ordering of
the ports in ovn-northd can differ depending on architecture. This is a
case where the northd code is correct, but the test is overly
restrictive.
To fix this, the test has been broken into two parts. First, we check
the overall flow structure to ensure that there are two
"is_chassis_resident" fields present. Then we can break that flow down
further and sort the fields so that they will be in a predictable order.
Signed-off-by: Mark Michelson <[email protected]>
---
tests/ovn.at | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/tests/ovn.at b/tests/ovn.at
index 4461b840e..80ede049d 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -4269,12 +4269,25 @@
response=${sha}${lrpmac}08060001080006040002${lrpmac}${tpa}${sha}${spa}
# we expect arp reply packet on hv3
echo $response >> 3.expected
-AT_CHECK([ovn-sbctl lflow-list lsw0 | grep 'reg0[\[14\]]' | sort | sed
's/table=../table=??/g'], [0], [dnl
+# First ensure basic flow contents are as we expect.
+AT_CHECK([ovn-sbctl lflow-list lsw0 | grep 'reg0[\[14\]]' | sort | sed
's/table=../table=??/g' | sed
's/is_chassis_resident([[^)]]*)/is_chassis_resident("??")/g'], [0], [dnl
table=??(ls_in_check_port_sec), priority=70 , match=(inport == "lp-vtep"),
action=(reg0[[14]] = 1; next(pipeline=ingress, table=??);)
table=??(ls_in_hairpin ), priority=1000 , match=(reg0[[14]] == 1),
action=(next(pipeline=ingress, table=??);)
- table=??(ls_in_hairpin ), priority=2000 , match=(reg0[[14]] == 1 &&
(is_chassis_resident("cr-lrp1") || is_chassis_resident("cr-lrp2"))),
action=(next;)
+ table=??(ls_in_hairpin ), priority=2000 , match=(reg0[[14]] == 1 &&
(is_chassis_resident("??") || is_chassis_resident("??"))), action=(next;)
])
+# We've ensured that the expected hairpin flows are present
+# and that the expected number of "is_chassis_resident" fields are in
+# the flow. Now we need to ensure the contents are correct.
+# Unfortunately, the order of the "is_chassis_resident" fields is
+# unpredictable. Therefore we sort them so the order is predictable.
+actual_chassis=$(ovn-sbctl lflow-list lsw0 | grep 'reg0[\[14\]]' | grep
'priority=2000' | grep -o 'is_chassis_resident([[^)]]*)' | sort)
+
+expected_chassis='is_chassis_resident("cr-lrp1")
+is_chassis_resident("cr-lrp2")'
+
+check test "$expected_chassis" = "$actual_chassis"
+
# dump information with counters
echo "------ OVN dump ------"
ovn-nbctl show
--
2.31.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev