...

Text file src/github.com/datawire/ambassador/v2/python/tests/runutils.py

Documentation: github.com/datawire/ambassador/v2/python/tests

     1import subprocess
     2import time
     3
     4
     5def run_and_assert(command, communicate=True):
     6    print(f"Running command {command}")
     7    output = subprocess.Popen(command, stdout=subprocess.PIPE)
     8    if communicate:
     9        stdout, stderr = output.communicate()
    10        print("STDOUT", stdout.decode("utf-8") if stdout is not None else None)
    11        print("STDERR", stderr.decode("utf-8") if stderr is not None else None)
    12        assert output.returncode == 0, "non-zero exit status: %d" % output.returncode
    13        return stdout.decode("utf-8") if stdout is not None else None
    14    return None
    15
    16
    17def run_with_retry(command, retries=0):
    18    print(f"Running command {command}")
    19    returncode = -1
    20    decoded = ""
    21    tries = 0
    22    max_tries = retries + 1
    23    while returncode != 0 and tries < max_tries:
    24        output = subprocess.Popen(command, stdout=subprocess.PIPE)
    25        if tries > 0:
    26            print("SLEEPING 5 seconds, TRIES=%d" % tries)
    27            time.sleep(5)
    28        stdout, stderr = output.communicate()
    29        print("STDOUT", stdout.decode("utf-8") if stdout is not None else None)
    30        print("STDERR", stderr.decode("utf-8") if stderr is not None else None)
    31        returncode = output.returncode
    32        decoded = stdout.decode("utf-8") if stdout is not None else None
    33        tries = tries + 1
    34    assert returncode == 0, "non-zero exit status: %d" % output.returncode
    35    return decoded

View as plain text