Commit 4b480cfb authored by Pedro Tammela's avatar Pedro Tammela Committed by Jakub Kicinski

selftests: tc-testing: timeout on unbounded loops

In the spirit of failing early, timeout on unbounded loops that take
longer than 20 ticks to complete. Such loops are to ensure that objects
created are already visible so tests can proceed without any issues.

If a test setup takes more than 20 ticks to see an object, there's
definetely something wrong.
Signed-off-by: default avatarPedro Tammela <pctammela@mojatatu.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
Link: https://lore.kernel.org/r/20231117171208.2066136-6-pctammela@mojatatu.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 3f2d94a4
...@@ -40,7 +40,10 @@ class SubPlugin(TdcPlugin): ...@@ -40,7 +40,10 @@ class SubPlugin(TdcPlugin):
self._ns_create() self._ns_create()
# Make sure the netns is visible in the fs # Make sure the netns is visible in the fs
ticks = 20
while True: while True:
if ticks == 0:
raise TimeoutError
self._proc_check() self._proc_check()
try: try:
ns = self.args.NAMES['NS'] ns = self.args.NAMES['NS']
...@@ -49,6 +52,7 @@ class SubPlugin(TdcPlugin): ...@@ -49,6 +52,7 @@ class SubPlugin(TdcPlugin):
break break
except: except:
time.sleep(0.1) time.sleep(0.1)
ticks -= 1
continue continue
def pre_case(self, test, test_skip): def pre_case(self, test, test_skip):
...@@ -127,7 +131,10 @@ class SubPlugin(TdcPlugin): ...@@ -127,7 +131,10 @@ class SubPlugin(TdcPlugin):
with IPRoute() as ip: with IPRoute() as ip:
ip.link('add', ifname=dev1, kind='veth', peer={'ifname': dev0, 'net_ns_fd':'/proc/1/ns/net'}) ip.link('add', ifname=dev1, kind='veth', peer={'ifname': dev0, 'net_ns_fd':'/proc/1/ns/net'})
ip.link('add', ifname=dummy, kind='dummy') ip.link('add', ifname=dummy, kind='dummy')
ticks = 20
while True: while True:
if ticks == 0:
raise TimeoutError
try: try:
dev1_idx = ip.link_lookup(ifname=dev1)[0] dev1_idx = ip.link_lookup(ifname=dev1)[0]
dummy_idx = ip.link_lookup(ifname=dummy)[0] dummy_idx = ip.link_lookup(ifname=dummy)[0]
...@@ -136,17 +143,22 @@ class SubPlugin(TdcPlugin): ...@@ -136,17 +143,22 @@ class SubPlugin(TdcPlugin):
break break
except: except:
time.sleep(0.1) time.sleep(0.1)
ticks -= 1
continue continue
netns.popns() netns.popns()
with IPRoute() as ip: with IPRoute() as ip:
ticks = 20
while True: while True:
if ticks == 0:
raise TimeoutError
try: try:
dev0_idx = ip.link_lookup(ifname=dev0)[0] dev0_idx = ip.link_lookup(ifname=dev0)[0]
ip.link('set', index=dev0_idx, state='up') ip.link('set', index=dev0_idx, state='up')
break break
except: except:
time.sleep(0.1) time.sleep(0.1)
ticks -= 1
continue continue
def _ns_create_cmds(self): def _ns_create_cmds(self):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment