mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Add test specific to minion start event
This commit is contained in:
parent
8e28d02e2f
commit
97ea9a11fb
4 changed files with 127 additions and 102 deletions
|
@ -803,6 +803,7 @@ def salt_factories_default_root_dir(salt_factories_default_root_dir):
|
||||||
dictionary, then that's the value used, and not the one returned by
|
dictionary, then that's the value used, and not the one returned by
|
||||||
this fixture.
|
this fixture.
|
||||||
"""
|
"""
|
||||||
|
print(f"WTF {salt_factories_default_root_dir}")
|
||||||
if os.environ.get("CI") and pytestskipmarkers.utils.platform.is_windows():
|
if os.environ.get("CI") and pytestskipmarkers.utils.platform.is_windows():
|
||||||
tempdir = pathlib.Path(
|
tempdir = pathlib.Path(
|
||||||
os.environ.get("RUNNER_TEMP", r"C:\Windows\Temp")
|
os.environ.get("RUNNER_TEMP", r"C:\Windows\Temp")
|
||||||
|
|
103
tests/pytests/integration/minion/conftest.py
Normal file
103
tests/pytests/integration/minion/conftest.py
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
import salt.utils.platform
|
||||||
|
from tests.conftest import FIPS_TESTRUN
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def salt_master_1(request, salt_factories):
|
||||||
|
config_defaults = {
|
||||||
|
"open_mode": True,
|
||||||
|
"transport": request.config.getoption("--transport"),
|
||||||
|
}
|
||||||
|
config_overrides = {
|
||||||
|
"interface": "127.0.0.1",
|
||||||
|
"fips_mode": FIPS_TESTRUN,
|
||||||
|
"publish_signing_algorithm": (
|
||||||
|
"PKCS1v15-SHA224" if FIPS_TESTRUN else "PKCS1v15-SHA1"
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
factory = salt_factories.salt_master_daemon(
|
||||||
|
"master-1",
|
||||||
|
defaults=config_defaults,
|
||||||
|
overrides=config_overrides,
|
||||||
|
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
||||||
|
)
|
||||||
|
with factory.started(start_timeout=120):
|
||||||
|
yield factory
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def salt_master_2(salt_factories, salt_master_1):
|
||||||
|
if salt.utils.platform.is_darwin() or salt.utils.platform.is_freebsd():
|
||||||
|
subprocess.check_output(["ifconfig", "lo0", "alias", "127.0.0.2", "up"])
|
||||||
|
|
||||||
|
config_defaults = {
|
||||||
|
"open_mode": True,
|
||||||
|
"transport": salt_master_1.config["transport"],
|
||||||
|
}
|
||||||
|
config_overrides = {
|
||||||
|
"interface": "127.0.0.2",
|
||||||
|
"fips_mode": FIPS_TESTRUN,
|
||||||
|
"publish_signing_algorithm": (
|
||||||
|
"PKCS1v15-SHA224" if FIPS_TESTRUN else "PKCS1v15-SHA1"
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
# Use the same ports for both masters, they are binding to different interfaces
|
||||||
|
for key in (
|
||||||
|
"ret_port",
|
||||||
|
"publish_port",
|
||||||
|
):
|
||||||
|
config_overrides[key] = salt_master_1.config[key]
|
||||||
|
factory = salt_factories.salt_master_daemon(
|
||||||
|
"master-2",
|
||||||
|
defaults=config_defaults,
|
||||||
|
overrides=config_overrides,
|
||||||
|
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
||||||
|
)
|
||||||
|
|
||||||
|
# The secondary salt master depends on the primarily salt master fixture
|
||||||
|
# because we need to clone the keys
|
||||||
|
for keyfile in ("master.pem", "master.pub"):
|
||||||
|
shutil.copyfile(
|
||||||
|
os.path.join(salt_master_1.config["pki_dir"], keyfile),
|
||||||
|
os.path.join(factory.config["pki_dir"], keyfile),
|
||||||
|
)
|
||||||
|
with factory.started(start_timeout=120):
|
||||||
|
yield factory
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def salt_minion_1(salt_master_1, salt_master_2):
|
||||||
|
config_defaults = {
|
||||||
|
"transport": salt_master_1.config["transport"],
|
||||||
|
}
|
||||||
|
|
||||||
|
master_1_port = salt_master_1.config["ret_port"]
|
||||||
|
master_1_addr = salt_master_1.config["interface"]
|
||||||
|
master_2_port = salt_master_2.config["ret_port"]
|
||||||
|
master_2_addr = salt_master_2.config["interface"]
|
||||||
|
config_overrides = {
|
||||||
|
"master": [
|
||||||
|
f"{master_1_addr}:{master_1_port}",
|
||||||
|
f"{master_2_addr}:{master_2_port}",
|
||||||
|
],
|
||||||
|
"test.foo": "baz",
|
||||||
|
"fips_mode": FIPS_TESTRUN,
|
||||||
|
"encryption_algorithm": "OAEP-SHA224" if FIPS_TESTRUN else "OAEP-SHA1",
|
||||||
|
"signing_algorithm": "PKCS1v15-SHA224" if FIPS_TESTRUN else "PKCS1v15-SHA1",
|
||||||
|
}
|
||||||
|
factory = salt_master_1.salt_minion_daemon(
|
||||||
|
"minion-1",
|
||||||
|
defaults=config_defaults,
|
||||||
|
overrides=config_overrides,
|
||||||
|
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
||||||
|
)
|
||||||
|
with factory.started(start_timeout=120):
|
||||||
|
yield factory
|
|
@ -1,107 +1,5 @@
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import salt.utils.platform
|
|
||||||
from tests.conftest import FIPS_TESTRUN
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def salt_master_1(request, salt_factories):
|
|
||||||
config_defaults = {
|
|
||||||
"open_mode": True,
|
|
||||||
"transport": request.config.getoption("--transport"),
|
|
||||||
}
|
|
||||||
config_overrides = {
|
|
||||||
"interface": "127.0.0.1",
|
|
||||||
"fips_mode": FIPS_TESTRUN,
|
|
||||||
"publish_signing_algorithm": (
|
|
||||||
"PKCS1v15-SHA224" if FIPS_TESTRUN else "PKCS1v15-SHA1"
|
|
||||||
),
|
|
||||||
}
|
|
||||||
|
|
||||||
factory = salt_factories.salt_master_daemon(
|
|
||||||
"master-1",
|
|
||||||
defaults=config_defaults,
|
|
||||||
overrides=config_overrides,
|
|
||||||
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
|
||||||
)
|
|
||||||
with factory.started(start_timeout=120):
|
|
||||||
yield factory
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def salt_master_2(salt_factories, salt_master_1):
|
|
||||||
if salt.utils.platform.is_darwin() or salt.utils.platform.is_freebsd():
|
|
||||||
subprocess.check_output(["ifconfig", "lo0", "alias", "127.0.0.2", "up"])
|
|
||||||
|
|
||||||
config_defaults = {
|
|
||||||
"open_mode": True,
|
|
||||||
"transport": salt_master_1.config["transport"],
|
|
||||||
}
|
|
||||||
config_overrides = {
|
|
||||||
"interface": "127.0.0.2",
|
|
||||||
"fips_mode": FIPS_TESTRUN,
|
|
||||||
"publish_signing_algorithm": (
|
|
||||||
"PKCS1v15-SHA224" if FIPS_TESTRUN else "PKCS1v15-SHA1"
|
|
||||||
),
|
|
||||||
}
|
|
||||||
|
|
||||||
# Use the same ports for both masters, they are binding to different interfaces
|
|
||||||
for key in (
|
|
||||||
"ret_port",
|
|
||||||
"publish_port",
|
|
||||||
):
|
|
||||||
config_overrides[key] = salt_master_1.config[key]
|
|
||||||
factory = salt_factories.salt_master_daemon(
|
|
||||||
"master-2",
|
|
||||||
defaults=config_defaults,
|
|
||||||
overrides=config_overrides,
|
|
||||||
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
|
||||||
)
|
|
||||||
|
|
||||||
# The secondary salt master depends on the primarily salt master fixture
|
|
||||||
# because we need to clone the keys
|
|
||||||
for keyfile in ("master.pem", "master.pub"):
|
|
||||||
shutil.copyfile(
|
|
||||||
os.path.join(salt_master_1.config["pki_dir"], keyfile),
|
|
||||||
os.path.join(factory.config["pki_dir"], keyfile),
|
|
||||||
)
|
|
||||||
with factory.started(start_timeout=120):
|
|
||||||
yield factory
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def salt_minion_1(salt_master_1, salt_master_2):
|
|
||||||
config_defaults = {
|
|
||||||
"transport": salt_master_1.config["transport"],
|
|
||||||
}
|
|
||||||
|
|
||||||
master_1_port = salt_master_1.config["ret_port"]
|
|
||||||
master_1_addr = salt_master_1.config["interface"]
|
|
||||||
master_2_port = salt_master_2.config["ret_port"]
|
|
||||||
master_2_addr = salt_master_2.config["interface"]
|
|
||||||
config_overrides = {
|
|
||||||
"master": [
|
|
||||||
f"{master_1_addr}:{master_1_port}",
|
|
||||||
f"{master_2_addr}:{master_2_port}",
|
|
||||||
],
|
|
||||||
"test.foo": "baz",
|
|
||||||
"fips_mode": FIPS_TESTRUN,
|
|
||||||
"encryption_algorithm": "OAEP-SHA224" if FIPS_TESTRUN else "OAEP-SHA1",
|
|
||||||
"signing_algorithm": "PKCS1v15-SHA224" if FIPS_TESTRUN else "PKCS1v15-SHA1",
|
|
||||||
}
|
|
||||||
factory = salt_master_1.salt_minion_daemon(
|
|
||||||
"minion-1",
|
|
||||||
defaults=config_defaults,
|
|
||||||
overrides=config_overrides,
|
|
||||||
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
|
|
||||||
)
|
|
||||||
with factory.started(start_timeout=120):
|
|
||||||
yield factory
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.timeout_unless_on_windows(360)
|
@pytest.mark.timeout_unless_on_windows(360)
|
||||||
def test_job_return(salt_master_1, salt_master_2, salt_minion_1):
|
def test_job_return(salt_master_1, salt_master_2, salt_minion_1):
|
||||||
|
|
23
tests/pytests/integration/minion/test_start_event.py
Normal file
23
tests/pytests/integration/minion/test_start_event.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
import time
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def start():
|
||||||
|
return time.time()
|
||||||
|
|
||||||
|
|
||||||
|
def test_minion_start_event(
|
||||||
|
start, event_listener, salt_master_1, salt_master_2, salt_minion_1
|
||||||
|
):
|
||||||
|
start_events = event_listener.wait_for_events(
|
||||||
|
[
|
||||||
|
(salt_master_1.id, f"salt/minion/{salt_minion_1.id}/start"),
|
||||||
|
(salt_master_2.id, f"salt/minion/{salt_minion_1.id}/start"),
|
||||||
|
],
|
||||||
|
timeout=60,
|
||||||
|
after_time=start,
|
||||||
|
)
|
||||||
|
assert not start_events.missed
|
||||||
|
assert len(start_events.matches) == 2
|
Loading…
Add table
Reference in a new issue