tc-testing: Add command timeout feature to tdc
Using an attribute set in the tdc_config.py file, limit the amount of time tdc will wait for an executed command to complete and prevent the script from hanging entirely. This timeout will be applied to all executed commands. Signed-off-by: Lucas Bates <lucasb@mojatatu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
0fbe82e628
Коммит
d37e56df23
|
@ -131,12 +131,16 @@ def exec_cmd(args, pm, stage, command):
|
|||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
env=ENVIR)
|
||||
(rawout, serr) = proc.communicate()
|
||||
|
||||
if proc.returncode != 0 and len(serr) > 0:
|
||||
foutput = serr.decode("utf-8", errors="ignore")
|
||||
else:
|
||||
foutput = rawout.decode("utf-8", errors="ignore")
|
||||
try:
|
||||
(rawout, serr) = proc.communicate(timeout=NAMES['TIMEOUT'])
|
||||
if proc.returncode != 0 and len(serr) > 0:
|
||||
foutput = serr.decode("utf-8", errors="ignore")
|
||||
else:
|
||||
foutput = rawout.decode("utf-8", errors="ignore")
|
||||
except subprocess.TimeoutExpired:
|
||||
foutput = "Command \"{}\" timed out\n".format(command)
|
||||
proc.returncode = 255
|
||||
|
||||
proc.stdout.close()
|
||||
proc.stderr.close()
|
||||
|
@ -438,6 +442,8 @@ def check_default_settings(args, remaining, pm):
|
|||
NAMES['TC'] = args.path
|
||||
if args.device != None:
|
||||
NAMES['DEV2'] = args.device
|
||||
if 'TIMEOUT' not in NAMES:
|
||||
NAMES['TIMEOUT'] = None
|
||||
if not os.path.isfile(NAMES['TC']):
|
||||
print("The specified tc path " + NAMES['TC'] + " does not exist.")
|
||||
exit(1)
|
||||
|
|
|
@ -15,6 +15,8 @@ NAMES = {
|
|||
'DEV1': 'v0p1',
|
||||
'DEV2': '',
|
||||
'BATCH_FILE': './batch.txt',
|
||||
# Length of time in seconds to wait before terminating a command
|
||||
'TIMEOUT': 12,
|
||||
# Name of the namespace to use
|
||||
'NS': 'tcut',
|
||||
# Directory containing eBPF test programs
|
||||
|
|
Загрузка…
Ссылка в новой задаче