Skip to content

Commit 1493c18

Browse files
committed
Merge branch 'selftests-mark-auto-deferring-functions-clearly'
Petr Machata says: ==================== selftests: Mark auto-deferring functions clearly selftests/net/lib.sh contains a suite of iproute2 wrappers that automatically schedule the corresponding cleanup through defer. The fact they do so is however not immediately obvious, one needs to know which functions are handling the deferral behind the scenes, and which expect the caller to handle cleanups themselves. A convention for these auto-deferring functions would help both writing and patch review. This patchset does so by marking these functions with an adf_ prefix. We already have a few such functions: forwarding/lib.sh has adf_mcd_start() and a few selftests add private helpers that conform to this convention. Patches kernel-patches#1 to kernel-patches#8 gradually convert individual functions, one per patch. Patch kernel-patches#9 renames an auto-deferring private helpers named dfr_* to adf_*. The plan is not to retro-rename all private helpers, but I happened to know about this one. Patches kernel-patches#10 to kernel-patches#12 introduce several autodefer helpers for commonly used forwarding/lib.sh functions, and opportunistically convert straightforward instances of 'action; defer counteraction' to the new helpers. Patch kernel-patches#13 adds some README verbiage to pitch defer and the adf_* convention. ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 9ccec26 + fca6ff9 commit 1493c18

18 files changed

+225
-237
lines changed

tools/testing/selftests/drivers/net/mlxsw/devlink_trap_policer.sh

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ source $lib_dir/devlink_lib.sh
4444

