]> www.infradead.org Git - users/willy/xarray.git/commitdiff
selftests: hsr: Reorder the testsuite.
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Fri, 15 Sep 2023 18:10:05 +0000 (20:10 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Sep 2023 07:26:19 +0000 (08:26 +0100)
Move the code and group into functions so it will be easier to extend
the test to HSRv1 so that both versions are covered.

Move the ping/test part into do_complete_ping_test() and the interface
setup into setup_hsr_interfaces().

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/hsr/hsr_ping.sh

index 183f4a0f19dd9cf99c10f06a3eed20594a962602..d4613b7b71883ea70488906c3e90aa33f3b1b4bc 100755 (executable)
@@ -41,61 +41,6 @@ cleanup()
        done
 }
 
-ip -Version > /dev/null 2>&1
-if [ $? -ne 0 ];then
-       echo "SKIP: Could not run test without ip tool"
-       exit $ksft_skip
-fi
-
-trap cleanup EXIT
-
-for i in "$ns1" "$ns2" "$ns3" ;do
-       ip netns add $i || exit $ksft_skip
-       ip -net $i link set lo up
-done
-
-echo "INFO: preparing interfaces."
-# Three HSR nodes. Each node has one link to each of its neighbour, two links in total.
-#
-#    ns1eth1 ----- ns2eth1
-#      hsr1         hsr2
-#    ns1eth2       ns2eth2
-#       |            |
-#    ns3eth1      ns3eth2
-#           \    /
-#            hsr3
-#
-# Interfaces
-ip link add ns1eth1 netns "$ns1" type veth peer name ns2eth1 netns "$ns2"
-ip link add ns1eth2 netns "$ns1" type veth peer name ns3eth1 netns "$ns3"
-ip link add ns3eth2 netns "$ns3" type veth peer name ns2eth2 netns "$ns2"
-
-# HSRv0.
-ip -net "$ns1" link add name hsr1 type hsr slave1 ns1eth1 slave2 ns1eth2 supervision 45 version 0 proto 0
-ip -net "$ns2" link add name hsr2 type hsr slave1 ns2eth1 slave2 ns2eth2 supervision 45 version 0 proto 0
-ip -net "$ns3" link add name hsr3 type hsr slave1 ns3eth1 slave2 ns3eth2 supervision 45 version 0 proto 0
-
-# IP for HSR
-ip -net "$ns1" addr add 100.64.0.1/24 dev hsr1
-ip -net "$ns1" addr add dead:beef:1::1/64 dev hsr1 nodad
-ip -net "$ns2" addr add 100.64.0.2/24 dev hsr2
-ip -net "$ns2" addr add dead:beef:1::2/64 dev hsr2 nodad
-ip -net "$ns3" addr add 100.64.0.3/24 dev hsr3
-ip -net "$ns3" addr add dead:beef:1::3/64 dev hsr3 nodad
-
-# All Links up
-ip -net "$ns1" link set ns1eth1 up
-ip -net "$ns1" link set ns1eth2 up
-ip -net "$ns1" link set hsr1 up
-
-ip -net "$ns2" link set ns2eth1 up
-ip -net "$ns2" link set ns2eth2 up
-ip -net "$ns2" link set hsr2 up
-
-ip -net "$ns3" link set ns3eth1 up
-ip -net "$ns3" link set ns3eth2 up
-ip -net "$ns3" link set hsr3 up
-
 # $1: IP address
 is_v6()
 {
@@ -164,93 +109,157 @@ stop_if_error()
        fi
 }
 
