Page MenuHomeSoftware Heritage

D8225.id29670.diff
No OneTemporary

D8225.id29670.diff

diff --git a/docker/tests/conftest.py b/docker/tests/conftest.py
--- a/docker/tests/conftest.py
+++ b/docker/tests/conftest.py
@@ -5,7 +5,6 @@
from os.path import join
import re
-import subprocess
import time
from typing import Generator, Mapping, Tuple
from urllib.parse import urljoin
@@ -36,67 +35,78 @@
</entry>
"""
+# wait-for-it timout
+WFI_TIMEOUT = 60
+
+@pytest.fixture(scope="session")
+def docker_host():
+ return testinfra.get_host("local://")
+
+@pytest.fixture(scope="session")
+def compose_cmd(docker_host):
+ try:
+ docker_host.check_output("docker compose version")
+ return "docker compose"
+ except AssertionError:
+ print("Fall back to old docker-compose command")
+ return "docker-compose"
+
# scope='session' so we use the same container for all the tests;
@pytest.fixture(scope="session")
-def docker_compose(request):
+def docker_compose(request, docker_host, compose_cmd):
# start the whole cluster
- subprocess.check_output(["docker-compose", "up", "-d"])
- yield
- # and stop it
- subprocess.check_call(["docker-compose", "down", "-v"])
+ docker_host.check_output(f"{compose_cmd} up -d")
+ # small hack: add a helper func to docker_host; so it's not necessary to
+ # use all 3 docker_compose, docker_host and compose_cmd fixtures everywhere
+ docker_host.check_compose_output = lambda command: docker_host.check_output(f"{compose_cmd} {command}")
+ yield docker_host
-@pytest.fixture(scope="session")
-def wfi_timeout():
- """
- wait-for-it timeout in seconds
- """
- return 60
+ # and stop the cluster
+ docker_host.check_output(f"{compose_cmd} down -v")
@pytest.fixture(scope="session")
-def scheduler_host(request, docker_compose, wfi_timeout):
+def scheduler_host(request, docker_compose):
# run a container in which test commands are executed
docker_id = (
- subprocess.check_output(
- ["docker-compose", "run", "-d", "swh-scheduler", "shell", "sleep", "1h"]
+ docker_compose.check_compose_output(
+ "run -d swh-scheduler shell sleep 1h"
)
- .decode()
.strip()
)
scheduler_host = testinfra.get_host("docker://" + docker_id)
- scheduler_host.check_output(f"wait-for-it swh-scheduler:5008 -t {wfi_timeout}")
- scheduler_host.check_output(f"wait-for-it swh-storage:5002 -t {wfi_timeout}")
+ scheduler_host.check_output(f"wait-for-it swh-scheduler:5008 -t {WFI_TIMEOUT}")
+ scheduler_host.check_output(f"wait-for-it swh-storage:5002 -t {WFI_TIMEOUT}")
# return a testinfra connection to the container
yield scheduler_host
# at the end of the test suite, destroy the container
- subprocess.check_call(["docker", "rm", "-f", docker_id])
+ docker_compose.check_output(f"docker rm -f {docker_id}")
# scope='session' so we use the same container for all the tests;
@pytest.fixture(scope="session")
-def deposit_host(request, docker_compose, wfi_timeout):
+def deposit_host(request, docker_compose):
# run a container in which test commands are executed
docker_id = (
- subprocess.check_output(
- ["docker-compose", "run", "-d", "swh-deposit", "shell", "sleep", "1h"]
+ docker_compose.check_compose_output(
+ "run -d swh-deposit shell sleep 1h"
)
- .decode()
.strip()
)
deposit_host = testinfra.get_host("docker://" + docker_id)
deposit_host.check_output("echo 'print(\"Hello World!\")\n' > /tmp/hello.py")
deposit_host.check_output("tar -C /tmp -czf /tmp/archive.tgz /tmp/hello.py")
deposit_host.check_output(f"echo '{SAMPLE_METADATA}' > /tmp/metadata.xml")
- deposit_host.check_output(f"wait-for-it swh-deposit:5006 -t {wfi_timeout}")
+ deposit_host.check_output(f"wait-for-it swh-deposit:5006 -t {WFI_TIMEOUT}")
# return a testinfra connection to the container
yield deposit_host
# at the end of the test suite, destroy the container
- subprocess.check_call(["docker", "rm", "-f", docker_id])
+ docker_compose.check_output(f"docker rm -f {docker_id}")
@pytest.fixture(scope="session")
@@ -105,7 +115,7 @@
@pytest.fixture(scope="session")
-def git_origin(scheduler_host, git_url):
+def git_origin(docker_compose, scheduler_host, git_url):
task = scheduler_host.check_output(f"swh scheduler task add load-git url={git_url}")
taskid = re.search(r"^Task (?P<id>\d+)$", task, flags=re.MULTILINE).group("id")
assert int(taskid) > 0
@@ -121,13 +131,13 @@
time.sleep(1)
continue
if "[failed]" in status:
- loader_logs = subprocess.check_output(
- ["docker-compose", "logs", "swh-loader"]
+ loader_logs = docker_compose.check_compose_output(
+ "logs swh-loader"
)
assert False, (
"Loading execution failed\n"
f"status: {status}\n"
- f"loader logs: " + loader_logs.decode(errors="replace")
+ f"loader logs: " + loader_logs
)
assert False, f"Loading execution failed, task status is {status}"
return git_url

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 2, 10:54 AM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3230224

Event Timeline