Signed-off-by: Xavier Simonart <xsimo...@redhat.com>
---
 tests/multinode-macros.at |   4 +
 tests/multinode.at        | 224 +++++++++++++-------------------------
 2 files changed, 78 insertions(+), 150 deletions(-)

diff --git a/tests/multinode-macros.at b/tests/multinode-macros.at
index 29f0711e6..576098a41 100644
--- a/tests/multinode-macros.at
+++ b/tests/multinode-macros.at
@@ -89,6 +89,10 @@ cleanup_multinode_resources() {
     done
 }
 
+multinode_sbctl () {
+    m_as ovn-central-az1-1 ovn-sbctl "$@"
+}
+
 multinode_nbctl () {
     m_as ovn-central-az1-1 ovn-nbctl "$@"
 }
diff --git a/tests/multinode.at b/tests/multinode.at
index 7ff8588c9..f0aeeb346 100644
--- a/tests/multinode.at
+++ b/tests/multinode.at
@@ -2802,6 +2802,53 @@ OVS_WAIT_UNTIL([m_as ovn-chassis-1 ip link show | grep 
-q genev_sys])
 OVS_WAIT_UNTIL([m_as ovn-chassis-2 ip link show | grep -q genev_sys])
 OVS_WAIT_UNTIL([m_as ovn-chassis-3 ip link show | grep -q genev_sys])
 
+# check_ping(src_port, src_chassis, dst_port, expected_status)
+# Check whether ping, from src_port on src_chassis to dst_port works as 
expected.
+# expected_status:
+#   - "success" (or empty): ping should succeed between src and dst.
+#   - "potential-duplicates: ping should succeed, but we might have potential 
duplicate packets.
+#   - "lost": ping should fail, no packets should go through.
+# Source ip namespace is derived from previous parameters:
+#   - parent_port name for container ports.
+#   - same name as port itself for other ports.
+# Dest ip is retrieved from dst_port.
+check_ping() {
+    src_port=$1
+    src_chassis=$2
+    dst_port=$3
+    status=${4-success}
+
+    parent_port=$(multinode_sbctl get port_binding $src_port parent_port)
+    if [[ "$parent_port" != "[]" ]]; then
+        src_ns=$parent_port
+    else
+        src_ns=$src_port
+    fi
+    dst_chassis_uuid=$(multinode_sbctl get port_binding $dst_port chassis)
+    requested_chassis_uuid=$(multinode_sbctl get port_binding $dst_port 
requested_chassis)
+    dst_chassis=$(multinode_sbctl --bare --columns name list chassis 
$dst_chassis_uuid)
+    dst_ip=$(multinode_nbctl lsp-get-addresses $dst_port | awk '{print $2}')
+    echo "$src_port on $src_chassis => $dst_port on 
$dst_chassis(requested_chassis=$requested_chassis_uuid)"
+    M_NS_CHECK_EXEC([$src_chassis], [$src_ns], [ping -q -c 3 -i 0.3 -w 2 
$dst_ip | FORMAT_PING], \
+[0], [stdout])
+    if [[ "$status" == "success" ]]; then
+        AT_CHECK([cat stdout | grep -c "3 packets transmitted, 3 received, 0% 
packet loss"], [0],[dnl
+1
+])
+    elif [[ "$status" == "potential-duplicates" ]]; then
+        AT_CHECK([cat stdout | grep "3 packets transmitted" | grep -c "3 
received"], [0],[dnl
+1
+])
+    elif [[ "$status" == "lost" ]]; then
+        AT_CHECK([cat stdout | grep -c "100% packet loss"], [0],[dnl
+1
+])
+    else
+        echo "unexpected status $status"
+        AT_FAIL_IF([:])
+    fi
+}
+
 check multinode_nbctl ls-add sw0
 check multinode_nbctl lsp-add sw0 migrator
 check multinode_nbctl lsp-set-addresses migrator "50:54:00:00:00:03 10.0.0.3 
1000::3"
@@ -2813,79 +2860,34 @@ check multinode_nbctl --wait=hv set Logical_Switch_Port 
migrator options:request
 
 m_as ovn-chassis-1 /data/create_fake_vm.sh migrator migrator 50:54:00:00:00:03 
1342 10.0.0.3 24 10.0.0.1 1000::3/64 1000::a
 m_as ovn-chassis-3 /data/create_fake_vm.sh migrator migrator 50:54:00:00:00:03 
