selftests: txtimestamp: tear down setup() 'tc' and 'ip' env on EXIT
diff mbox series

Message ID 20200721145249.72153-1-paolo.pisati@canonical.com
State New
Headers show
Series
  • selftests: txtimestamp: tear down setup() 'tc' and 'ip' env on EXIT
Related show

Commit Message

Paolo Pisati July 21, 2020, 2:52 p.m. UTC
Add a cleanup() path upon exit, making it possible to run the test twice in a
row:

$ sudo bash -x ./txtimestamp.sh
+ set -e
++ ip netns identify
+ [[ '' == \r\o\o\t ]]
+ main
+ [[ 0 -eq 0 ]]
+ run_test_all
+ setup
+ tc qdisc add dev lo root netem delay 1ms
Error: Exclusivity flag on, cannot modify.

Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
---
 tools/testing/selftests/net/txtimestamp.sh | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Willem de Bruijn July 21, 2020, 3:04 p.m. UTC | #1
On Tue, Jul 21, 2020 at 10:52 AM Paolo Pisati
<paolo.pisati@canonical.com> wrote:
>
> Add a cleanup() path upon exit, making it possible to run the test twice in a
> row:
>
> $ sudo bash -x ./txtimestamp.sh
> + set -e
> ++ ip netns identify
> + [[ '' == \r\o\o\t ]]
> + main
> + [[ 0 -eq 0 ]]
> + run_test_all
> + setup
> + tc qdisc add dev lo root netem delay 1ms
> Error: Exclusivity flag on, cannot modify.
>
> Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>

The test should already clean up after itself, by being run inside a
network namespace. That is a more robust method to ensure that all
state is reset.

The issue here is that the else branch is taken in

  if [[ "$(ip netns identify)" == "root" ]]; then
          ./in_netns.sh $0 $@
  else
          main $@
  fi

because the ip netns identify usually returns an empty string, not
"root". If we fix that, no need to add additional cleanup.

Patch
diff mbox series

diff --git a/tools/testing/selftests/net/txtimestamp.sh b/tools/testing/selftests/net/txtimestamp.sh
index eea6f5193693..77f29cabff87 100755
--- a/tools/testing/selftests/net/txtimestamp.sh
+++ b/tools/testing/selftests/net/txtimestamp.sh
@@ -23,6 +23,14 @@  setup() {
 		action mirred egress redirect dev ifb_netem0
 }
 
+cleanup() {
+	tc filter del dev lo parent ffff:
+	tc qdisc del dev lo handle ffff: ingress
+	tc qdisc del dev ifb_netem0 root
+	ip link del ifb_netem0
+	tc qdisc del dev lo root
+}
+
 run_test_v4v6() {
 	# SND will be delayed 1000us
 	# ACK will be delayed 6000us: 1 + 2 ms round-trip
@@ -75,6 +83,8 @@  main() {
 	fi
 }
 
+trap cleanup EXIT
+
 if [[ "$(ip netns identify)" == "root" ]]; then
 	./in_netns.sh $0 $@
 else