def fake_version_and_paths(): if is_running_as_site_user(): return import _pytest.monkeypatch # type: ignore monkeypatch = _pytest.monkeypatch.MonkeyPatch() tmp_dir = tempfile.mkdtemp(prefix="pytest_cmk_") import cmk # TODO: handle CME case #if is_managed_repo(): # monkeypatch.setattr(cmk, "omd_version", lambda: "%s.cee" % cmk.__version__) #elif is_enterprise_repo(): if is_enterprise_repo(): monkeypatch.setattr(cmk, "omd_version", lambda: "%s.cee" % cmk.__version__) else: monkeypatch.setattr(cmk, "omd_version", lambda: "%s.cre" % cmk.__version__) monkeypatch.setattr("cmk.utils.paths.agents_dir", "%s/agents" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.checks_dir", "%s/checks" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.notifications_dir", Path(cmk_path()) / "notifications") monkeypatch.setattr("cmk.utils.paths.inventory_dir", "%s/inventory" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.check_manpages_dir", "%s/checkman" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.web_dir", "%s/web" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.omd_root", tmp_dir) monkeypatch.setattr("cmk.utils.paths.tmp_dir", os.path.join(tmp_dir, "tmp/check_mk")) monkeypatch.setattr("cmk.utils.paths.tcp_cache_dir", os.path.join(tmp_dir, "tmp/check_mk/cache")) monkeypatch.setattr( "cmk.utils.paths.data_source_cache_dir", os.path.join(tmp_dir, "tmp/check_mk/data_source_cache")) monkeypatch.setattr("cmk.utils.paths.var_dir", os.path.join(tmp_dir, "var/check_mk")) monkeypatch.setattr( "cmk.utils.paths.precompiled_checks_dir", os.path.join(tmp_dir, "var/check_mk/precompiled_checks")) monkeypatch.setattr("cmk.utils.paths.crash_dir", Path(cmk.utils.paths.var_dir) / "crashes") monkeypatch.setattr("cmk.utils.paths.include_cache_dir", os.path.join(tmp_dir, "tmp/check_mk/check_includes")) monkeypatch.setattr("cmk.utils.paths.check_mk_config_dir", os.path.join(tmp_dir, "etc/check_mk/conf.d")) monkeypatch.setattr("cmk.utils.paths.main_config_file", os.path.join(tmp_dir, "etc/check_mk/main.mk")) monkeypatch.setattr("cmk.utils.paths.default_config_dir", os.path.join(tmp_dir, "etc/check_mk")) monkeypatch.setattr("cmk.utils.paths.piggyback_dir", Path(tmp_dir) / "var/check_mk/piggyback") monkeypatch.setattr("cmk.utils.paths.piggyback_source_dir", Path(tmp_dir) / "var/check_mk/piggyback_sources") monkeypatch.setattr("cmk.utils.paths.htpasswd_file", os.path.join(tmp_dir, "etc/htpasswd"))
def main(args): if is_running_as_site_user(): raise Exception() logger.info("===============================================") logger.info("Setting up site") logger.info("===============================================") version = os.environ.get("VERSION", CMKVersion.DAILY) sf = get_site_factory(prefix="int_", update_from_git=version == "git", install_test_python_modules=True) site = sf.get_existing_site("test") if os.environ.get("REUSE"): logger.info( "Reuse previously existing site in case it exists (REUSE=1)") if not site.exists(): logger.info("Creating new site") site = sf.get_site("test") else: logger.info("Reuse existing site") site.start() else: if site.exists(): logger.info("Remove previously existing site (REUSE=0)") site.rm() logger.info("Creating new site") site = sf.get_site("test") logger.info("Site %s is ready!", site.id) logger.info("===============================================") logger.info("Switching to site context") logger.info("===============================================") try: return _execute_as_site_user(site, args) finally: if _is_dockerized(): if os.path.exists("/results"): shutil.rmtree("/results") os.mkdir("/results") with suppress(FileNotFoundError): shutil.copy(site.path("junit.xml"), "/results") with suppress(FileNotFoundError): shutil.copytree(site.path("var/log"), "/results/logs")
def pytest_cmdline_main(config): """There are 2 environments for testing: * A real Check_MK site environment (e.g. integration tests) * Python virtual environment (e.g. for unit tests) Depending on the selected "type" marker the environment is ensured or switched here.""" if not config.getoption("-T"): return # missing option is handled later context = test_types[config.getoption("-T")] if context == EXECUTE_IN_SITE and not is_running_as_site_user(): raise Exception() else: verify_virtualenv()
def main(args): if is_running_as_site_user(): raise Exception() logger.info("===============================================") logger.info("Setting up site") logger.info("===============================================") version = os.environ.get("VERSION", CMKVersion.DAILY) sf = get_site_factory(prefix="int_", update_from_git=version == "git", install_test_python_modules=True) site = sf.get_existing_site("test") if os.environ.get("REUSE"): logger.info("Reuse previously existing site in case it exists (REUSE=1)") if not site.exists(): logger.info("Creating new site") site = sf.get_site("test") else: logger.info("Reuse existing site") site.start() else: if site.exists(): logger.info("Remove previously existing site (REUSE=0)") site.rm() logger.info("Creating new site") site = sf.get_site("test") logger.info("Site %s is ready!", site.id) logger.info("===============================================") logger.info("Switching to site context") logger.info("===============================================") try: return _execute_as_site_user(site, args) finally: sf.save_results()
def fake_version_and_paths(): if is_running_as_site_user(): return import _pytest.monkeypatch # type: ignore # pylint: disable=import-outside-toplevel monkeypatch = _pytest.monkeypatch.MonkeyPatch() tmp_dir = tempfile.mkdtemp(prefix="pytest_cmk_") import cmk.utils.version as cmk_version # pylint: disable=import-outside-toplevel import cmk.utils.paths # pylint: disable=import-outside-toplevel # TODO: handle CME case #if is_managed_repo(): # monkeypatch.setattr(cmk_version, "omd_version", lambda: "%s.cee" % cmk_version.__version__) #elif is_enterprise_repo(): if is_enterprise_repo(): monkeypatch.setattr(cmk_version, "omd_version", lambda: "%s.cee" % cmk_version.__version__) else: monkeypatch.setattr(cmk_version, "omd_version", lambda: "%s.cre" % cmk_version.__version__) monkeypatch.setattr("cmk.utils.paths.agents_dir", "%s/agents" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.checks_dir", "%s/checks" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.notifications_dir", Path(cmk_path()) / "notifications") monkeypatch.setattr("cmk.utils.paths.inventory_dir", "%s/inventory" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.inventory_output_dir", os.path.join(tmp_dir, "var/check_mk/inventory")) monkeypatch.setattr("cmk.utils.paths.inventory_archive_dir", os.path.join(tmp_dir, "var/check_mk/inventory_archive")) monkeypatch.setattr("cmk.utils.paths.check_manpages_dir", "%s/checkman" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.web_dir", "%s/web" % cmk_path()) monkeypatch.setattr("cmk.utils.paths.omd_root", tmp_dir) monkeypatch.setattr("cmk.utils.paths.tmp_dir", os.path.join(tmp_dir, "tmp/check_mk")) monkeypatch.setattr("cmk.utils.paths.counters_dir", os.path.join(tmp_dir, "tmp/check_mk/counters")) monkeypatch.setattr("cmk.utils.paths.tcp_cache_dir", os.path.join(tmp_dir, "tmp/check_mk/cache")) monkeypatch.setattr("cmk.utils.paths.data_source_cache_dir", os.path.join(tmp_dir, "tmp/check_mk/data_source_cache")) monkeypatch.setattr("cmk.utils.paths.var_dir", os.path.join(tmp_dir, "var/check_mk")) monkeypatch.setattr("cmk.utils.paths.autochecks_dir", os.path.join(tmp_dir, "var/check_mk/autochecks")) monkeypatch.setattr("cmk.utils.paths.precompiled_checks_dir", os.path.join(tmp_dir, "var/check_mk/precompiled_checks")) monkeypatch.setattr("cmk.utils.paths.crash_dir", Path(cmk.utils.paths.var_dir) / "crashes") monkeypatch.setattr("cmk.utils.paths.include_cache_dir", os.path.join(tmp_dir, "tmp/check_mk/check_includes")) monkeypatch.setattr("cmk.utils.paths.check_mk_config_dir", os.path.join(tmp_dir, "etc/check_mk/conf.d")) monkeypatch.setattr("cmk.utils.paths.main_config_file", os.path.join(tmp_dir, "etc/check_mk/main.mk")) monkeypatch.setattr("cmk.utils.paths.default_config_dir", os.path.join(tmp_dir, "etc/check_mk")) monkeypatch.setattr("cmk.utils.paths.piggyback_dir", Path(tmp_dir) / "var/check_mk/piggyback") monkeypatch.setattr("cmk.utils.paths.piggyback_source_dir", Path(tmp_dir) / "var/check_mk/piggyback_sources") monkeypatch.setattr("cmk.utils.paths.htpasswd_file", os.path.join(tmp_dir, "etc/htpasswd")) monkeypatch.setattr("cmk.utils.paths.local_share_dir", Path(tmp_dir, "local/share/check_mk")) monkeypatch.setattr("cmk.utils.paths.local_checks_dir", Path(tmp_dir, "local/share/check_mk/checks")) monkeypatch.setattr("cmk.utils.paths.local_notifications_dir", Path(tmp_dir, "local/share/check_mk/notifications")) monkeypatch.setattr("cmk.utils.paths.local_inventory_dir", Path(tmp_dir, "local/share/check_mk/inventory")) monkeypatch.setattr("cmk.utils.paths.local_check_manpages_dir", Path(tmp_dir, "local/share/check_mk/checkman")) monkeypatch.setattr("cmk.utils.paths.local_agents_dir", Path(tmp_dir, "local/share/check_mk/agents")) monkeypatch.setattr("cmk.utils.paths.local_web_dir", Path(tmp_dir, "local/share/check_mk/web")) monkeypatch.setattr("cmk.utils.paths.local_pnp_templates_dir", Path(tmp_dir, "local/share/check_mk/pnp-templates")) monkeypatch.setattr("cmk.utils.paths.local_doc_dir", Path(tmp_dir, "local/share/doc/check_mk")) monkeypatch.setattr("cmk.utils.paths.local_locale_dir", Path(tmp_dir, "local/share/check_mk/locale")) monkeypatch.setattr("cmk.utils.paths.local_bin_dir", Path(tmp_dir, "local/bin")) monkeypatch.setattr("cmk.utils.paths.local_lib_dir", Path(tmp_dir, "local/lib")) monkeypatch.setattr("cmk.utils.paths.local_mib_dir", Path(tmp_dir, "local/share/snmp/mibs"))