Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: TBF: Use defer for test cleanup

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>

authored by

Petr Machata and committed by
Paolo Abeni
a1b3741d 7f46615d

+36 -65
+30 -61
tools/testing/selftests/net/forwarding/sch_tbf_core.sh
··· 60 60 local host=$1; shift 61 61 62 62 simple_if_init $dev 63 + defer simple_if_fini $dev 64 + 63 65 mtu_set $dev 10000 66 + defer mtu_restore $dev 64 67 65 68 vlan_create $dev 10 v$dev $(ipaddr $host 10)/28 69 + defer vlan_destroy $dev 10 66 70 ip link set dev $dev.10 type vlan egress 0:0 67 71 68 72 vlan_create $dev 11 v$dev $(ipaddr $host 11)/28 73 + defer vlan_destroy $dev 11 69 74 ip link set dev $dev.11 type vlan egress 0:1 70 - } 71 - 72 - host_destroy() 73 - { 74 - local dev=$1; shift 75 - 76 - vlan_destroy $dev 11 77 - vlan_destroy $dev 10 78 - mtu_restore $dev 79 - simple_if_fini $dev 80 75 } 81 76 82 77 h1_create() ··· 79 84 host_create $h1 1 80 85 } 81 86 82 - h1_destroy() 83 - { 84 - host_destroy $h1 85 - } 86 - 87 87 h2_create() 88 88 { 89 89 host_create $h2 2 90 90 91 91 tc qdisc add dev $h2 clsact 92 + defer tc qdisc del dev $h2 clsact 93 + 92 94 tc filter add dev $h2 ingress pref 1010 prot 802.1q \ 93 95 flower $TCFLAGS vlan_id 10 action pass 94 96 tc filter add dev $h2 ingress pref 1011 prot 802.1q \ 95 97 flower $TCFLAGS vlan_id 11 action pass 96 - } 97 - 98 - h2_destroy() 99 - { 100 - tc qdisc del dev $h2 clsact 101 - host_destroy $h2 102 98 } 103 99 104 100 switch_create() ··· 98 112 local vlan 99 113 100 114 ip link add dev br10 type bridge 115 + defer ip link del dev br10 116 + 101 117 ip link add dev br11 type bridge 118 + defer ip link del dev br11 102 119 103 120 for intf in $swp1 $swp2; do 104 121 ip link set dev $intf up 122 + defer ip link set dev $intf down 123 + 105 124 mtu_set $intf 10000 125 + defer mtu_restore $intf 106 126 107 127 for vlan in 10 11; do 108 128 vlan_create $intf $vlan 129 + defer vlan_destroy $intf $vlan 130 + 109 131 ip link set dev $intf.$vlan master br$vlan 132 + defer ip link set dev $intf.$vlan nomaster 133 + 110 134 ip link set dev $intf.$vlan up 135 + defer ip link set dev $intf.$vlan down 111 136 done 112 137 done 113 138 ··· 127 130 done 128 131 129 132 ip link set dev br10 up 133 + defer ip link set dev br10 down 134 + 130 135 ip link set dev br11 up 131 - } 132 - 133 - switch_destroy() 134 - { 135 - local intf 136 - local vlan 137 - 138 - # A test may have been interrupted mid-run, with Qdisc installed. Delete 139 - # it here. 140 - tc qdisc del dev $swp2 root 2>/dev/null 141 - 142 - ip link set dev br11 down 143 - ip link set dev br10 down 144 - 145 - for intf in $swp2 $swp1; do 146 - for vlan in 11 10; do 147 - ip link set dev $intf.$vlan down 148 - ip link set dev $intf.$vlan nomaster 149 - vlan_destroy $intf $vlan 150 - done 151 - 152 - mtu_restore $intf 153 - ip link set dev $intf down 154 - done 155 - 156 - ip link del dev br11 157 - ip link del dev br10 136 + defer ip link set dev br11 down 158 137 } 159 138 160 139 setup_prepare() ··· 150 177 h2_mac=$(mac_get $h2) 151 178 152 179 vrf_prepare 180 + defer vrf_cleanup 153 181 154 182 h1_create 155 183 h2_create 156 184 switch_create 157 - } 158 - 159 - cleanup() 160 - { 161 - pre_cleanup 162 - 163 - switch_destroy 164 - h2_destroy 165 - h1_destroy 166 - 167 - vrf_cleanup 168 185 } 169 186 170 187 ping_ipv4() ··· 170 207 tc_rule_stats_get $h2 10$vlan ingress .bytes 171 208 } 172 209 173 - do_tbf_test() 210 + __tbf_test() 174 211 { 175 212 local vlan=$1; shift 176 213 local mbit=$1; shift 177 214 178 215 start_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 2 $vlan) $h2_mac 216 + defer stop_traffic $! 179 217 sleep 5 # Wait for the burst to dwindle 180 218 181 219 local t2=$(busywait_for_counter 1000 +1 tbf_get_counter $vlan) 182 220 sleep 10 183 221 local t3=$(tbf_get_counter $vlan) 184 - stop_traffic 185 222 186 223 RET=0 187 224 ··· 193 230 xfail_on_slow check_err $? "Expected rate $(humanize $er), got $(humanize $nr), which is $nr_pct% off. Required accuracy is +-5%." 194 231 195 232 log_test "TC $((vlan - 10)): TBF rate ${mbit}Mbit" 233 + } 234 + 235 + do_tbf_test() 236 + { 237 + in_defer_scope \ 238 + __tbf_test "$@" 196 239 }
+4 -3
tools/testing/selftests/net/forwarding/sch_tbf_etsprio.sh
··· 30 30 # This test is used for both ETS and PRIO. Even though we only need two 31 31 # bands, PRIO demands a minimum of three. 32 32 tc qdisc add dev $swp2 root handle 10: $QDISC 3 priomap 2 1 0 33 + defer tc qdisc del dev $swp2 root 34 + 33 35 tbf_test_one 128K 34 - tc qdisc del dev $swp2 root 35 36 } 36 37 37 38 tbf_root_test() ··· 43 42 44 43 tc qdisc replace dev $swp2 root handle 1: \ 45 44 tbf rate 400Mbit burst $bs limit 1M 45 + defer tc qdisc del dev $swp2 root 46 + 46 47 tc qdisc replace dev $swp2 parent 1:1 handle 10: \ 47 48 $QDISC 3 priomap 2 1 0 48 49 tc qdisc replace dev $swp2 parent 10:3 handle 103: \ ··· 56 53 57 54 do_tbf_test 10 400 $bs 58 55 do_tbf_test 11 400 $bs 59 - 60 - tc qdisc del dev $swp2 root 61 56 } 62 57 63 58 if type -t sch_tbf_pre_hook >/dev/null; then
+2 -1
tools/testing/selftests/net/forwarding/sch_tbf_root.sh
··· 14 14 15 15 tc qdisc replace dev $swp2 root handle 108: tbf \ 16 16 rate 400Mbit burst $bs limit 1M 17 + defer tc qdisc del dev $swp2 root 18 + 17 19 do_tbf_test 10 400 $bs 18 20 } 19 21 20 22 tbf_test() 21 23 { 22 24 tbf_test_one 128K 23 - tc qdisc del dev $swp2 root 24 25 } 25 26 26 27 if type -t sch_tbf_pre_hook >/dev/null; then