diff --git a/.dockerignore b/.dockerignore index d2d5085324..5b164b71fb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,3 +4,5 @@ Dockerfile codecov/ .dev/ .venv/ +.git/ +.jj/ diff --git a/cmstestsuite/__init__.py b/cmstestsuite/__init__.py index 3fee7827a8..a357e19613 100644 --- a/cmstestsuite/__init__.py +++ b/cmstestsuite/__init__.py @@ -24,15 +24,21 @@ import logging import subprocess +import typing from cmscommon.commands import pretty_print_cmdline logger = logging.getLogger(__name__) +class FunctionalTestConfig(typing.TypedDict): + VERBOSITY: int + COVERAGE: typing.NotRequired[str] + PROFILER: typing.NotRequired[str] + CONFIG_PATH: typing.NotRequired[str] # CONFIG is populated by our test script. -CONFIG = { +CONFIG: FunctionalTestConfig = { 'VERBOSITY': 0, } diff --git a/cmstestsuite/functionaltestframework.py b/cmstestsuite/functionaltestframework.py index 09457a25fe..714e59b3b6 100644 --- a/cmstestsuite/functionaltestframework.py +++ b/cmstestsuite/functionaltestframework.py @@ -24,6 +24,7 @@ import json import logging +import os import re import sys import time @@ -129,7 +130,7 @@ def initialize_aws(self) -> str: self.admin_info["username"] = "admin_%s" % suffix logger.info("Trying %(username)s" % self.admin_info) try: - sh([sys.executable, "cmscontrib/AddAdmin.py", + sh([os.path.join(sys.prefix, "bin/cmsAddAdmin"), "%(username)s" % self.admin_info, "-p", "%(password)s" % self.admin_info], ignore_failure=False) diff --git a/cmstestsuite/programstarter.py b/cmstestsuite/programstarter.py index ceffab0aeb..fe10aaa8c9 100644 --- a/cmstestsuite/programstarter.py +++ b/cmstestsuite/programstarter.py @@ -28,6 +28,7 @@ import signal import socket import subprocess +import sys import threading import time from urllib.parse import urlsplit @@ -105,10 +106,8 @@ def __init__(self, cms_config, service_name, shard=0, contest=None, def start(self): """Start a CMS service.""" logger.info("Starting %s.", self.service_name) - executable = os.path.join( - ".", "scripts", "cms%s" % (self.service_name)) - if CONFIG["TEST_DIR"] is None: - executable = "cms%s" % self.service_name + + executable = os.path.join(sys.prefix, 'bin', f'cms{self.service_name}') args = [executable] if self.shard is not None: diff --git a/cmstestsuite/testrunner.py b/cmstestsuite/testrunner.py index 2b2f9951f4..404495f685 100644 --- a/cmstestsuite/testrunner.py +++ b/cmstestsuite/testrunner.py @@ -23,7 +23,7 @@ import datetime import logging import os -import subprocess +import sys import types from cms import TOKEN_MODE_FINITE @@ -63,11 +63,6 @@ def __init__(self, test_list, contest_id=None, workers=1, cpu_limits=None): self.num_users = 0 self.workers = workers - if CONFIG["TEST_DIR"] is not None: - # Set up our expected environment. - os.chdir("%(TEST_DIR)s" % CONFIG) - os.environ["PYTHONPATH"] = "%(TEST_DIR)s" % CONFIG - self.start_generic_services() self.suffix = self.framework.initialize_aws() @@ -87,22 +82,11 @@ def __init__(self, test_list, contest_id=None, workers=1, cpu_limits=None): self.n_submissions, self.n_user_tests, self.n_tests) def load_cms_conf(self): - try: - git_root = subprocess.check_output( - "git rev-parse --show-toplevel", shell=True, - stderr=subprocess.DEVNULL).decode('utf-8').strip() - except subprocess.CalledProcessError: - git_root = None - CONFIG["TEST_DIR"] = git_root - # TODO: this probably doesn't work: config/cms.toml doesn't even exist - CONFIG["CONFIG_PATH"] = "%s/config/cms.toml" % CONFIG["TEST_DIR"] - if CONFIG["TEST_DIR"] is None: - CONFIG["CONFIG_PATH"] = "/usr/local/etc/cms.toml" + CONFIG["CONFIG_PATH"] = os.path.join(sys.prefix, "etc/cms.toml") # Override CMS config path when environment variable is present - CMS_CONFIG_ENV_VAR = "CMS_CONFIG" - if CMS_CONFIG_ENV_VAR in os.environ: - CONFIG["CONFIG_PATH"] = os.environ[CMS_CONFIG_ENV_VAR] + if "CMS_CONFIG" in os.environ: + CONFIG["CONFIG_PATH"] = os.environ["CMS_CONFIG"] return self.framework.get_cms_config() diff --git a/docker/cms-dev.sh b/docker/cms-dev.sh index 783d2aea06..76898c343a 100755 --- a/docker/cms-dev.sh +++ b/docker/cms-dev.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -x -GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) +GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD | tr A-Z a-z) -docker compose -p $GIT_BRANCH_NAME -f docker/docker-compose.dev.yml run --build --rm --service-ports devcms +docker compose -p cms-$GIT_BRANCH_NAME -f docker/docker-compose.dev.yml run --build --rm --service-ports devcms diff --git a/docker/cms-stresstest.sh b/docker/cms-stresstest.sh index 8c5b059e63..ff059d2620 100755 --- a/docker/cms-stresstest.sh +++ b/docker/cms-stresstest.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -x -GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) +GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD | tr A-Z a-z) -docker compose -p $GIT_BRANCH_NAME -f docker/docker-compose.test.yml run --build --rm stresstestcms +docker compose -p cms-$GIT_BRANCH_NAME -f docker/docker-compose.test.yml run --build --rm stresstestcms diff --git a/docker/cms-test.sh b/docker/cms-test.sh index bbb85236a6..a3fcb83d86 100755 --- a/docker/cms-test.sh +++ b/docker/cms-test.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -x -GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) +GIT_BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD | tr A-Z a-z) -docker compose -p $GIT_BRANCH_NAME -f docker/docker-compose.test.yml run --build --rm testcms +docker compose -p cms-$GIT_BRANCH_NAME -f docker/docker-compose.test.yml run --build --rm testcms