selftests: forwarding: mirror_gre_vlan_bridge_1q: Fix roaming test
authorPetr Machata <petrm@mellanox.com>
Thu, 31 Jan 2019 22:35:21 +0000 (22:35 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 Feb 2019 23:26:36 +0000 (15:26 -0800)
ARP or ND traffic can cause spurious migration of FDB back to $swp3.
Mirroring is then updated in accordance with the change, and mirrored
packets are seen at h3, causing a failure.

Detect the case of this spurious roaming, and retry the test.

Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/forwarding/mirror_gre_vlan_bridge_1q.sh

index 43ee505f9f71a7462cdcab207ccde643f7a2a9d7..c02291e9841e326317cded84065b47b16af42130 100755 (executable)
@@ -269,12 +269,25 @@ test_span_gre_fdb_roaming()
        mirror_install $swp1 ingress $tundev "matchall $tcflags"
        quick_test_span_gre_dir $tundev ingress
 
-       bridge fdb del dev $swp3 $h3mac vlan 555 master
-       bridge fdb add dev $swp2 $h3mac vlan 555 master
-       sleep 1
-       fail_test_span_gre_dir $tundev ingress
-
-       bridge fdb del dev $swp2 $h3mac vlan 555 master
+       while ((RET == 0)); do
+               bridge fdb del dev $swp3 $h3mac vlan 555 master 2>/dev/null
+               bridge fdb add dev $swp2 $h3mac vlan 555 master
+               sleep 1
+               fail_test_span_gre_dir $tundev ingress
+
+               if ! bridge fdb sh dev $swp2 vlan 555 master \
+                   | grep -q $h3mac; then
+                       printf "TEST: %-60s  [RETRY]\n" \
+                               "$what: MAC roaming ($tcflags)"
+                       # ARP or ND probably reprimed the FDB while the test
+                       # was running. We would get a spurious failure.
+                       RET=0
+                       continue
+               fi
+               break
+       done
+
+       bridge fdb del dev $swp2 $h3mac vlan 555 master 2>/dev/null
        # Re-prime FDB
        $ARPING -I br1.555 192.0.2.130 -fqc 1
        sleep 1