1342 10.0.0.3 24 10.0.0.1 1000::3/64 1000::a
-m_as ovn-chassis-2 /data/create_fake_vm.sh sw0-port2 sw0p2 50:54:00:00:00:04 
1342 10.0.0.4 24 10.0.0.1 1000::4/64 1000::a
+m_as ovn-chassis-2 /data/create_fake_vm.sh sw0-port2 sw0-port2 
50:54:00:00:00:04 1342 10.0.0.4 24 10.0.0.1 1000::4/64 1000::a
 
 m_wait_for_ports_up
 
 M_START_TCPDUMP([ovn-chassis-1], [-neei genev_sys_6081 arp or ip], [ch1_genev])
 M_START_TCPDUMP([ovn-chassis-1], [-neei migrator-p arp or ip], [ch1_migrator])
 M_START_TCPDUMP([ovn-chassis-2], [-neei genev_sys_6081 arp or ip], [ch2_genev])
-M_START_TCPDUMP([ovn-chassis-2], [-neei sw0p2-p arp or ip], [ch2_sw0p2])
+M_START_TCPDUMP([ovn-chassis-2], [-neei sw0-port2-p arp or ip], [ch2_sw0p2])
 M_START_TCPDUMP([ovn-chassis-3], [-neei genev_sys_6081 arp or ip], [ch3_genev])
 M_START_TCPDUMP([ovn-chassis-3], [-neei migrator-p arp or ip], [ch3_migrator])
 
 AS_BOX([Migration with vifs])
-echo "Migrator on chassis-1 => sw0p2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ping -q -c 3 -i 0.3 -w 2 
10.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-echo "sw0p2 on chassis-2 => Migrator on chassis-1"
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ping -q -c 3 -i 0.3 -w 2 10.0.0.3 | 
FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
+check_ping migrator ovn-chassis-1 sw0-port2
+check_ping sw0-port2 ovn-chassis-2 migrator
 
 echo "== Starting migration =="
 check multinode_nbctl --wait=hv set Logical_Switch_Port migrator 
options:requested-chassis=ovn-chassis-1,ovn-chassis-3
 
-echo "Migrator on chassis-1 => sw0p2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ping -q -c 3 -i 0.3 -w 2 
10.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
+check_ping migrator ovn-chassis-1 sw0-port2
+check_ping migrator ovn-chassis-3 sw0-port2
 
-echo "Migrator on chassis-3 => sw0p2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ping -q -c 3 -i 0.3 -w 2 
10.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-echo "sw0p2 on chassis-2 => migrator on  ..."
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ping -q -c 3 -i 0.3 -w 2 10.0.0.3 | 
FORMAT_PING], \
-[0], [stdout])
-
-# Both VM are running ... We might get duplicates replies.
-AT_CHECK([cat stdout | grep "3 packets transmitted" | grep -c "3 received"], 
[0],[dnl
-1
-])
+check_ping sw0-port2 ovn-chassis-2 migrator "potential-duplicates"
 
 echo "== Finalizing migration =="
 check multinode_nbctl --wait=hv set Logical_Switch_Port migrator 
options:requested-chassis=ovn-chassis-3
 
-echo "Migrator on chassis-1 => sw0p2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ping -q -c 3 -i 0.3 -w 2 
10.0.0.4 | FORMAT_PING], \
-[0], [stdout])
-
-# VM still running on chassis-1 but flows should have been deleted as 
migration completed.
-AT_CHECK([cat stdout | grep -c "100% packet loss"], [0],[dnl
-1
-])
-
-echo "Migrator on chassis-3 => sw0p2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ping -q -c 3 -i 0.3 -w 2 
10.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-# We should not have duplicates anymore
-echo "sw0p2 on chassis-2 => migrator on chassis-3"
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ping -q -c 3 -i 0.3 -w 2 10.0.0.3 | 
FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
+check_ping migrator ovn-chassis-3 sw0-port2
+check_ping sw0-port2 ovn-chassis-2 migrator
 
 AS_BOX([Migration with container ports])
 # Create container ports.
@@ -2907,71 +2909,27 @@ M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ip link 
set cont up], [0])
 M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ip addr add 20.0.0.3/24 dev 
cont], [0])
 
 # Create the interface for lport sw1-port2
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ip link add link sw0p2 name cont2 
type vlan id 10], [0])
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ip link set cont2 address 
f0:00:00:01:02:04], [0])
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ip link set cont2 up], [0])
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ip addr add 20.0.0.4/24 dev cont2], 
[0])
+M_NS_CHECK_EXEC([ovn-chassis-2], [sw0-port2], [ip link add link sw0-port2 name 
cont2 type vlan id 10], [0])
+M_NS_CHECK_EXEC([ovn-chassis-2], [sw0-port2], [ip link set cont2 address 
f0:00:00:01:02:04], [0])
+M_NS_CHECK_EXEC([ovn-chassis-2], [sw0-port2], [ip link set cont2 up], [0])
+M_NS_CHECK_EXEC([ovn-chassis-2], [sw0-port2], [ip addr add 20.0.0.4/24 dev 
cont2], [0])
 
