diff options
Diffstat (limited to 'tests/helpers.py')
-rw-r--r-- | tests/helpers.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/helpers.py b/tests/helpers.py index 529b727..1d24577 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,7 +1,9 @@ import os import os.path +import random import tarfile import tempfile +import time import docker import pytest @@ -47,3 +49,28 @@ def requires_api_version(version): ), reason="API version is too low (< {0})".format(version) ) + + +def wait_on_condition(condition, delay=0.1, timeout=40): + start_time = time.time() + while not condition(): + if time.time() - start_time > timeout: + raise AssertionError("Timeout: %s" % condition) + time.sleep(delay) + + +def random_name(): + return u'dockerpytest_{0:x}'.format(random.getrandbits(64)) + + +def force_leave_swarm(client): + """Actually force leave a Swarm. There seems to be a bug in Swarm that + occasionally throws "context deadline exceeded" errors when leaving.""" + while True: + try: + return client.swarm.leave(force=True) + except docker.errors.APIError as e: + if e.explanation == "context deadline exceeded": + continue + else: + raise |