-
-echo "INFO: Initial validation ping."
-# Each node has to be able each one.
-do_ping "$ns1" 100.64.0.2
-do_ping "$ns2" 100.64.0.1
-do_ping "$ns3" 100.64.0.1
-stop_if_error "Initial validation failed."
-
-do_ping "$ns1" 100.64.0.3
-do_ping "$ns2" 100.64.0.3
-do_ping "$ns3" 100.64.0.2
-
-do_ping "$ns1" dead:beef:1::2
-do_ping "$ns1" dead:beef:1::3
-do_ping "$ns2" dead:beef:1::1
-do_ping "$ns2" dead:beef:1::2
-do_ping "$ns3" dead:beef:1::1
-do_ping "$ns3" dead:beef:1::2
-
-stop_if_error "Initial validation failed."
+do_complete_ping_test()
+{
+       echo "INFO: Initial validation ping."
+       # Each node has to be able each one.
+       do_ping "$ns1" 100.64.0.2
+       do_ping "$ns2" 100.64.0.1
+       do_ping "$ns3" 100.64.0.1
+       stop_if_error "Initial validation failed."
+
+       do_ping "$ns1" 100.64.0.3
+       do_ping "$ns2" 100.64.0.3
+       do_ping "$ns3" 100.64.0.2
+
+       do_ping "$ns1" dead:beef:1::2
+       do_ping "$ns1" dead:beef:1::3
+       do_ping "$ns2" dead:beef:1::1
+       do_ping "$ns2" dead:beef:1::2
+       do_ping "$ns3" dead:beef:1::1
+       do_ping "$ns3" dead:beef:1::2
+
+       stop_if_error "Initial validation failed."
 
 # Wait until supervisor all supervision frames have been processed and the node
 # entries have been merged. Otherwise duplicate frames will be observed which is
 # valid at this stage.
-WAIT=5
-while [ ${WAIT} -gt 0 ]
-do
-       grep 00:00:00:00:00:00 /sys/kernel/debug/hsr/hsr*/node_table
-       if [ $? -ne 0 ]
-       then
-               break
-       fi
-       sleep 1
-       let "WAIT = WAIT - 1"
-done
+       WAIT=5
+       while [ ${WAIT} -gt 0 ]
+       do
+               grep 00:00:00:00:00:00 /sys/kernel/debug/hsr/hsr*/node_table
+               if [ $? -ne 0 ]
+               then
+                       break
+               fi
+               sleep 1
+               let "WAIT = WAIT - 1"
+       done
 
 # Just a safety delay in case the above check didn't handle it.
-sleep 1
+       sleep 1
+
+       echo "INFO: Longer ping test."
+       do_ping_long "$ns1" 100.64.0.2
+       do_ping_long "$ns1" dead:beef:1::2
+       do_ping_long "$ns1" 100.64.0.3
+       do_ping_long "$ns1" dead:beef:1::3
+
+       stop_if_error "Longer ping test failed."
+
+       do_ping_long "$ns2" 100.64.0.1
+       do_ping_long "$ns2" dead:beef:1::1
+       do_ping_long "$ns2" 100.64.0.3
+       do_ping_long "$ns2" dead:beef:1::2
+       stop_if_error "Longer ping test failed."
+
+       do_ping_long "$ns3" 100.64.0.1
+       do_ping_long "$ns3" dead:beef:1::1
+       do_ping_long "$ns3" 100.64.0.2
+       do_ping_long "$ns3" dead:beef:1::2
+       stop_if_error "Longer ping test failed."
+
+       echo "INFO: Cutting one link."
+       do_ping_long "$ns1" 100.64.0.3 &
 
-echo "INFO: Longer ping test."
-do_ping_long "$ns1" 100.64.0.2
-do_ping_long "$ns1" dead:beef:1::2
-do_ping_long "$ns1" 100.64.0.3
-do_ping_long "$ns1" dead:beef:1::3
+       sleep 3
+       ip -net "$ns3" link set ns3eth1 down
+       wait
 
-stop_if_error "Longer ping test failed."
+       ip -net "$ns3" link set ns3eth1 up
 
-do_ping_long "$ns2" 100.64.0.1
-do_ping_long "$ns2" dead:beef:1::1
-do_ping_long "$ns2" 100.64.0.3
-do_ping_long "$ns2" dead:beef:1::2
-stop_if_error "Longer ping test failed."
+       stop_if_error "Failed with one link down."
 
-do_ping_long "$ns3" 100.64.0.1
-do_ping_long "$ns3" dead:beef:1::1
-do_ping_long "$ns3" 100.64.0.2
-do_ping_long "$ns3" dead:beef:1::2
-stop_if_error "Longer ping test failed."
+       echo "INFO: Delay the link and drop a few packages."
+       tc -net "$ns3" qdisc add dev ns3eth1 root netem delay 50ms
+       tc -net "$ns2" qdisc add dev ns2eth1 root netem delay 5ms loss 25%
 
-echo "INFO: Cutting one link."
-do_ping_long "$ns1" 100.64.0.3 &
+       do_ping_long "$ns1" 100.64.0.2
+       do_ping_long "$ns1" 100.64.0.3
 
-sleep 3
-ip -net "$ns3" link set ns3eth1 down
-wait
+       stop_if_error "Failed with delay and packetloss."
 
-ip -net "$ns3" link set ns3eth1 up
+       do_ping_long "$ns2" 100.64.0.1
+       do_ping_long "$ns2" 100.64.0.3
 
-stop_if_error "Failed with one link down."
+       stop_if_error "Failed with delay and packetloss."
 
-echo "INFO: Delay the link and drop a few packages."
-tc -net "$ns3" qdisc add dev ns3eth1 root netem delay 50ms
-tc -net "$ns2" qdisc add dev ns2eth1 root netem delay 5ms loss 25%
+       do_ping_long "$ns3" 100.64.0.1
+       do_ping_long "$ns3" 100.64.0.2
+       stop_if_error "Failed with delay and packetloss."
 
-do_ping_long "$ns1" 100.64.0.2
-do_ping_long "$ns1" 100.64.0.3
+       echo "INFO: All good."
+}
+
+setup_hsr_interfaces()
+{
+       echo "INFO: preparing interfaces."
+# Three HSR nodes. Each node has one link to each of its neighbour, two links in total.
+#
+#    ns1eth1 ----- ns2eth1
+#      hsr1         hsr2
+#    ns1eth2       ns2eth2
+#       |            |
+#    ns3eth1      ns3eth2
+#           \    /
+#            hsr3
+#
+       # Interfaces
+       ip link add ns1eth1 netns "$ns1" type veth peer name ns2eth1 netns "$ns2"
+       ip link add ns1eth2 netns "$ns1" type veth peer name ns3eth1 netns "$ns3"
+       ip link add ns3eth2 netns "$ns3" type veth peer name ns2eth2 netns "$ns2"
+
+       # HSRv0.
+       ip -net "$ns1" link add name hsr1 type hsr slave1 ns1eth1 slave2 ns1eth2 supervision 45 version 0 proto 0
+       ip -net "$ns2" link add name hsr2 type hsr slave1 ns2eth1 slave2 ns2eth2 supervision 45 version 0 proto 0
+       ip -net "$ns3" link add name hsr3 type hsr slave1 ns3eth1 slave2 ns3eth2 supervision 45 version 0 proto 0
+
+       # IP for HSR
+       ip -net "$ns1" addr add 100.64.0.1/24 dev hsr1
+       ip -net "$ns1" addr add dead:beef:1::1/64 dev hsr1 nodad
+       ip -net "$ns2" addr add 100.64.0.2/24 dev hsr2
+       ip -net "$ns2" addr add dead:beef:1::2/64 dev hsr2 nodad
+       ip -net "$ns3" addr add 100.64.0.3/24 dev hsr3
+       ip -net "$ns3" addr add dead:beef:1::3/64 dev hsr3 nodad
+
+       # All Links up
+       ip -net "$ns1" link set ns1eth1 up
+       ip -net "$ns1" link set ns1eth2 up
+       ip -net "$ns1" link set hsr1 up
+
+       ip -net "$ns2" link set ns2eth1 up
+       ip -net "$ns2" link set ns2eth2 up
+       ip -net "$ns2" link set hsr2 up
+
+       ip -net "$ns3" link set ns3eth1 up
+       ip -net "$ns3" link set ns3eth2 up
+       ip -net "$ns3" link set hsr3 up
+}
 
-stop_if_error "Failed with delay and packetloss."
+ip -Version > /dev/null 2>&1
+if [ $? -ne 0 ];then
+       echo "SKIP: Could not run test without ip tool"
+       exit $ksft_skip
+fi
 
-do_ping_long "$ns2" 100.64.0.1
-do_ping_long "$ns2" 100.64.0.3
+trap cleanup EXIT
 
-stop_if_error "Failed with delay and packetloss."
+for i in "$ns1" "$ns2" "$ns3" ;do
+       ip netns add $i || exit $ksft_skip
+       ip -net $i link set lo up
+done
 
-do_ping_long "$ns3" 100.64.0.1
-do_ping_long "$ns3" 100.64.0.2
-stop_if_error "Failed with delay and packetloss."
+setup_hsr_interfaces
+do_complete_ping_test
 
-echo "INFO: All good."
 exit $ret