aboutsummaryrefslogtreecommitdiff
path: root/tools/testing/selftests/net/lib/py/nsim.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/testing/selftests/net/lib/py/nsim.py')
-rw-r--r--tools/testing/selftests/net/lib/py/nsim.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/tools/testing/selftests/net/lib/py/nsim.py b/tools/testing/selftests/net/lib/py/nsim.py
index 97457aca7e08..94aa32f59fdb 100644
--- a/tools/testing/selftests/net/lib/py/nsim.py
+++ b/tools/testing/selftests/net/lib/py/nsim.py
@@ -84,6 +84,17 @@ class NetdevSimDev:
for port_index in range(port_count):
self.nsims.append(self._make_port(port_index, ifnames[port_index]))
+ self.removed = False
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, ex_type, ex_value, ex_tb):
+ """
+ __exit__ gets called at the end of a "with" block.
+ """
+ self.remove()
+
def _make_port(self, port_index, ifname):
return NetdevSim(self, port_index, ifname, self.ns)
@@ -112,7 +123,9 @@ class NetdevSimDev:
raise Exception("netdevices did not appear within timeout")
def remove(self):
- self.ctrl_write("del_device", "%u" % (self.addr, ))
+ if not self.removed:
+ self.ctrl_write("del_device", "%u" % (self.addr, ))
+ self.removed = True
def remove_nsim(self, nsim):
self.nsims.remove(nsim)