salt/tests/pytests/scenarios/swarm/conftest.py
Pedro Algarvio b44f80163a Reduce the swarm minions count
Newer coverage library versions consume more memory and this will avoid
consuming it all and not finishing the test suite.

Signed-off-by: Pedro Algarvio <palgarvio@vmware.com>
2023-09-29 16:12:59 +01:00

65 lines
1.9 KiB
Python

import os
from contextlib import ExitStack
import pytest
from saltfactories.utils import random_string
@pytest.fixture(scope="package")
def salt_master_factory(salt_factories):
factory = salt_factories.salt_master_daemon(
random_string("swarm-master-"),
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
)
return factory
@pytest.fixture(scope="package")
def salt_master(salt_master_factory):
with salt_master_factory.started():
yield salt_master_factory
@pytest.fixture(scope="package")
def salt_minion(salt_minion_factory):
with salt_minion_factory.started():
yield salt_minion_factory
@pytest.fixture(scope="package")
def salt_key_cli(salt_master):
assert salt_master.is_running()
return salt_master.salt_key_cli()
@pytest.fixture(scope="package")
def salt_cli(salt_master):
assert salt_master.is_running()
return salt_master.salt_cli()
@pytest.fixture(scope="package")
def minion_count():
# Allow this to be changed via an environment variable if needed
return int(os.environ.get("SALT_CI_MINION_SWARM_COUNT", 15))
@pytest.fixture(scope="package")
def minion_swarm(salt_master, minion_count):
assert salt_master.is_running()
minions = []
# We create and arbitrarily tall context stack to register the
# minions stop mechanism callback
with ExitStack() as stack:
for idx in range(minion_count):
minion_factory = salt_master.salt_minion_daemon(
random_string(f"swarm-minion-{idx}-"),
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
)
stack.enter_context(minion_factory.started())
minions.append(minion_factory)
for minion in minions:
assert minion.is_running()
yield minions
for minion in minions:
assert not minion.is_running()