From e37e984427e2ed60f17a6113bc0a07b895859523 Mon Sep 17 00:00:00 2001 From: Pedro Algarvio Date: Sun, 26 Nov 2023 07:23:23 +0000 Subject: [PATCH] Pull the containers prior to starting the daemons. Signed-off-by: Pedro Algarvio --- .../scenarios/performance/test_performance.py | 75 +++++++++---------- 1 file changed, 37 insertions(+), 38 deletions(-) diff --git a/tests/pytests/scenarios/performance/test_performance.py b/tests/pytests/scenarios/performance/test_performance.py index 22aad753bda..12749a6afd8 100644 --- a/tests/pytests/scenarios/performance/test_performance.py +++ b/tests/pytests/scenarios/performance/test_performance.py @@ -3,14 +3,12 @@ import os import shutil import sys -import attr import pytest from pytestshellutils.utils import ports -from saltfactories.daemons import master -from saltfactories.daemons.container import SaltDaemon, SaltMinion +from saltfactories.daemons.container import SaltMaster, SaltMinion from saltfactories.utils import random_string -from salt.version import SaltVersionsInfo, __version__ +from salt.version import SaltVersionsInfo from tests.conftest import CODE_DIR log = logging.getLogger(__name__) @@ -20,37 +18,34 @@ pytestmark = [ ] -@attr.s(kw_only=True, slots=True) -class SaltMaster(SaltDaemon, master.SaltMaster): - """ - Salt minion daemon implementation running in a docker container. - """ - - def get_display_name(self): - """ - Returns a human readable name for the factory. - """ - return master.SaltMaster.get_display_name(self) - - def get_check_events(self): - """ - Return salt events to check. - - Return a list of tuples in the form of `(master_id, event_tag)` check against to ensure the daemon is running - """ - return master.SaltMaster.get_check_events(self) - - @pytest.fixture def prev_version(): return str(SaltVersionsInfo.previous_release().info[0]) +@pytest.fixture +def prev_container_image(shell, prev_version): + container = f"ghcr.io/saltstack/salt-ci-containers/salt:{prev_version}" + ret = shell.run("docker", "pull", container, check=False) + if ret.returncode: + pytest.skip(f"Failed to pull docker image '{container}':\n{ret}") + return container + + @pytest.fixture def curr_version(): return str(SaltVersionsInfo.current_release().info[0]) +@pytest.fixture +def curr_container_image(shell): + container = "ghcr.io/saltstack/salt-ci-containers/salt:latest" + ret = shell.run("docker", "pull", container, check=False) + if ret.returncode: + pytest.skip(f"Failed to pull docker image '{container}':\n{ret}") + return container + + @pytest.fixture def prev_master_id(): return random_string("master-perf-prev-", uppercase=False) @@ -64,6 +59,7 @@ def prev_master( docker_network_name, prev_version, prev_master_id, + prev_container_image, ): root_dir = salt_factories.get_root_dir_for_daemon(prev_master_id) conf_dir = root_dir / "conf" @@ -93,14 +89,14 @@ def prev_master( overrides=config_overrides, factory_class=SaltMaster, base_script_args=["--log-level=debug"], - image=f"ghcr.io/saltstack/salt-ci-containers/salt:{prev_version}", + image=prev_container_image, container_run_kwargs={ "network": docker_network_name, "hostname": prev_master_id, }, start_timeout=120, - max_start_attempts=1, - pull_before_start=True, + max_start_attempts=3, + pull_before_start=False, skip_on_pull_failure=True, skip_if_docker_client_not_connectable=True, ) @@ -138,6 +134,7 @@ def prev_minion( prev_version, host_docker_network_ip_address, docker_network_name, + prev_container_image, ): config_overrides = { "master": prev_master.id, @@ -154,14 +151,14 @@ def prev_minion( overrides=config_overrides, factory_class=SaltMinion, base_script_args=["--log-level=debug"], - image=f"ghcr.io/saltstack/salt-ci-containers/salt:{prev_version}", + image=prev_container_image, container_run_kwargs={ "network": docker_network_name, "hostname": prev_minion_id, }, - start_timeout=60, - max_start_attempts=1, - pull_before_start=True, + start_timeout=120, + max_start_attempts=3, + pull_before_start=False, skip_on_pull_failure=True, skip_if_docker_client_not_connectable=True, ) @@ -220,6 +217,7 @@ def curr_master( host_docker_network_ip_address, docker_network_name, curr_master_id, + curr_container_image, ): root_dir = salt_factories.get_root_dir_for_daemon(curr_master_id) conf_dir = root_dir / "conf" @@ -251,7 +249,7 @@ def curr_master( overrides=config_overrides, factory_class=SaltMaster, base_script_args=["--log-level=debug"], - image="ghcr.io/saltstack/salt-ci-containers/salt:current", + image=curr_container_image, container_run_kwargs={ "network": docker_network_name, "hostname": curr_master_id, @@ -261,8 +259,8 @@ def curr_master( }, }, start_timeout=120, - max_start_attempts=1, - pull_before_start=True, + max_start_attempts=3, + pull_before_start=False, skip_on_pull_failure=True, skip_if_docker_client_not_connectable=True, ) @@ -301,6 +299,7 @@ def curr_minion( curr_master, host_docker_network_ip_address, docker_network_name, + curr_container_image, ): config_overrides = { "master": curr_master.id, @@ -317,7 +316,7 @@ def curr_minion( overrides=config_overrides, factory_class=SaltMinion, base_script_args=["--log-level=debug"], - image="ghcr.io/saltstack/salt-ci-containers/salt:current", + image=curr_container_image, container_run_kwargs={ "network": docker_network_name, "hostname": curr_minion_id, @@ -327,8 +326,8 @@ def curr_minion( }, }, start_timeout=120, - max_start_attempts=1, - pull_before_start=True, + max_start_attempts=3, + pull_before_start=False, skip_on_pull_failure=True, skip_if_docker_client_not_connectable=True, )