]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests: TBF: Use defer for test cleanup
authorPetr Machata <petrm@nvidia.com>
Thu, 17 Oct 2024 09:45:47 +0000 (11:45 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 22 Oct 2024 11:33:47 +0000 (13:33 +0200)
Use the defer framework to schedule cleanups as soon as the command is
executed.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
tools/testing/selftests/net/forwarding/sch_tbf_core.sh
tools/testing/selftests/net/forwarding/sch_tbf_etsprio.sh
tools/testing/selftests/net/forwarding/sch_tbf_root.sh

index 9cd884d4a5dec1c54a51d6d8d255fe48d5dbe6b4..ec309a5086bc6158042b2e6ac6cfce0b63d7a689 100644 (file)
@@ -60,68 +60,65 @@ host_create()
        local host=$1; shift
 
        simple_if_init $dev
+       defer simple_if_fini $dev
+
        mtu_set $dev 10000
+       defer mtu_restore $dev
 
        vlan_create $dev 10 v$dev $(ipaddr $host 10)/28
+       defer vlan_destroy $dev 10
        ip link set dev $dev.10 type vlan egress 0:0
 
        vlan_create $dev 11 v$dev $(ipaddr $host 11)/28
+       defer vlan_destroy $dev 11
        ip link set dev $dev.11 type vlan egress 0:1
 }
 
-host_destroy()
-{
-       local dev=$1; shift
-
-       vlan_destroy $dev 11
-       vlan_destroy $dev 10
-       mtu_restore $dev
-       simple_if_fini $dev
-}
-
 h1_create()
 {
        host_create $h1 1
 }
 
-h1_destroy()
-{
-       host_destroy $h1
-}
-
 h2_create()
 {
        host_create $h2 2
 
        tc qdisc add dev $h2 clsact
+       defer tc qdisc del dev $h2 clsact
+
        tc filter add dev $h2 ingress pref 1010 prot 802.1q \
           flower $TCFLAGS vlan_id 10 action pass
        tc filter add dev $h2 ingress pref 1011 prot 802.1q \
           flower $TCFLAGS vlan_id 11 action pass
 }
 
-h2_destroy()
-{
-       tc qdisc del dev $h2 clsact
-       host_destroy $h2
-}
-
 switch_create()
 {
        local intf
        local vlan
 
        ip link add dev br10 type bridge
+       defer ip link del dev br10
+
        ip link add dev br11 type bridge
+       defer ip link del dev br11
 
        for intf in $swp1 $swp2; do
                ip link set dev $intf up
+               defer ip link set dev $intf down
+
                mtu_set $intf 10000
+               defer mtu_restore $intf
 
                for vlan in 10 11; do
                        vlan_create $intf $vlan
+                       defer vlan_destroy $intf $vlan
+
                        ip link set dev $intf.$vlan master br$vlan
+                       defer ip link set dev $intf.$vlan nomaster
+
                        ip link set dev $intf.$vlan up
+                       defer ip link set dev $intf.$vlan down
                done
        done
 
@@ -130,34 +127,10 @@ switch_create()
        done
 
        ip link set dev br10 up
-       ip link set dev br11 up
-}
-
-switch_destroy()
-{
-       local intf
-       local vlan
-
-       # A test may have been interrupted mid-run, with Qdisc installed. Delete
-       # it here.
-       tc qdisc del dev $swp2 root 2>/dev/null
-
-       ip link set dev br11 down
-       ip link set dev br10 down
+       defer ip link set dev br10 down
 
-       for intf in $swp2 $swp1; do
-               for vlan in 11 10; do
-                       ip link set dev $intf.$vlan down
-                       ip link set dev $intf.$vlan nomaster
-                       vlan_destroy $intf $vlan
-               done
-
-               mtu_restore $intf
-               ip link set dev $intf down
-       done
-
-       ip link del dev br11
-       ip link del dev br10
+       ip link set dev br11 up
+       defer ip link set dev br11 down
 }
 
 setup_prepare()
@@ -177,23 +150,13 @@ setup_prepare()
        h2_mac=$(mac_get $h2)
 
        vrf_prepare
+       defer vrf_cleanup
 
        h1_create
        h2_create
        switch_create
 }
 
-cleanup()
-{
-       pre_cleanup
-
-       switch_destroy
-       h2_destroy
-       h1_destroy
-
-       vrf_cleanup
-}
-
 ping_ipv4()
 {
        ping_test $h1.10 $(ipaddr 2 10) " vlan 10"
@@ -207,18 +170,18 @@ tbf_get_counter()
        tc_rule_stats_get $h2 10$vlan ingress .bytes
 }
 
-do_tbf_test()
+__tbf_test()
 {
        local vlan=$1; shift
        local mbit=$1; shift
 
        start_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 2 $vlan) $h2_mac
+       defer stop_traffic $!
        sleep 5 # Wait for the burst to dwindle
 
        local t2=$(busywait_for_counter 1000 +1 tbf_get_counter $vlan)
        sleep 10
        local t3=$(tbf_get_counter $vlan)
-       stop_traffic
 
        RET=0
 
@@ -231,3 +194,9 @@ do_tbf_test()
 
        log_test "TC $((vlan - 10)): TBF rate ${mbit}Mbit"
 }
+
+do_tbf_test()
+{
+       in_defer_scope \
+               __tbf_test "$@"
+}
index df9bcd6a811a868609f82b3b774ca891642fbebf..c182a04282bc04c915a6a7f77f1ad082e4b400ba 100644 (file)
@@ -30,8 +30,9 @@ tbf_test()
        # This test is used for both ETS and PRIO. Even though we only need two
        # bands, PRIO demands a minimum of three.
        tc qdisc add dev $swp2 root handle 10: $QDISC 3 priomap 2 1 0
+       defer tc qdisc del dev $swp2 root
+
        tbf_test_one 128K
-       tc qdisc del dev $swp2 root
 }
 
 tbf_root_test()
@@ -42,6 +43,8 @@ tbf_root_test()
 
        tc qdisc replace dev $swp2 root handle 1: \
                tbf rate 400Mbit burst $bs limit 1M
+       defer tc qdisc del dev $swp2 root
+
        tc qdisc replace dev $swp2 parent 1:1 handle 10: \
                $QDISC 3 priomap 2 1 0
        tc qdisc replace dev $swp2 parent 10:3 handle 103: \
@@ -53,8 +56,6 @@ tbf_root_test()
 
        do_tbf_test 10 400 $bs
        do_tbf_test 11 400 $bs
-
-       tc qdisc del dev $swp2 root
 }
 
 if type -t sch_tbf_pre_hook >/dev/null; then
index 96c997be0d03c9a4566eb94439726b1ac8b0ddf9..9f20320f8d84e528e2a46264bd2df78bb398538c 100755 (executable)
@@ -14,13 +14,14 @@ tbf_test_one()
 
        tc qdisc replace dev $swp2 root handle 108: tbf \
           rate 400Mbit burst $bs limit 1M
+       defer tc qdisc del dev $swp2 root
+
        do_tbf_test 10 400 $bs
 }
 
 tbf_test()
 {
        tbf_test_one 128K
-       tc qdisc del dev $swp2 root
 }
 
 if type -t sch_tbf_pre_hook >/dev/null; then