Commit d37e56df authored by Lucas Bates's avatar Lucas Bates Committed by David S. Miller
Browse files

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: default avatarLucas Bates <lucasb@mojatatu.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0fbe82e6
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -131,12 +131,16 @@ def exec_cmd(args, pm, stage, command):
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        env=ENVIR)
    (rawout, serr) = proc.communicate()

    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)
+2 −0
Original line number Diff line number Diff line
@@ -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