Skip to content

Commit a1b3741

Browse files
pmachataPaolo Abeni
authored andcommitted
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 <[email protected]> Signed-off-by: Paolo Abeni <[email protected]>
1 parent 7f46615 commit a1b3741

File tree

3 files changed

+36
-65
lines changed

3 files changed

+36
-65
lines changed

tools/testing/selftests/net/forwarding/sch_tbf_core.sh

Lines changed: 30 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -60,68 +60,65 @@ host_create()
6060
local host=$1; shift
6161

6262
simple_if_init $dev
63+
defer simple_if_fini $dev
64+
6365
mtu_set $dev 10000
66+
defer mtu_restore $dev
6467

6568
vlan_create $dev 10 v$dev $(ipaddr $host 10)/28
69+
defer vlan_destroy $dev 10
6670
ip link set dev $dev.10 type vlan egress 0:0
6771

6872
vlan_create $dev 11 v$dev $(ipaddr $host 11)/28
73+
defer vlan_destroy $dev 11
6974
ip link set dev $dev.11 type vlan egress 0:1
7075
}
7176

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-
}
81-
8277
h1_create()
8378
{
8479
host_create $h1 1
8580
}
8681

87-
h1_destroy()
88-
{
89-
host_destroy $h1
90-
}
91-
9282
h2_create()
9383
{
9484
host_create $h2 2
9585

9686
tc qdisc add dev $h2 clsact
87+
defer tc qdisc del dev $h2 clsact
88+
9789
tc filter add dev $h2 ingress pref 1010 prot 802.1q \
9890
flower $TCFLAGS vlan_id 10 action pass
9991
tc filter add dev $h2 ingress pref 1011 prot 802.1q \
10092
flower $TCFLAGS vlan_id 11 action pass
10193
}
10294

103-
h2_destroy()
104-
{
105-
tc qdisc del dev $h2 clsact
106-
host_destroy $h2
107-
}
108-
10995
switch_create()
11096
{
11197
local intf
11298
local vlan
11399

114100
ip link add dev br10 type bridge
101+
defer ip link del dev br10
102+
115103
ip link add dev br11 type bridge
104+
defer ip link del dev br11
116105

117106
for intf in $swp1 $swp2; do
118107
ip link set dev $intf up
108+
defer ip link set dev $intf down
109+
119110
mtu_set $intf 10000
111+
defer mtu_restore $intf
120112

121113
for vlan in 10 11; do
122114
vlan_create $intf $vlan
115+
defer vlan_destroy $intf $vlan
116+
123117
ip link set dev $intf.$vlan master br$vlan
118+
defer ip link set dev $intf.$vlan nomaster
119+
124120
ip link set dev $intf.$vlan up
121+
defer ip link set dev $intf.$vlan down
125122
done
126123
done
127124

@@ -130,34 +127,10 @@ switch_create()
130127
done
131128

132129
ip link set dev br10 up
133-
ip link set dev br11 up
134-
}
135-
136-
switch_destroy()
137-
{
138-
local intf
139-
local vlan
140-
141-
# A test may have been interrupted mid-run, with Qdisc installed. Delete
142-
# it here.
143-
tc qdisc del dev $swp2 root 2>/dev/null
144-
145-
ip link set dev br11 down
146-
ip link set dev br10 down
130+
defer ip link set dev br10 down
147131

148-
for intf in $swp2 $swp1; do
149-
for vlan in 11 10; do
150-
ip link set dev $intf.$vlan down
151-
ip link set dev $intf.$vlan nomaster
152-
vlan_destroy $intf $vlan
153-
done
154-
155-
mtu_restore $intf
156-
ip link set dev $intf down
157-
done
158-
159-
ip link del dev br11
160-
ip link del dev br10
132+
ip link set dev br11 up
133+
defer ip link set dev br11 down
161134
}
162135

163136
setup_prepare()
@@ -177,23 +150,13 @@ setup_prepare()
177150
h2_mac=$(mac_get $h2)
178151

179152
vrf_prepare
153+
defer vrf_cleanup
180154

181155
h1_create
182156
h2_create
183157
switch_create
184158
}
185159

186-
cleanup()
187-
{
188-
pre_cleanup
189-
190-
switch_destroy
191-
h2_destroy
192-
h1_destroy
193-
194-
vrf_cleanup
195-
}
196-
197160
ping_ipv4()
198161
{
199162
ping_test $h1.10 $(ipaddr 2 10) " vlan 10"
@@ -207,18 +170,18 @@ tbf_get_counter()
207170
tc_rule_stats_get $h2 10$vlan ingress .bytes
208171
}
209172

210-
do_tbf_test()
173+
__tbf_test()
211174
{
212175
local vlan=$1; shift
213176
local mbit=$1; shift
214177

215178
start_traffic $h1.$vlan $(ipaddr 1 $vlan) $(ipaddr 2 $vlan) $h2_mac
179+
defer stop_traffic $!
216180
sleep 5 # Wait for the burst to dwindle
217181

218182
local t2=$(busywait_for_counter 1000 +1 tbf_get_counter $vlan)
219183
sleep 10
220184
local t3=$(tbf_get_counter $vlan)
221-
stop_traffic
222185

223186
RET=0
224187

@@ -231,3 +194,9 @@ do_tbf_test()
231194

232195
log_test "TC $((vlan - 10)): TBF rate ${mbit}Mbit"
233196
}
197+
198+
do_tbf_test()
199+
{
200+
in_defer_scope \
201+
__tbf_test "$@"
202+
}

tools/testing/selftests/net/forwarding/sch_tbf_etsprio.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,9 @@ tbf_test()
3030
# This test is used for both ETS and PRIO. Even though we only need two
3131
# bands, PRIO demands a minimum of three.
3232
tc qdisc add dev $swp2 root handle 10: $QDISC 3 priomap 2 1 0
33+
defer tc qdisc del dev $swp2 root
34+
3335
tbf_test_one 128K
34-
tc qdisc del dev $swp2 root
3536
}
3637

3738
tbf_root_test()
@@ -42,6 +43,8 @@ tbf_root_test()
4243

4344
tc qdisc replace dev $swp2 root handle 1: \
4445
tbf rate 400Mbit burst $bs limit 1M
46+
defer tc qdisc del dev $swp2 root
47+
4548
tc qdisc replace dev $swp2 parent 1:1 handle 10: \
4649
$QDISC 3 priomap 2 1 0
4750
tc qdisc replace dev $swp2 parent 10:3 handle 103: \
@@ -53,8 +56,6 @@ tbf_root_test()
5356

5457
do_tbf_test 10 400 $bs
5558
do_tbf_test 11 400 $bs
56-
57-
tc qdisc del dev $swp2 root
5859
}
5960

6061
if type -t sch_tbf_pre_hook >/dev/null; then

tools/testing/selftests/net/forwarding/sch_tbf_root.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@ tbf_test_one()
1414

1515
tc qdisc replace dev $swp2 root handle 108: tbf \
1616
rate 400Mbit burst $bs limit 1M
17+
defer tc qdisc del dev $swp2 root
18+
1719
do_tbf_test 10 400 $bs
1820
}
1921

2022
tbf_test()
2123
{
2224
tbf_test_one 128K
23-
tc qdisc del dev $swp2 root
2425
}
2526

2627
if type -t sch_tbf_pre_hook >/dev/null; then

0 commit comments

Comments
 (0)