summaryrefslogtreecommitdiff
path: root/test/python/dockerpy/tests/common.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/python/dockerpy/tests/common.py')
-rw-r--r--test/python/dockerpy/tests/common.py105
1 files changed, 105 insertions, 0 deletions
diff --git a/test/python/dockerpy/tests/common.py b/test/python/dockerpy/tests/common.py
new file mode 100644
index 000000000..f83f4076f
--- /dev/null
+++ b/test/python/dockerpy/tests/common.py
@@ -0,0 +1,105 @@
+import os
+import pathlib
+import subprocess
+import sys
+import time
+
+from docker import APIClient
+
+from . import constant
+
+alpineDict = {
+ "name": "docker.io/library/alpine:latest",
+ "shortName": "alpine",
+ "tarballName": "alpine.tar"
+}
+
+
+def get_client():
+ client = APIClient(base_url="http://localhost:8080", timeout=15)
+ return client
+
+
+client = get_client()
+
+
+def podman():
+ binary = os.getenv("PODMAN_BINARY")
+ if binary is None:
+ binary = "../../../bin/podman"
+ return binary
+
+
+def restore_image_from_cache(TestClass):
+ alpineImage = os.path.join(constant.ImageCacheDir,
+ alpineDict["tarballName"])
+ if not os.path.exists(alpineImage):
+ os.makedirs(constant.ImageCacheDir, exist_ok=True)
+ client.pull(constant.ALPINE)
+ image = client.get_image(constant.ALPINE)
+ tarball = open(alpineImage, mode="wb")
+ for frame in image:
+ tarball.write(frame)
+ tarball.close()
+ else:
+ subprocess.run(
+ [podman(), "load", "-i", alpineImage],
+ shell=False,
+ stdin=subprocess.DEVNULL,
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL,
+ check=True,
+ )
+
+
+def flush_image_cache(TestCase):
+ for f in pathlib.Path(constant.ImageCacheDir).glob("*"):
+ f.unlink(f)
+
+
+def run_top_container():
+ c = client.create_container(image=constant.ALPINE,
+ command='/bin/sleep 5',
+ name=constant.TOP)
+ client.start(container=c.get("Id"))
+ return c.get("Id")
+
+
+def enable_sock(TestClass):
+ TestClass.podman = subprocess.Popen(
+ [
+ podman(), "system", "service", "tcp:localhost:8080",
+ "--log-level=debug", "--time=0"
+ ],
+ shell=False,
+ stdin=subprocess.DEVNULL,
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL,
+ )
+ time.sleep(2)
+
+
+def terminate_connection(TestClass):
+ TestClass.podman.terminate()
+ stdout, stderr = TestClass.podman.communicate(timeout=0.5)
+ if stdout:
+ print("\nService Stdout:\n" + stdout.decode('utf-8'))
+ if stderr:
+ print("\nService Stderr:\n" + stderr.decode('utf-8'))
+
+ if TestClass.podman.returncode > 0:
+ sys.stderr.write("podman exited with error code {}\n".format(
+ TestClass.podman.returncode))
+ sys.exit(2)
+
+
+def remove_all_containers():
+ containers = client.containers(quiet=True)
+ for c in containers:
+ client.remove_container(container=c.get("Id"), force=True)
+
+
+def remove_all_images():
+ allImages = client.images()
+ for image in allImages:
+ client.remove_image(image, force=True)