salt/tests/pytests/scenarios/dns/conftest.py
Daniel A. Wozniak ddcfb2e183 Update docs for master dns changes
Update docs to use master_alive_interval to detect master ip changes via
DNS.
2024-04-25 10:16:46 -07:00

94 lines
2.3 KiB
Python

import logging
import pathlib
import subprocess
import pytest
log = logging.getLogger(__name__)
@pytest.fixture(scope="package")
def master_alive_interval():
return 5
class HostsFile:
"""
Simple helper class for tests that need to modify /etc/hosts.
"""
def __init__(self, path, orig_text):
self._path = path
self._orig_text = orig_text
@property
def orig_text(self):
return self._orig_text
def __getattr__(self, key):
if key in ["_path", "_orig_text", "orig_text"]:
return self.__getattribute__(key)
return getattr(self._path, key)
@pytest.fixture
def etc_hosts():
hosts = pathlib.Path("/etc/hosts")
orig_text = hosts.read_text(encoding="utf-8")
hosts = HostsFile(hosts, orig_text)
try:
yield hosts
finally:
hosts.write_text(orig_text)
@pytest.fixture(scope="package")
def master(request, salt_factories):
subprocess.check_output(["ip", "addr", "add", "172.16.0.1/32", "dev", "lo"])
config_defaults = {
"open_mode": True,
"transport": request.config.getoption("--transport"),
}
config_overrides = {
"interface": "0.0.0.0",
}
factory = salt_factories.salt_master_daemon(
"master",
defaults=config_defaults,
overrides=config_overrides,
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
)
with factory.started(start_timeout=180):
yield factory
try:
subprocess.check_output(["ip", "addr", "del", "172.16.0.1/32", "dev", "lo"])
except subprocess.CalledProcessError:
pass
@pytest.fixture(scope="package")
def salt_cli(master):
return master.salt_cli(timeout=180)
@pytest.fixture(scope="package")
def minion(master, master_alive_interval):
config_defaults = {
"transport": master.config["transport"],
}
port = master.config["ret_port"]
config_overrides = {
"master": f"master.local:{port}",
"publish_port": master.config["publish_port"],
"master_alive_interval": master_alive_interval,
}
factory = master.salt_minion_daemon(
"minion",
defaults=config_defaults,
overrides=config_overrides,
extra_cli_arguments_after_first_start_failure=["--log-level=info"],
)
return factory