Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ Dockerfile
codecov/
.dev/
.venv/
.git/
.jj/
8 changes: 7 additions & 1 deletion cmstestsuite/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}

Expand Down
3 changes: 2 additions & 1 deletion cmstestsuite/functionaltestframework.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

import json
import logging
import os
import re
import sys
import time
Expand Down Expand Up @@ -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)
Expand Down
7 changes: 3 additions & 4 deletions cmstestsuite/programstarter.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import signal
import socket
import subprocess
import sys
import threading
import time
from urllib.parse import urlsplit
Expand Down Expand Up @@ -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:
Expand Down
24 changes: 4 additions & 20 deletions cmstestsuite/testrunner.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import datetime
import logging
import os
import subprocess
import sys
import types

from cms import TOKEN_MODE_FINITE
Expand Down Expand Up @@ -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()

Expand All @@ -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()

Expand Down
4 changes: 2 additions & 2 deletions docker/cms-dev.sh
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions docker/cms-stresstest.sh
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions docker/cms-test.sh
Original file line number Diff line number Diff line change
@@ -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