summaryrefslogtreecommitdiff
path: root/tests/helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/helpers.py')
-rw-r--r--tests/helpers.py27
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