selftests: ETS: 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>
This commit is contained in:
Petr Machata 2024-10-17 11:45:48 +02:00 committed by Paolo Abeni
parent a1b3741dcf
commit cc3e7ee15d
4 changed files with 50 additions and 78 deletions

View File

@ -21,6 +21,7 @@ switch_create()
# Create a bottleneck so that the DWRR process can kick in.
tc qdisc replace dev $swp2 root handle 3: tbf rate 1gbit \
burst 128K limit 1G
defer tc qdisc del dev $swp2 root handle 3:
ets_switch_create
@ -30,16 +31,27 @@ switch_create()
# for the DWRR process.
devlink_port_pool_th_save $swp1 0
devlink_port_pool_th_set $swp1 0 12
defer devlink_port_pool_th_restore $swp1 0
devlink_tc_bind_pool_th_save $swp1 0 ingress
devlink_tc_bind_pool_th_set $swp1 0 ingress 0 12
defer devlink_tc_bind_pool_th_restore $swp1 0 ingress
devlink_port_pool_th_save $swp2 4
devlink_port_pool_th_set $swp2 4 12
defer devlink_port_pool_th_restore $swp2 4
devlink_tc_bind_pool_th_save $swp2 7 egress
devlink_tc_bind_pool_th_set $swp2 7 egress 4 5
defer devlink_tc_bind_pool_th_restore $swp2 7 egress
devlink_tc_bind_pool_th_save $swp2 6 egress
devlink_tc_bind_pool_th_set $swp2 6 egress 4 5
defer devlink_tc_bind_pool_th_restore $swp2 6 egress
devlink_tc_bind_pool_th_save $swp2 5 egress
devlink_tc_bind_pool_th_set $swp2 5 egress 4 5
defer devlink_tc_bind_pool_th_restore $swp2 5 egress
# Note: sch_ets_core.sh uses VLAN ingress-qos-map to assign packet
# priorities at $swp1 based on their 802.1p headers. ingress-qos-map is
@ -47,20 +59,6 @@ switch_create()
# 1:1, which is the mapping currently hard-coded by the driver.
}
switch_destroy()
{
devlink_tc_bind_pool_th_restore $swp2 5 egress
devlink_tc_bind_pool_th_restore $swp2 6 egress
devlink_tc_bind_pool_th_restore $swp2 7 egress
devlink_port_pool_th_restore $swp2 4
devlink_tc_bind_pool_th_restore $swp1 0 ingress
devlink_port_pool_th_restore $swp1 0
ets_switch_destroy
tc qdisc del dev $swp2 root handle 3:
}
# Callback from sch_ets_tests.sh
collect_stats()
{

View File

@ -24,15 +24,10 @@ switch_create()
# Create a bottleneck so that the DWRR process can kick in.
tc qdisc add dev $swp2 root handle 1: tbf \
rate 1Gbit burst 1Mbit latency 100ms
defer tc qdisc del dev $swp2 root
PARENT="parent 1:"
}
switch_destroy()
{
ets_switch_destroy
tc qdisc del dev $swp2 root
}
# Callback from sch_ets_tests.sh
collect_stats()
{

View File

@ -166,89 +166,78 @@ h1_create()
local i;
simple_if_init $h1
defer simple_if_fini $h1
mtu_set $h1 9900
defer mtu_restore $h1
for i in {0..2}; do
vlan_create $h1 1$i v$h1 $(sip $i)/28
defer vlan_destroy $h1 1$i
ip link set dev $h1.1$i type vlan egress 0:$i
done
}
h1_destroy()
{
local i
for i in {0..2}; do
vlan_destroy $h1 1$i
done
mtu_restore $h1
simple_if_fini $h1
}
h2_create()
{
local i
simple_if_init $h2
defer simple_if_fini $h2
mtu_set $h2 9900
defer mtu_restore $h2
for i in {0..2}; do
vlan_create $h2 1$i v$h2 $(dip $i)/28
defer vlan_destroy $h2 1$i
done
}
h2_destroy()
{
local i
for i in {0..2}; do
vlan_destroy $h2 1$i
done
mtu_restore $h2
simple_if_fini $h2
}
ets_switch_create()
{
local i
ip link set dev $swp1 up
defer ip link set dev $swp1 down
mtu_set $swp1 9900
defer mtu_restore $swp1
ip link set dev $swp2 up
defer ip link set dev $swp2 down
mtu_set $swp2 9900
defer mtu_restore $swp2
for i in {0..2}; do
vlan_create $swp1 1$i
defer vlan_destroy $swp1 1$i
ip link set dev $swp1.1$i type vlan ingress 0:0 1:1 2:2
vlan_create $swp2 1$i
defer vlan_destroy $swp2 1$i
ip link add dev br1$i type bridge
defer ip link del dev br1$i
ip link set dev $swp1.1$i master br1$i
defer ip link set dev $swp1.1$i nomaster
ip link set dev $swp2.1$i master br1$i
defer ip link set dev $swp2.1$i nomaster
ip link set dev br1$i up
defer ip link set dev br1$i down
ip link set dev $swp1.1$i up
defer ip link set dev $swp1.1$i down
ip link set dev $swp2.1$i up
done
}
ets_switch_destroy()
{
local i
ets_delete_qdisc
for i in {0..2}; do
ip link del dev br1$i
vlan_destroy $swp2 1$i
vlan_destroy $swp1 1$i
defer ip link set dev $swp2.1$i down
done
mtu_restore $swp2
ip link set dev $swp2 down
mtu_restore $swp1
ip link set dev $swp1 down
defer ets_delete_qdisc
}
setup_prepare()
@ -263,23 +252,13 @@ setup_prepare()
hut=$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 $(dip 0) " vlan 10"

View File

@ -90,6 +90,7 @@ __ets_dwrr_test()
for stream in ${streams[@]}; do
ets_start_traffic $stream
defer stop_traffic $!
done
sleep 10
@ -120,25 +121,24 @@ __ets_dwrr_test()
${d[0]} ${d[$i]}
fi
done
for stream in ${streams[@]}; do
stop_traffic
done
}
ets_dwrr_test_012()
{
__ets_dwrr_test 0 1 2
in_defer_scope \
__ets_dwrr_test 0 1 2
}
ets_dwrr_test_01()
{
__ets_dwrr_test 0 1
in_defer_scope \
__ets_dwrr_test 0 1
}
ets_dwrr_test_12()
{
__ets_dwrr_test 1 2
in_defer_scope \
__ets_dwrr_test 1 2
}
ets_qdisc_setup()