-echo "mig-cont on chassis-3 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-echo "cont2 on chassis-2 => mig-cont on chassis-3"
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ping -q -c 3 -i 0.3 -w 2 20.0.0.3 | 
FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
+check_ping mig-cont ovn-chassis-3 cont2
+check_ping cont2 ovn-chassis-2 mig-cont
 
 echo "== Starting migration back =="
 check multinode_nbctl --wait=hv set Logical_Switch_Port migrator 
options:requested-chassis=ovn-chassis-3,ovn-chassis-1
 
-echo "mig-cont on chassis-3 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-echo "mig-cont on chassis-1 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-echo "cont2 on chassis-2 => mig-cont on  ..."
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ping -q -c 3 -i 0.3 -w 2 20.0.0.3 | 
FORMAT_PING], \
-[0], [stdout])
-
-# Both VM are running ... We might get duplicates replies.
-AT_CHECK([cat stdout | grep "3 packets transmitted" | grep -c "3 received"], 
[0],[dnl
-1
-])
+check_ping mig-cont ovn-chassis-3 cont2
+check_ping mig-cont ovn-chassis-1 cont2
+check_ping cont2 ovn-chassis-2 mig-cont "potential-duplicates"
 
 echo "== Finalizing migration =="
 check multinode_nbctl --wait=hv set Logical_Switch_Port migrator 
options:requested-chassis=ovn-chassis-1
 
-echo "mig-cont on chassis-3 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [stdout])
-
-# VM still running on chassis-3 but flows should have been deleted....
-AT_CHECK([cat stdout | grep -c "100% packet loss"], [0],[dnl
-1
-])
-
-echo "mig-cont on chassis-1 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-# We should not have duplicates anymore
-echo "cont2 on chassis-2 => mig-cont on chassis-1"
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ping -q -c 3 -i 0.3 -w 2 20.0.0.3 | 
FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
+check_ping mig-cont ovn-chassis-3 cont2 "lost"
+check_ping mig-cont ovn-chassis-1 cont2
+check_ping cont2 ovn-chassis-2 mig-cont
 
 echo "== Starting another migration, this time before starting dst VM =="
 # Unbind migrator from chassis-3
@@ -2982,51 +2940,17 @@ sleep 1
 m_as ovn-chassis-3 ovs-vsctl -- set Interface migrator-p 
external_ids:iface-id=migrator
 
 
-echo "mig-cont on chassis-3 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-echo "mig-cont on chassis-1 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-echo "cont2 on chassis-2 => migrator on  ..."
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ping -q -c 3 -i 0.3 -w 2 20.0.0.3 | 
FORMAT_PING], \
-[0], [stdout])
+check_ping mig-cont ovn-chassis-3 cont2
+check_ping mig-cont ovn-chassis-1 cont2
+check_ping cont2 ovn-chassis-2 mig-cont "potential-duplicates"
 
-# Both VM are running ... We might get duplicates replies.
-AT_CHECK([cat stdout | grep "3 packets transmitted" | grep -c "3 received"], 
[0],[dnl
-1
-])
 
 echo "== Finalizing migration =="
 check multinode_nbctl --wait=hv set Logical_Switch_Port migrator 
options:requested-chassis=ovn-chassis-3
 
-echo "mig-cont on chassis-1 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-1], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [stdout])
-
-# VM still running on chassis-1 but flows should have been deleted....
-AT_CHECK([cat stdout | grep -c "100% packet loss"], [0],[dnl
-1
-])
-
-echo "mig-cont on chassis-3 => cont2 on chassis-2"
-M_NS_CHECK_EXEC([ovn-chassis-3], [migrator], [ping -q -c 3 -i 0.3 -w 2 
20.0.0.4 | FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
-
-# We should not have duplicates anymore
-echo "cont2 on chassis-2 => mig-cont on chassis-3"
-M_NS_CHECK_EXEC([ovn-chassis-2], [sw0p2], [ping -q -c 3 -i 0.3 -w 2 20.0.0.3 | 
FORMAT_PING], \
-[0], [dnl
-3 packets transmitted, 3 received, 0% packet loss, time 0ms
-])
+check_ping mig-cont ovn-chassis-1 cont2 "lost"
+check_ping mig-cont ovn-chassis-3 cont2
+check_ping cont2 ovn-chassis-2 mig-cont
 
 m_as ovn-chassis-1 killall tcpdump
 m_as ovn-chassis-2 killall tcpdump
-- 
2.47.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to