4545
h1_create()
4646
{
47-
simple_if_init $h1 192.0.2.1/24
48-
defer simple_if_fini $h1 192.0.2.1/24
47+
adf_simple_if_init $h1 192.0.2.1/24
4948

5049
mtu_set $h1 10000
5150
defer mtu_restore $h1
@@ -56,8 +55,7 @@ h1_create()
5655

5756
h2_create()
5857
{
59-
simple_if_init $h2 198.51.100.1/24
60-
defer simple_if_fini $h2 198.51.100.1/24
58+
adf_simple_if_init $h2 198.51.100.1/24
6159

6260
mtu_set $h2 10000
6361
defer mtu_restore $h2
@@ -106,8 +104,7 @@ setup_prepare()
106104
# Reload to ensure devlink-trap settings are back to default.
107105
defer devlink_reload
108106

109-
vrf_prepare
110-
defer vrf_cleanup
107+
adf_vrf_prepare
111108

112109
h1_create
113110
h2_create

tools/testing/selftests/drivers/net/mlxsw/qos_ets_strict.sh

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ source qos_lib.sh
5757

5858
h1_create()
5959
{
60-
simple_if_init $h1
61-
defer simple_if_fini $h1
60+
adf_simple_if_init $h1
6261

6362
mtu_set $h1 10000
6463
defer mtu_restore $h1
@@ -70,8 +69,7 @@ h1_create()
7069

7170
h2_create()
7271
{
73-
simple_if_init $h2
74-
defer simple_if_fini $h2
72+
adf_simple_if_init $h2
7573

7674
mtu_set $h2 10000
7775
defer mtu_restore $h2
@@ -83,8 +81,7 @@ h2_create()
8381

8482
h3_create()
8583
{
86-
simple_if_init $h3
87-
defer simple_if_fini $h3
84+
adf_simple_if_init $h3
8885

8986
mtu_set $h3 10000
9087
defer mtu_restore $h3
@@ -225,8 +222,7 @@ setup_prepare()
225222

226223
h3mac=$(mac_get $h3)
227224

228-
vrf_prepare
229-
defer vrf_cleanup
225+
adf_vrf_prepare
230226

231227
h1_create
232228
h2_create

tools/testing/selftests/drivers/net/mlxsw/qos_max_descriptors.sh

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ mlxsw_only_on_spectrum 2+ || exit
6868

6969
h1_create()
7070
{
71-
simple_if_init $h1
72-
defer simple_if_fini $h1
71+
adf_simple_if_init $h1
7372

7473
vlan_create $h1 111 v$h1 192.0.2.33/28
7574
defer vlan_destroy $h1 111
@@ -78,8 +77,7 @@ h1_create()
7877

7978
h2_create()
8079
{
81-
simple_if_init $h2
82-
defer simple_if_fini $h2
80+
adf_simple_if_init $h2
8381

8482
vlan_create $h2 111 v$h2 192.0.2.34/28
8583
defer vlan_destroy $h2 111
@@ -178,8 +176,7 @@ setup_prepare()
178176

179177
h2mac=$(mac_get $h2)
180178

181-
vrf_prepare
182-
defer vrf_cleanup
179+
adf_vrf_prepare
183180

184181
h1_create
185182
h2_create

tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,15 @@ source qos_lib.sh
7272

7373
h1_create()
7474
{
75-
simple_if_init $h1 192.0.2.65/28
76-
defer simple_if_fini $h1 192.0.2.65/28
75+
adf_simple_if_init $h1 192.0.2.65/28
7776

7877
mtu_set $h1 10000
7978
defer mtu_restore $h1
8079
}
8180

8281
h2_create()
8382
{
84-
simple_if_init $h2
85-
defer simple_if_fini $h2
83+
adf_simple_if_init $h2
8684

8785
mtu_set $h2 10000
8886
defer mtu_restore $h2
@@ -94,8 +92,7 @@ h2_create()
9492

9593
h3_create()
9694
{
97-
simple_if_init $h3 192.0.2.66/28
98-
defer simple_if_fini $h3 192.0.2.66/28
95+
adf_simple_if_init $h3 192.0.2.66/28
9996

10097
mtu_set $h3 10000
10198
defer mtu_restore $h3
@@ -196,8 +193,7 @@ setup_prepare()
196193

197194
h3mac=$(mac_get $h3)
198195

199-
vrf_prepare
200-
defer vrf_cleanup
196+
adf_vrf_prepare
201197

202198
h1_create
203199
h2_create

tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,7 @@ host_create()
100100
local dev=$1; shift
101101
local host=$1; shift
102102

103-
simple_if_init $dev
104-
defer simple_if_fini $dev
103+
adf_simple_if_init $dev
105104

106105
mtu_set $dev 10000
107106
defer mtu_restore $dev
@@ -250,8 +249,7 @@ setup_prepare()
250249

251250
h3_mac=$(mac_get $h3)
252251

253-
vrf_prepare
254-
defer vrf_cleanup
252+
adf_vrf_prepare
255253

256254
h1_create
257255
h2_create

tools/testing/selftests/net/fdb_notify.sh

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,46 +40,46 @@ do_test_dup()
4040

4141
test_dup_bridge()
4242
{
43-
ip_link_add br up type bridge vlan_filtering 1
43+
adf_ip_link_add br up type bridge vlan_filtering 1
4444
do_test_dup add "bridge" dev br self
4545
do_test_dup del "bridge" dev br self
4646
}
4747

4848
test_dup_vxlan_self()
4949
{
50-
ip_link_add br up type bridge vlan_filtering 1
51-
ip_link_add vx up type vxlan id 2000 dstport 4789
52-
ip_link_set_master vx br
50+
adf_ip_link_add br up type bridge vlan_filtering 1
51+
adf_ip_link_add vx up type vxlan id 2000 dstport 4789
52+
adf_ip_link_set_master vx br
5353

5454
do_test_dup add "vxlan" dev vx self dst 192.0.2.1
5555
do_test_dup del "vxlan" dev vx self dst 192.0.2.1
5656
}
5757

5858
test_dup_vxlan_master()
5959
{
60-
ip_link_add br up type bridge vlan_filtering 1
61-
ip_link_add vx up type vxlan id 2000 dstport 4789
62-
ip_link_set_master vx br
60+
adf_ip_link_add br up type bridge vlan_filtering 1
61+
adf_ip_link_add vx up type vxlan id 2000 dstport 4789
62+
adf_ip_link_set_master vx br
6363

6464
do_test_dup add "vxlan master" dev vx master
6565
do_test_dup del "vxlan master" dev vx master
6666
}
6767

6868
test_dup_macvlan_self()
6969
{
70-
ip_link_add dd up type dummy
71-
ip_link_add mv up link dd type macvlan mode passthru
70+
adf_ip_link_add dd up type dummy
71+
adf_ip_link_add mv up link dd type macvlan mode passthru
7272

7373
do_test_dup add "macvlan self" dev mv self
7474
do_test_dup del "macvlan self" dev mv self
7575
}
7676

7777
test_dup_macvlan_master()
7878
{
79-
ip_link_add br up type bridge vlan_filtering 1
80-
ip_link_add dd up type dummy
81-
ip_link_add mv up link dd type macvlan mode passthru
82-
ip_link_set_master mv br
79+
adf_ip_link_add br up type bridge vlan_filtering 1
80+
adf_ip_link_add dd up type dummy
81+
adf_ip_link_add mv up link dd type macvlan mode passthru
82+
adf_ip_link_set_master mv br
8383

8484
do_test_dup add "macvlan master" dev mv self
8585
do_test_dup del "macvlan master" dev mv self

tools/testing/selftests/net/forwarding/README

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,21 @@ o Code shall be checked using ShellCheck [1] prior to submission.
5757

5858
1. https://www.shellcheck.net/
5959

60+
Cleanups
61+
--------
62+
63+
o lib.sh brings in defer.sh (by way of ../lib.sh) by default. Consider
64+
making use of the defer primitive to schedule automatic cleanups. This
65+
makes it harder to forget to remove a temporary netdevice, kill a running
66+
process or perform other cleanup when the test script is interrupted.
67+
68+
o When adding a helper that dirties the environment, but schedules all
69+
necessary cleanups through defer, consider prefixing it adf_ for
70+
consistency with lib.sh and ../lib.sh helpers. This serves as an
71+
immediately visible bit of documentation about the helper API.
72+
73+
o Definitely do the above for any new code in lib.sh, if practical.
74+
6075
Customization
6176
=============
6277

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,27 +26,25 @@ source lib.sh
2626

2727
h1_create()
2828
{
29-
simple_if_init "$h1" 192.0.2.1/28
30-
defer simple_if_fini "$h1" 192.0.2.1/28
29+
adf_simple_if_init "$h1" 192.0.2.1/28
3130
}
3231

3332
h2_create()
3433
{
35-
simple_if_init "$h2" 192.0.2.2/28
36-
defer simple_if_fini "$h2" 192.0.2.2/28
34+
adf_simple_if_init "$h2" 192.0.2.2/28
3735
}
3836

3937
switch_create()
4038
{
41-
ip_link_add br1 type bridge vlan_filtering 0 mcast_snooping 0 \
39+
adf_ip_link_add br1 type bridge vlan_filtering 0 mcast_snooping 0 \
4240
ageing_time "$LOW_AGEING_TIME"
43-
ip_link_set_up br1
41+
adf_ip_link_set_up br1
4442

45-
ip_link_set_master "$swp1" br1
46-
ip_link_set_up "$swp1"
43+
adf_ip_link_set_master "$swp1" br1
44+
adf_ip_link_set_up "$swp1"
4745

48-
ip_link_set_master "$swp2" br1
49-
ip_link_set_up "$swp2"
46+
adf_ip_link_set_master "$swp2" br1
47+
adf_ip_link_set_up "$swp2"
5048
}
5149

5250
setup_prepare()
@@ -57,8 +55,7 @@ setup_prepare()
5755
swp2=${NETIFS[p3]}
5856
h2=${NETIFS[p4]}
5957

60-
vrf_prepare
61-
defer vrf_cleanup
58+
adf_vrf_prepare
6259

6360
h1_create
6461
h2_create

0 commit comments

Comments
 (0)