From 0d2b4e35bebaadbea895586852d16a1dde0f2e54 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 22 Mar 2025 18:42:49 -0500 Subject: [PATCH 01/12] mongodb and pythonv ver handling --- .evergreen/generated_configs/tasks.yml | 221 +++++++++++++++++++++- .evergreen/generated_configs/variants.yml | 93 +-------- .evergreen/scripts/generate_config.py | 67 +++---- .evergreen/scripts/setup-dev-env.sh | 6 +- .evergreen/utils.sh | 16 ++ 5 files changed, 279 insertions(+), 124 deletions(-) diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index efc7844061..70509979e6 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -723,18 +723,48 @@ tasks: tags: [doctests] # Enterprise auth tests - - name: test-enterprise-auth + - name: test-enterprise-auth-{python} commands: - func: run server vars: TEST_NAME: enterprise_auth AUTH: auth + PYTHON_VERSION: "3.9" - func: assume ec2 role - func: run tests vars: TEST_NAME: enterprise_auth AUTH: auth + PYTHON_VERSION: "3.9" tags: [enterprise_auth] + - name: test-enterprise-auth-{python} + commands: + - func: run server + vars: + TEST_NAME: enterprise_auth + AUTH: auth + PYTHON_VERSION: "3.13" + - func: assume ec2 role + - func: run tests + vars: + TEST_NAME: enterprise_auth + AUTH: auth + PYTHON_VERSION: "3.13" + tags: [enterprise_auth] + - name: test-enterprise-auth-{python} + commands: + - func: run server + vars: + TEST_NAME: enterprise_auth + AUTH: auth + PYTHON_VERSION: pypy3.10 + - func: assume ec2 role + - func: run tests + vars: + TEST_NAME: enterprise_auth + AUTH: auth + PYTHON_VERSION: pypy3.10 + tags: [enterprise_auth, pypy] # Free threading tests - name: test-free-threading @@ -775,7 +805,67 @@ tasks: SUB_TEST_NAME: azure-fail # Load balancer tests - - name: test-load-balancer-auth-ssl + - name: test-load-balancer-auth-ssl-6.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: auth + SSL: ssl + TEST_NAME: load_balancer + VERSION: "6.0" + - func: run tests + vars: + AUTH: auth + SSL: ssl + TEST_NAME: load_balancer + tags: [load-balancer, auth, ssl] + - name: test-load-balancer-auth-ssl-7.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: auth + SSL: ssl + TEST_NAME: load_balancer + VERSION: "7.0" + - func: run tests + vars: + AUTH: auth + SSL: ssl + TEST_NAME: load_balancer + tags: [load-balancer, auth, ssl] + - name: test-load-balancer-auth-ssl-8.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: auth + SSL: ssl + TEST_NAME: load_balancer + VERSION: "8.0" + - func: run tests + vars: + AUTH: auth + SSL: ssl + TEST_NAME: load_balancer + tags: [load-balancer, auth, ssl] + - name: test-load-balancer-auth-ssl-rapid + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: auth + SSL: ssl + TEST_NAME: load_balancer + VERSION: rapid + - func: run tests + vars: + AUTH: auth + SSL: ssl + TEST_NAME: load_balancer + tags: [load-balancer, auth, ssl] + - name: test-load-balancer-auth-ssl-latest commands: - func: run server vars: @@ -783,13 +873,59 @@ tasks: AUTH: auth SSL: ssl TEST_NAME: load_balancer + VERSION: latest - func: run tests vars: AUTH: auth SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, auth, ssl] - - name: test-load-balancer-noauth-ssl + - name: test-load-balancer-noauth-ssl-6.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: noauth + SSL: ssl + TEST_NAME: load_balancer + VERSION: "6.0" + - func: run tests + vars: + AUTH: noauth + SSL: ssl + TEST_NAME: load_balancer + tags: [load-balancer, noauth, ssl] + - name: test-load-balancer-noauth-ssl-7.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: noauth + SSL: ssl + TEST_NAME: load_balancer + VERSION: "7.0" + - func: run tests + vars: + AUTH: noauth + SSL: ssl + TEST_NAME: load_balancer + tags: [load-balancer, noauth, ssl] + - name: test-load-balancer-noauth-ssl-8.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: noauth + SSL: ssl + TEST_NAME: load_balancer + VERSION: "8.0" + - func: run tests + vars: + AUTH: noauth + SSL: ssl + TEST_NAME: load_balancer + tags: [load-balancer, noauth, ssl] + - name: test-load-balancer-noauth-ssl-rapid commands: - func: run server vars: @@ -797,13 +933,89 @@ tasks: AUTH: noauth SSL: ssl TEST_NAME: load_balancer + VERSION: rapid + - func: run tests + vars: + AUTH: noauth + SSL: ssl + TEST_NAME: load_balancer + tags: [load-balancer, noauth, ssl] + - name: test-load-balancer-noauth-ssl-latest + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: noauth + SSL: ssl + TEST_NAME: load_balancer + VERSION: latest - func: run tests vars: AUTH: noauth SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-nossl + - name: test-load-balancer-noauth-nossl-6.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: noauth + SSL: nossl + TEST_NAME: load_balancer + VERSION: "6.0" + - func: run tests + vars: + AUTH: noauth + SSL: nossl + TEST_NAME: load_balancer + tags: [load-balancer, noauth, nossl] + - name: test-load-balancer-noauth-nossl-7.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: noauth + SSL: nossl + TEST_NAME: load_balancer + VERSION: "7.0" + - func: run tests + vars: + AUTH: noauth + SSL: nossl + TEST_NAME: load_balancer + tags: [load-balancer, noauth, nossl] + - name: test-load-balancer-noauth-nossl-8.0 + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: noauth + SSL: nossl + TEST_NAME: load_balancer + VERSION: "8.0" + - func: run tests + vars: + AUTH: noauth + SSL: nossl + TEST_NAME: load_balancer + tags: [load-balancer, noauth, nossl] + - name: test-load-balancer-noauth-nossl-rapid + commands: + - func: run server + vars: + TOPOLOGY: sharded_cluster + AUTH: noauth + SSL: nossl + TEST_NAME: load_balancer + VERSION: rapid + - func: run tests + vars: + AUTH: noauth + SSL: nossl + TEST_NAME: load_balancer + tags: [load-balancer, noauth, nossl] + - name: test-load-balancer-noauth-nossl-latest commands: - func: run server vars: @@ -811,6 +1023,7 @@ tasks: AUTH: noauth SSL: nossl TEST_NAME: load_balancer + VERSION: latest - func: run tests vars: AUTH: noauth diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index aa20fef895..48ee046440 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -496,54 +496,24 @@ buildvariants: tags: [encryption_tag] # Enterprise auth tests - - name: auth-enterprise-macos-python3.9 + - name: auth-enterprise-macos tasks: - - name: .enterprise_auth - display_name: Auth Enterprise macOS Python3.9 + - name: .enterprise_auth !.pypy + display_name: Auth Enterprise macOS run_on: - macos-14 - expansions: - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 - - name: auth-enterprise-rhel8-python3.10 - tasks: - - name: .enterprise_auth - display_name: Auth Enterprise RHEL8 Python3.10 - run_on: - - rhel87-small - expansions: - PYTHON_BINARY: /opt/python/3.10/bin/python3 - - name: auth-enterprise-rhel8-python3.11 - tasks: - - name: .enterprise_auth - display_name: Auth Enterprise RHEL8 Python3.11 - run_on: - - rhel87-small - expansions: - PYTHON_BINARY: /opt/python/3.11/bin/python3 - - name: auth-enterprise-rhel8-python3.12 + - name: auth-enterprise-win64 tasks: - - name: .enterprise_auth - display_name: Auth Enterprise RHEL8 Python3.12 - run_on: - - rhel87-small - expansions: - PYTHON_BINARY: /opt/python/3.12/bin/python3 - - name: auth-enterprise-win64-python3.13 - tasks: - - name: .enterprise_auth - display_name: Auth Enterprise Win64 Python3.13 + - name: .enterprise_auth !.pypy + display_name: Auth Enterprise Win64 run_on: - windows-64-vsMulti-small - expansions: - PYTHON_BINARY: C:/python/Python313/python.exe - - name: auth-enterprise-rhel8-pypy3.10 + - name: auth-enterprise-rhel8 tasks: - name: .enterprise_auth - display_name: Auth Enterprise RHEL8 PyPy3.10 + display_name: Auth Enterprise RHEL8 run_on: - rhel87-small - expansions: - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 # Free threaded tests - name: free-threaded-rhel8-python3.13t @@ -618,56 +588,13 @@ buildvariants: PYTHON_BINARY: /opt/python/3.13/bin/python3 # Load balancer tests - - name: load-balancer-rhel8-v6.0-python3.9 + - name: load-balancer tasks: - name: .load-balancer - display_name: Load Balancer RHEL8 v6.0 Python3.9 + display_name: Load Balancer run_on: - rhel87-small batchtime: 10080 - expansions: - VERSION: "6.0" - PYTHON_BINARY: /opt/python/3.9/bin/python3 - - name: load-balancer-rhel8-v7.0-python3.9 - tasks: - - name: .load-balancer - display_name: Load Balancer RHEL8 v7.0 Python3.9 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "7.0" - PYTHON_BINARY: /opt/python/3.9/bin/python3 - - name: load-balancer-rhel8-v8.0-python3.9 - tasks: - - name: .load-balancer - display_name: Load Balancer RHEL8 v8.0 Python3.9 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "8.0" - PYTHON_BINARY: /opt/python/3.9/bin/python3 - - name: load-balancer-rhel8-rapid-python3.9 - tasks: - - name: .load-balancer - display_name: Load Balancer RHEL8 rapid Python3.9 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: rapid - PYTHON_BINARY: /opt/python/3.9/bin/python3 - - name: load-balancer-rhel8-latest-python3.9 - tasks: - - name: .load-balancer - display_name: Load Balancer RHEL8 latest Python3.9 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: latest - PYTHON_BINARY: /opt/python/3.9/bin/python3 # Mockupdb tests - name: mockupdb-rhel8-python3.9 diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 0a2496c66d..b13efdf1ea 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -405,23 +405,11 @@ def get_encryption_expansions(encryption): def create_load_balancer_variants(): # Load balancer tests - run all supported server versions using the lowest supported python. - host = DEFAULT_HOST - batchtime = BATCHTIME_WEEK - versions = get_versions_from("6.0") - variants = [] - for version in versions: - python = CPYTHONS[0] - display_name = get_display_name("Load Balancer", host, python=python, version=version) - variant = create_variant( - [".load-balancer"], - display_name, - python=python, - host=host, - version=version, - batchtime=batchtime, + return [ + create_variant( + [".load-balancer"], "Load Balancer", host=DEFAULT_HOST, batchtime=BATCHTIME_WEEK ) - variants.append(variant) - return variants + ] def create_compression_variants(): @@ -466,17 +454,13 @@ def create_compression_variants(): def create_enterprise_auth_variants(): variants = [] - - # All python versions across platforms. - for python in ALL_PYTHONS: - if python == CPYTHONS[0]: - host = HOSTS["macos"] - elif python == CPYTHONS[-1]: - host = HOSTS["win64"] + for host in [HOSTS["macos"], HOSTS["win64"], DEFAULT_HOST]: + display_name = get_display_name("Auth Enterprise", host) + if host == DEFAULT_HOST: + tags = [".enterprise_auth"] else: - host = DEFAULT_HOST - display_name = get_display_name("Auth Enterprise", host, python=python) - variant = create_variant([".enterprise_auth"], display_name, host=host, python=python) + tags = [".enterprise_auth !.pypy"] + variant = create_variant(tags, display_name, host=host) variants.append(variant) return variants @@ -818,11 +802,15 @@ def create_server_tasks(): def create_load_balancer_tasks(): tasks = [] - for auth, ssl in AUTH_SSLS: - name = f"test-load-balancer-{auth}-{ssl}".lower() + for (auth, ssl), version in product(AUTH_SSLS, get_versions_from("6.0")): + name = f"test-load-balancer-{auth}-{ssl}-{version}".lower() tags = ["load-balancer", auth, ssl] server_vars = dict( - TOPOLOGY="sharded_cluster", AUTH=auth, SSL=ssl, TEST_NAME="load_balancer" + TOPOLOGY="sharded_cluster", + AUTH=auth, + SSL=ssl, + TEST_NAME="load_balancer", + VERSION=version, ) server_func = FunctionCall(func="run server", vars=server_vars) test_vars = dict(AUTH=auth, SSL=ssl, TEST_NAME="load_balancer") @@ -968,13 +956,20 @@ def create_atlas_connect_tasks(): def create_enterprise_auth_tasks(): - vars = dict(TEST_NAME="enterprise_auth", AUTH="auth") - server_func = FunctionCall(func="run server", vars=vars) - assume_func = FunctionCall(func="assume ec2 role") - test_func = FunctionCall(func="run tests", vars=vars) - task_name = "test-enterprise-auth" - tags = ["enterprise_auth"] - return [EvgTask(name=task_name, tags=tags, commands=[server_func, assume_func, test_func])] + tasks = [] + for python in [*MIN_MAX_PYTHON, PYPYS[-1]]: + vars = dict(TEST_NAME="enterprise_auth", AUTH="auth", PYTHON_VERSION=python) + server_func = FunctionCall(func="run server", vars=vars) + assume_func = FunctionCall(func="assume ec2 role") + test_func = FunctionCall(func="run tests", vars=vars) + task_name = "test-enterprise-auth-{python}" + tags = ["enterprise_auth"] + if python in PYPYS: + tags += ["pypy"] + tasks.append( + EvgTask(name=task_name, tags=tags, commands=[server_func, assume_func, test_func]) + ) + return tasks def create_perf_tasks(): diff --git a/.evergreen/scripts/setup-dev-env.sh b/.evergreen/scripts/setup-dev-env.sh index d1c4be3494..67696a5653 100755 --- a/.evergreen/scripts/setup-dev-env.sh +++ b/.evergreen/scripts/setup-dev-env.sh @@ -31,7 +31,11 @@ if [ ! -d $BIN_DIR ]; then . $ROOT/.evergreen/utils.sh if [ -z "${PYTHON_BINARY:-}" ]; then - PYTHON_BINARY=$(find_python3) + if [ -n "${PYTHON_VERSION}" ]; then + PYTHON_BINARY=$(get_python_binary $PYTHON_VERSION) + else + PYTHON_BINARY=$(find_python3) + fi fi export UV_PYTHON=${PYTHON_BINARY} echo "export UV_PYTHON=$UV_PYTHON" >> $HERE/env.sh diff --git a/.evergreen/utils.sh b/.evergreen/utils.sh index bb3ed8dabd..72a0de0540 100755 --- a/.evergreen/utils.sh +++ b/.evergreen/utils.sh @@ -113,3 +113,19 @@ is_python_39() { return 1 fi } + + +# Function that gets a python binary given a python version string. +# Versions can be of the form 3.xx or pypy3.xx. +get_python_binary() { + version=$1 + if [ "$(uname -s)" = "Darwin" ]; then + PYTHON="/Library/Frameworks/Python.Framework/Versions/$version/bin/python3" + elif [ "Windows_NT" = "${OS:-}" ]; then + version=$(echo $version | cut -d. -f1,2 | sed 's/\.//g') + PYTHON="C:/python/Python$version/python3.exe" + else + PYTHON="/opt/python/$version/bin/python" + fi + echo "$PYTHON" +} From df4ba6e779eaeac37e2f767432a5463619ad6f5b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 22 Mar 2025 18:43:22 -0500 Subject: [PATCH 02/12] mongodb and pythonv ver handling --- .evergreen/generated_configs/tasks.yml | 6 +++--- .evergreen/scripts/generate_config.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 70509979e6..142b6e0871 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -723,7 +723,7 @@ tasks: tags: [doctests] # Enterprise auth tests - - name: test-enterprise-auth-{python} + - name: test-enterprise-auth-3.9 commands: - func: run server vars: @@ -737,7 +737,7 @@ tasks: AUTH: auth PYTHON_VERSION: "3.9" tags: [enterprise_auth] - - name: test-enterprise-auth-{python} + - name: test-enterprise-auth-3.13 commands: - func: run server vars: @@ -751,7 +751,7 @@ tasks: AUTH: auth PYTHON_VERSION: "3.13" tags: [enterprise_auth] - - name: test-enterprise-auth-{python} + - name: test-enterprise-auth-pypy3.10 commands: - func: run server vars: diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index b13efdf1ea..e1d6dda585 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -962,7 +962,7 @@ def create_enterprise_auth_tasks(): server_func = FunctionCall(func="run server", vars=vars) assume_func = FunctionCall(func="assume ec2 role") test_func = FunctionCall(func="run tests", vars=vars) - task_name = "test-enterprise-auth-{python}" + task_name = f"test-enterprise-auth-{python}" tags = ["enterprise_auth"] if python in PYPYS: tags += ["pypy"] From ec84798b175a931290719bc5415dc54bcdd093c8 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 22 Mar 2025 18:51:03 -0500 Subject: [PATCH 03/12] mongodb and pythonv ver handling --- .evergreen/generated_configs/tasks.yml | 4 +- .evergreen/scripts/generate_config.py | 81 ++++++++++++++------------ 2 files changed, 47 insertions(+), 38 deletions(-) diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 142b6e0871..6f0d30139e 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -723,7 +723,7 @@ tasks: tags: [doctests] # Enterprise auth tests - - name: test-enterprise-auth-3.9 + - name: test-enterprise-auth-python3.9 commands: - func: run server vars: @@ -737,7 +737,7 @@ tasks: AUTH: auth PYTHON_VERSION: "3.9" tags: [enterprise_auth] - - name: test-enterprise-auth-3.13 + - name: test-enterprise-auth-python3.13 commands: - func: run server vars: diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index e1d6dda585..69442dff80 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -180,17 +180,14 @@ def get_versions_until(max_version: str) -> list[str]: return versions -def get_display_name(base: str, host: Host | None = None, **kwargs) -> str: - """Get the display name of a variant.""" +def get_common_name(base: str, sep: str, **kwargs) -> str: display_name = base - if host is not None: - display_name += f" {host.display_name}" version = kwargs.pop("VERSION", None) version = version or kwargs.pop("version", None) if version: if version not in ["rapid", "latest"]: version = f"v{version}" - display_name = f"{display_name} {version}" + display_name = f"{display_name}{sep}{version}" for key, value in kwargs.items(): name = value if key.lower() == "python": @@ -202,10 +199,22 @@ def get_display_name(base: str, host: Host | None = None, **kwargs) -> str: name = DISPLAY_LOOKUP[key.lower()][value] else: continue - display_name = f"{display_name} {name}" + display_name = f"{display_name}{sep}{name}" return display_name +def get_variant_name(base: str, host: Host | None = None, **kwargs) -> str: + """Get the display name of a variant.""" + display_name = base + if host is not None: + display_name += f" {host.display_name}" + return get_common_name(display_name, " ", **kwargs) + + +def get_task_name(base: str, **kwargs): + return get_common_name(base, "-", **kwargs).lower() + + def zip_cycle(*iterables, empty_default=None): """Get all combinations of the inputs, cycling over the shorter list(s).""" cycles = [cycle(i) for i in iterables] @@ -245,7 +254,7 @@ def create_ocsp_variants() -> list[BuildVariant]: host = DEFAULT_HOST variant = create_variant( [".ocsp"], - get_display_name(base_display, host, version=version, python=python), + get_variant_name(base_display, host, version=version, python=python), python=python, version=version, host=host, @@ -261,7 +270,7 @@ def create_ocsp_variants() -> list[BuildVariant]: python = CPYTHONS[0] if version == "4.4" else CPYTHONS[-1] variant = create_variant( [".ocsp-rsa !.ocsp-staple"], - get_display_name(base_display, host, version=version, python=python), + get_variant_name(base_display, host, version=version, python=python), python=python, version=version, host=host, @@ -283,7 +292,7 @@ def create_server_variants() -> list[BuildVariant]: for python, c_ext in product([*MIN_MAX_PYTHON, PYPYS[-1]], C_EXTS): expansions = dict(COVERAGE="coverage") handle_c_ext(c_ext, expansions) - display_name = get_display_name(base_display_name, host, python=python, **expansions) + display_name = get_variant_name(base_display_name, host, python=python, **expansions) variant = create_variant( [f".{t} .sync_async" for t in TOPOLOGIES], display_name, @@ -297,7 +306,7 @@ def create_server_variants() -> list[BuildVariant]: # Test the rest of the pythons. for python in CPYTHONS[1:-1] + PYPYS[:-1]: display_name = f"Test {host}" - display_name = get_display_name(base_display_name, host, python=python) + display_name = get_variant_name(base_display_name, host, python=python) variant = create_variant( [f"{t} .sync_async" for t in SUB_TASKS], display_name, @@ -317,7 +326,7 @@ def create_server_variants() -> list[BuildVariant]: for version in get_versions_from("6.0"): tasks.extend(f"{t} .{version} !.sync_async" for t in SUB_TASKS) host = HOSTS[host_name] - display_name = get_display_name(base_display_name, host, python=python) + display_name = get_variant_name(base_display_name, host, python=python) variant = create_variant(tasks, display_name, python=python, host=host) variants.append(variant) @@ -333,7 +342,7 @@ def create_free_threaded_variants() -> list[BuildVariant]: tasks = [".free-threading"] host = HOSTS[host_name] python = "3.13t" - display_name = get_display_name("Free-threaded", host, python=python) + display_name = get_variant_name("Free-threaded", host, python=python) variant = create_variant(tasks, display_name, python=python, host=host) variants.append(variant) return variants @@ -358,7 +367,7 @@ def get_encryption_expansions(encryption): encryptions = ["Encryption", "Encryption crypt_shared", "Encryption PyOpenSSL"] for encryption, python in product(encryptions, [*MIN_MAX_PYTHON, PYPYS[-1]]): expansions = get_encryption_expansions(encryption) - display_name = get_display_name(encryption, host, python=python, **expansions) + display_name = get_variant_name(encryption, host, python=python, **expansions) variant = create_variant( [f"{t} .sync_async" for t in SUB_TASKS], display_name, @@ -373,7 +382,7 @@ def get_encryption_expansions(encryption): # Test the rest of the pythons on linux for all server versions. for encryption, python, task in zip_cycle(encryptions, CPYTHONS[1:-1] + PYPYS[:-1], SUB_TASKS): expansions = get_encryption_expansions(encryption) - display_name = get_display_name(encryption, host, python=python, **expansions) + display_name = get_variant_name(encryption, host, python=python, **expansions) variant = create_variant( [f"{task} .sync_async"], display_name, @@ -389,7 +398,7 @@ def get_encryption_expansions(encryption): for host_name, encryption, python in product(["macos", "win64"], encryptions, MIN_MAX_PYTHON): host = HOSTS[host_name] expansions = get_encryption_expansions(encryption) - display_name = get_display_name(encryption, host, python=python, **expansions) + display_name = get_variant_name(encryption, host, python=python, **expansions) variant = create_variant( task_names, display_name, @@ -424,7 +433,7 @@ def create_compression_variants(): handle_c_ext(c_ext, expansions) base_name = f"Compression {compressor}" python = CPYTHONS[ind % len(CPYTHONS)] - display_name = get_display_name(base_name, host, python=python, **expansions) + display_name = get_variant_name(base_name, host, python=python, **expansions) variant = create_variant( task_names[compressor], display_name, @@ -439,7 +448,7 @@ def create_compression_variants(): expansions = dict(COMPRESSORS=compressor) handle_c_ext(c_ext, expansions) base_name = f"Compression {compressor}" - display_name = get_display_name(base_name, host, python=python, **expansions) + display_name = get_variant_name(base_name, host, python=python, **expansions) variant = create_variant( task_names[compressor], display_name, @@ -455,7 +464,7 @@ def create_compression_variants(): def create_enterprise_auth_variants(): variants = [] for host in [HOSTS["macos"], HOSTS["win64"], DEFAULT_HOST]: - display_name = get_display_name("Auth Enterprise", host) + display_name = get_variant_name("Auth Enterprise", host) if host == DEFAULT_HOST: tags = [".enterprise_auth"] else: @@ -483,7 +492,7 @@ def create_pyopenssl_variants(): else: host = DEFAULT_HOST - display_name = get_display_name(base_name, host, python=python) + display_name = get_variant_name(base_name, host, python=python) variant = create_variant( [f".replica_set .{auth} .{ssl} .sync_async", f".7.0 .{auth} .{ssl} .sync_async"], display_name, @@ -512,7 +521,7 @@ def create_storage_engine_variants(): tasks = [f".standalone .{v} .noauth .nossl .sync_async" for v in versions] + [ f".replica_set .{v} .noauth .nossl .sync_async" for v in versions ] - display_name = get_display_name(f"Storage {engine}", host, python=python) + display_name = get_variant_name(f"Storage {engine}", host, python=python) variant = create_variant( tasks, display_name, host=host, python=python, expansions=expansions ) @@ -543,7 +552,7 @@ def create_stable_api_variants(): # clients created in the test suite. expansions["ORCHESTRATION_FILE"] = "versioned-api-testing.json" base_display_name = f"Stable API {test_type}" - display_name = get_display_name(base_display_name, host, python=python, **expansions) + display_name = get_variant_name(base_display_name, host, python=python, **expansions) variant = create_variant( tasks, display_name, host=host, python=python, tags=tags, expansions=expansions ) @@ -558,7 +567,7 @@ def create_green_framework_variants(): host = DEFAULT_HOST for python, framework in product([CPYTHONS[0], CPYTHONS[-1]], ["eventlet", "gevent"]): expansions = dict(GREEN_FRAMEWORK=framework, AUTH="auth", SSL="ssl") - display_name = get_display_name(f"Green {framework.capitalize()}", host, python=python) + display_name = get_variant_name(f"Green {framework.capitalize()}", host, python=python) variant = create_variant( tasks, display_name, host=host, python=python, expansions=expansions ) @@ -573,7 +582,7 @@ def create_no_c_ext_variants(): tasks = [f".{topology} .noauth .nossl !.sync_async"] expansions = dict() handle_c_ext(C_EXTS[0], expansions) - display_name = get_display_name("No C Ext", host, python=python) + display_name = get_variant_name("No C Ext", host, python=python) variant = create_variant( tasks, display_name, host=host, python=python, expansions=expansions ) @@ -586,7 +595,7 @@ def create_atlas_data_lake_variants(): host = HOSTS["ubuntu22"] for python in MIN_MAX_PYTHON: tasks = [".atlas_data_lake"] - display_name = get_display_name("Atlas Data Lake", host, python=python) + display_name = get_variant_name("Atlas Data Lake", host, python=python) variant = create_variant(tasks, display_name, host=host, python=python) variants.append(variant) return variants @@ -598,7 +607,7 @@ def create_mod_wsgi_variants(): tasks = [".mod_wsgi"] expansions = dict(MOD_WSGI_VERSION="4") for python in MIN_MAX_PYTHON: - display_name = get_display_name("mod_wsgi", host, python=python) + display_name = get_variant_name("mod_wsgi", host, python=python) variant = create_variant( tasks, display_name, host=host, python=python, expansions=expansions ) @@ -610,7 +619,7 @@ def create_disable_test_commands_variants(): host = DEFAULT_HOST expansions = dict(AUTH="auth", SSL="ssl", DISABLE_TEST_COMMANDS="1") python = CPYTHONS[0] - display_name = get_display_name("Disable test commands", host, python=python) + display_name = get_variant_name("Disable test commands", host, python=python) tasks = [".latest .sync_async"] return [create_variant(tasks, display_name, host=host, python=python, expansions=expansions)] @@ -623,7 +632,7 @@ def create_serverless_variants(): return [ create_variant( tasks, - get_display_name(base_name, host, python=python), + get_variant_name(base_name, host, python=python), host=host, python=python, batchtime=batchtime, @@ -643,7 +652,7 @@ def create_oidc_auth_variants(): variants.append( create_variant( tasks, - get_display_name("Auth OIDC", host), + get_variant_name("Auth OIDC", host), host=host, batchtime=BATCHTIME_WEEK, ) @@ -657,7 +666,7 @@ def create_search_index_variants(): return [ create_variant( [".search_index"], - get_display_name("Search Index Helpers", host, python=python), + get_variant_name("Search Index Helpers", host, python=python), python=python, host=host, ) @@ -670,7 +679,7 @@ def create_mockupdb_variants(): return [ create_variant( [".mockupdb"], - get_display_name("MockupDB", host, python=python), + get_variant_name("MockupDB", host, python=python), python=python, host=host, ) @@ -683,7 +692,7 @@ def create_doctests_variants(): return [ create_variant( [".doctests"], - get_display_name("Doctests", host, python=python), + get_variant_name("Doctests", host, python=python), python=python, host=host, ) @@ -695,7 +704,7 @@ def create_atlas_connect_variants(): return [ create_variant( [".atlas_connect"], - get_display_name("Atlas connect", host, python=python), + get_variant_name("Atlas connect", host, python=python), python=python, host=host, ) @@ -723,7 +732,7 @@ def create_aws_auth_variants(): host = HOSTS[host_name] variant = create_variant( tasks, - get_display_name("Auth AWS", host, python=python), + get_variant_name("Auth AWS", host, python=python), host=host, python=python, expansions=expansions, @@ -745,7 +754,7 @@ def create_alternative_hosts_variants(): variants.append( create_variant( [".5.0 .standalone !.sync_async"], - get_display_name("OpenSSL 1.0.2", host, python=CPYTHONS[0]), + get_variant_name("OpenSSL 1.0.2", host, python=CPYTHONS[0]), host=host, python=CPYTHONS[0], batchtime=batchtime, @@ -759,7 +768,7 @@ def create_alternative_hosts_variants(): variants.append( create_variant( [".6.0 .standalone !.sync_async"], - display_name=get_display_name("Other hosts", host), + display_name=get_variant_name("Other hosts", host), batchtime=batchtime, host=host, expansions=expansions, @@ -962,7 +971,7 @@ def create_enterprise_auth_tasks(): server_func = FunctionCall(func="run server", vars=vars) assume_func = FunctionCall(func="assume ec2 role") test_func = FunctionCall(func="run tests", vars=vars) - task_name = f"test-enterprise-auth-{python}" + task_name = get_task_name("test-enterprise-auth", python=python) tags = ["enterprise_auth"] if python in PYPYS: tags += ["pypy"] From 93ae991e143103af275528994e594fbadd9fcf7e Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 22 Mar 2025 18:52:58 -0500 Subject: [PATCH 04/12] mongodb and pythonv ver handling --- .evergreen/generated_configs/tasks.yml | 18 +++++++++--------- .evergreen/scripts/generate_config.py | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 6f0d30139e..3450e491a7 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -805,7 +805,7 @@ tasks: SUB_TEST_NAME: azure-fail # Load balancer tests - - name: test-load-balancer-auth-ssl-6.0 + - name: test-load-balancer-auth-ssl-v6.0 commands: - func: run server vars: @@ -820,7 +820,7 @@ tasks: SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, auth, ssl] - - name: test-load-balancer-auth-ssl-7.0 + - name: test-load-balancer-auth-ssl-v7.0 commands: - func: run server vars: @@ -835,7 +835,7 @@ tasks: SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, auth, ssl] - - name: test-load-balancer-auth-ssl-8.0 + - name: test-load-balancer-auth-ssl-v8.0 commands: - func: run server vars: @@ -880,7 +880,7 @@ tasks: SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, auth, ssl] - - name: test-load-balancer-noauth-ssl-6.0 + - name: test-load-balancer-noauth-ssl-v6.0 commands: - func: run server vars: @@ -895,7 +895,7 @@ tasks: SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-ssl-7.0 + - name: test-load-balancer-noauth-ssl-v7.0 commands: - func: run server vars: @@ -910,7 +910,7 @@ tasks: SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-ssl-8.0 + - name: test-load-balancer-noauth-ssl-v8.0 commands: - func: run server vars: @@ -955,7 +955,7 @@ tasks: SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-nossl-6.0 + - name: test-load-balancer-noauth-nossl-v6.0 commands: - func: run server vars: @@ -970,7 +970,7 @@ tasks: SSL: nossl TEST_NAME: load_balancer tags: [load-balancer, noauth, nossl] - - name: test-load-balancer-noauth-nossl-7.0 + - name: test-load-balancer-noauth-nossl-v7.0 commands: - func: run server vars: @@ -985,7 +985,7 @@ tasks: SSL: nossl TEST_NAME: load_balancer tags: [load-balancer, noauth, nossl] - - name: test-load-balancer-noauth-nossl-8.0 + - name: test-load-balancer-noauth-nossl-v8.0 commands: - func: run server vars: diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 69442dff80..436a2801ad 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -812,7 +812,7 @@ def create_server_tasks(): def create_load_balancer_tasks(): tasks = [] for (auth, ssl), version in product(AUTH_SSLS, get_versions_from("6.0")): - name = f"test-load-balancer-{auth}-{ssl}-{version}".lower() + name = get_task_name(f"test-load-balancer-{auth}-{ssl}", version=version) tags = ["load-balancer", auth, ssl] server_vars = dict( TOPOLOGY="sharded_cluster", From de0f3a2821a1169bdd642712f776fc6cfe07c439 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 22 Mar 2025 19:01:51 -0500 Subject: [PATCH 05/12] pass PYTHON_VERSION --- .evergreen/config.yml | 4 ++-- .evergreen/scripts/setup-dev-env.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 97845b86d4..30c4fe2002 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -206,7 +206,7 @@ functions: params: binary: bash working_dir: "src" - include_expansions_in_env: [VERSION, TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE, PYTHON_BINARY, + include_expansions_in_env: [VERSION, TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE, PYTHON_BINARY, PYTHON_VERSION, STORAGE_ENGINE, REQUIRE_API_VERSION, DRIVERS_TOOLS, TEST_CRYPT_SHARED, AUTH_AWS, LOAD_BALANCER] args: [.evergreen/just.sh, run-server, "${TEST_NAME}"] - command: expansions.update @@ -227,7 +227,7 @@ functions: type: test params: include_expansions_in_env: [AUTH, SSL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, - AWS_SESSION_TOKEN, COVERAGE, PYTHON_BINARY, LIBMONGOCRYPT_URL, MONGODB_URI, + AWS_SESSION_TOKEN, COVERAGE, PYTHON_BINARY, LIBMONGOCRYPT_URL, MONGODB_URI, PYTHON_VERSION, DISABLE_TEST_COMMANDS, GREEN_FRAMEWORK, NO_EXT, COMPRESSORS, MONGODB_API_VERSION, DEBUG_LOG, ORCHESTRATION_FILE, OCSP_SERVER_TYPE] binary: bash diff --git a/.evergreen/scripts/setup-dev-env.sh b/.evergreen/scripts/setup-dev-env.sh index 67696a5653..d9b88e3385 100755 --- a/.evergreen/scripts/setup-dev-env.sh +++ b/.evergreen/scripts/setup-dev-env.sh @@ -31,7 +31,7 @@ if [ ! -d $BIN_DIR ]; then . $ROOT/.evergreen/utils.sh if [ -z "${PYTHON_BINARY:-}" ]; then - if [ -n "${PYTHON_VERSION}" ]; then + if [ -n "${PYTHON_VERSION:-}" ]; then PYTHON_BINARY=$(get_python_binary $PYTHON_VERSION) else PYTHON_BINARY=$(find_python3) From bb84046a0910af9b75e81ae4ef09c940a253f2d3 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 22 Mar 2025 19:05:35 -0500 Subject: [PATCH 06/12] fix python ver handling --- .evergreen/utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/utils.sh b/.evergreen/utils.sh index 72a0de0540..6ba83935ad 100755 --- a/.evergreen/utils.sh +++ b/.evergreen/utils.sh @@ -125,7 +125,7 @@ get_python_binary() { version=$(echo $version | cut -d. -f1,2 | sed 's/\.//g') PYTHON="C:/python/Python$version/python3.exe" else - PYTHON="/opt/python/$version/bin/python" + PYTHON="/opt/python/$version/bin/python3" fi echo "$PYTHON" } From 8529e71a7368d5134a6c04a19d561a3be0260c92 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 22 Mar 2025 22:36:19 -0500 Subject: [PATCH 07/12] fix win --- .evergreen/utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/utils.sh b/.evergreen/utils.sh index 6ba83935ad..0e43f8e7d6 100755 --- a/.evergreen/utils.sh +++ b/.evergreen/utils.sh @@ -123,7 +123,7 @@ get_python_binary() { PYTHON="/Library/Frameworks/Python.Framework/Versions/$version/bin/python3" elif [ "Windows_NT" = "${OS:-}" ]; then version=$(echo $version | cut -d. -f1,2 | sed 's/\.//g') - PYTHON="C:/python/Python$version/python3.exe" + PYTHON="C:/python/Python$version/python.exe" else PYTHON="/opt/python/$version/bin/python3" fi From 0a0d6973fa8ed39a59c78f14cd9005212887d617 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 25 Mar 2025 13:02:09 -0500 Subject: [PATCH 08/12] remove changes to load balancer --- .evergreen/generated_configs/tasks.yml | 189 +--------------------- .evergreen/generated_configs/variants.yml | 47 +++++- .evergreen/scripts/generate_config.py | 30 ++-- 3 files changed, 67 insertions(+), 199 deletions(-) diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 3450e491a7..f859169ed4 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -805,7 +805,7 @@ tasks: SUB_TEST_NAME: azure-fail # Load balancer tests - - name: test-load-balancer-auth-ssl-v6.0 + - name: test-load-balancer-auth-ssl commands: - func: run server vars: @@ -813,74 +813,13 @@ tasks: AUTH: auth SSL: ssl TEST_NAME: load_balancer - VERSION: "6.0" - - func: run tests - vars: - AUTH: auth - SSL: ssl - TEST_NAME: load_balancer - tags: [load-balancer, auth, ssl] - - name: test-load-balancer-auth-ssl-v7.0 - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: auth - SSL: ssl - TEST_NAME: load_balancer - VERSION: "7.0" - - func: run tests - vars: - AUTH: auth - SSL: ssl - TEST_NAME: load_balancer - tags: [load-balancer, auth, ssl] - - name: test-load-balancer-auth-ssl-v8.0 - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: auth - SSL: ssl - TEST_NAME: load_balancer - VERSION: "8.0" - - func: run tests - vars: - AUTH: auth - SSL: ssl - TEST_NAME: load_balancer - tags: [load-balancer, auth, ssl] - - name: test-load-balancer-auth-ssl-rapid - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: auth - SSL: ssl - TEST_NAME: load_balancer - VERSION: rapid - func: run tests vars: AUTH: auth SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, auth, ssl] - - name: test-load-balancer-auth-ssl-latest - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: auth - SSL: ssl - TEST_NAME: load_balancer - VERSION: latest - - func: run tests - vars: - AUTH: auth - SSL: ssl - TEST_NAME: load_balancer - tags: [load-balancer, auth, ssl] - - name: test-load-balancer-noauth-ssl-v6.0 + - name: test-load-balancer-noauth-ssl commands: - func: run server vars: @@ -888,74 +827,13 @@ tasks: AUTH: noauth SSL: ssl TEST_NAME: load_balancer - VERSION: "6.0" - - func: run tests - vars: - AUTH: noauth - SSL: ssl - TEST_NAME: load_balancer - tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-ssl-v7.0 - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: noauth - SSL: ssl - TEST_NAME: load_balancer - VERSION: "7.0" - - func: run tests - vars: - AUTH: noauth - SSL: ssl - TEST_NAME: load_balancer - tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-ssl-v8.0 - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: noauth - SSL: ssl - TEST_NAME: load_balancer - VERSION: "8.0" - func: run tests vars: AUTH: noauth SSL: ssl TEST_NAME: load_balancer tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-ssl-rapid - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: noauth - SSL: ssl - TEST_NAME: load_balancer - VERSION: rapid - - func: run tests - vars: - AUTH: noauth - SSL: ssl - TEST_NAME: load_balancer - tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-ssl-latest - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: noauth - SSL: ssl - TEST_NAME: load_balancer - VERSION: latest - - func: run tests - vars: - AUTH: noauth - SSL: ssl - TEST_NAME: load_balancer - tags: [load-balancer, noauth, ssl] - - name: test-load-balancer-noauth-nossl-v6.0 + - name: test-load-balancer-noauth-nossl commands: - func: run server vars: @@ -963,67 +841,6 @@ tasks: AUTH: noauth SSL: nossl TEST_NAME: load_balancer - VERSION: "6.0" - - func: run tests - vars: - AUTH: noauth - SSL: nossl - TEST_NAME: load_balancer - tags: [load-balancer, noauth, nossl] - - name: test-load-balancer-noauth-nossl-v7.0 - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: noauth - SSL: nossl - TEST_NAME: load_balancer - VERSION: "7.0" - - func: run tests - vars: - AUTH: noauth - SSL: nossl - TEST_NAME: load_balancer - tags: [load-balancer, noauth, nossl] - - name: test-load-balancer-noauth-nossl-v8.0 - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: noauth - SSL: nossl - TEST_NAME: load_balancer - VERSION: "8.0" - - func: run tests - vars: - AUTH: noauth - SSL: nossl - TEST_NAME: load_balancer - tags: [load-balancer, noauth, nossl] - - name: test-load-balancer-noauth-nossl-rapid - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: noauth - SSL: nossl - TEST_NAME: load_balancer - VERSION: rapid - - func: run tests - vars: - AUTH: noauth - SSL: nossl - TEST_NAME: load_balancer - tags: [load-balancer, noauth, nossl] - - name: test-load-balancer-noauth-nossl-latest - commands: - - func: run server - vars: - TOPOLOGY: sharded_cluster - AUTH: noauth - SSL: nossl - TEST_NAME: load_balancer - VERSION: latest - func: run tests vars: AUTH: noauth diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 48ee046440..b40247dd54 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -588,13 +588,56 @@ buildvariants: PYTHON_BINARY: /opt/python/3.13/bin/python3 # Load balancer tests - - name: load-balancer + - name: load-balancer-rhel8-v6.0-python3.9 tasks: - name: .load-balancer - display_name: Load Balancer + display_name: Load Balancer RHEL8 v6.0 Python3.9 run_on: - rhel87-small batchtime: 10080 + expansions: + VERSION: "6.0" + PYTHON_BINARY: /opt/python/3.9/bin/python3 + - name: load-balancer-rhel8-v7.0-python3.9 + tasks: + - name: .load-balancer + display_name: Load Balancer RHEL8 v7.0 Python3.9 + run_on: + - rhel87-small + batchtime: 10080 + expansions: + VERSION: "7.0" + PYTHON_BINARY: /opt/python/3.9/bin/python3 + - name: load-balancer-rhel8-v8.0-python3.9 + tasks: + - name: .load-balancer + display_name: Load Balancer RHEL8 v8.0 Python3.9 + run_on: + - rhel87-small + batchtime: 10080 + expansions: + VERSION: "8.0" + PYTHON_BINARY: /opt/python/3.9/bin/python3 + - name: load-balancer-rhel8-rapid-python3.9 + tasks: + - name: .load-balancer + display_name: Load Balancer RHEL8 rapid Python3.9 + run_on: + - rhel87-small + batchtime: 10080 + expansions: + VERSION: rapid + PYTHON_BINARY: /opt/python/3.9/bin/python3 + - name: load-balancer-rhel8-latest-python3.9 + tasks: + - name: .load-balancer + display_name: Load Balancer RHEL8 latest Python3.9 + run_on: + - rhel87-small + batchtime: 10080 + expansions: + VERSION: latest + PYTHON_BINARY: /opt/python/3.9/bin/python3 # Mockupdb tests - name: mockupdb-rhel8-python3.9 diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 436a2801ad..23d5aa8da8 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -414,11 +414,23 @@ def get_encryption_expansions(encryption): def create_load_balancer_variants(): # Load balancer tests - run all supported server versions using the lowest supported python. - return [ - create_variant( - [".load-balancer"], "Load Balancer", host=DEFAULT_HOST, batchtime=BATCHTIME_WEEK + host = DEFAULT_HOST + batchtime = BATCHTIME_WEEK + versions = get_versions_from("6.0") + variants = [] + for version in versions: + python = CPYTHONS[0] + display_name = get_variant_name("Load Balancer", host, python=python, version=version) + variant = create_variant( + [".load-balancer"], + display_name, + python=python, + host=host, + version=version, + batchtime=batchtime, ) - ] + variants.append(variant) + return variants def create_compression_variants(): @@ -811,15 +823,11 @@ def create_server_tasks(): def create_load_balancer_tasks(): tasks = [] - for (auth, ssl), version in product(AUTH_SSLS, get_versions_from("6.0")): - name = get_task_name(f"test-load-balancer-{auth}-{ssl}", version=version) + for auth, ssl in AUTH_SSLS: + name = f"test-load-balancer-{auth}-{ssl}".lower() tags = ["load-balancer", auth, ssl] server_vars = dict( - TOPOLOGY="sharded_cluster", - AUTH=auth, - SSL=ssl, - TEST_NAME="load_balancer", - VERSION=version, + TOPOLOGY="sharded_cluster", AUTH=auth, SSL=ssl, TEST_NAME="load_balancer" ) server_func = FunctionCall(func="run server", vars=server_vars) test_vars = dict(AUTH=auth, SSL=ssl, TEST_NAME="load_balancer") From cc05a43ae9a8819c249b7c5a4bb2a7109c800b9b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 26 Mar 2025 16:51:05 -0500 Subject: [PATCH 09/12] address review --- .evergreen/utils.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.evergreen/utils.sh b/.evergreen/utils.sh index 0e43f8e7d6..9c2e790402 100755 --- a/.evergreen/utils.sh +++ b/.evergreen/utils.sh @@ -127,5 +127,9 @@ get_python_binary() { else PYTHON="/opt/python/$version/bin/python3" fi + if [ ! -v "$PYTHON" ]; then + echo "Could not find suitable python binary for '$version'" >&2 + exit 1 + fi echo "$PYTHON" } From d61cb92eab3bc1c1327f61fd23da16b09dc9d189 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 26 Mar 2025 16:51:28 -0500 Subject: [PATCH 10/12] fix return value --- .evergreen/utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/utils.sh b/.evergreen/utils.sh index 9c2e790402..18b422c9ee 100755 --- a/.evergreen/utils.sh +++ b/.evergreen/utils.sh @@ -129,7 +129,7 @@ get_python_binary() { fi if [ ! -v "$PYTHON" ]; then echo "Could not find suitable python binary for '$version'" >&2 - exit 1 + return 1 fi echo "$PYTHON" } From 73651658469327ab9c17d8d41b119fdac8c62add Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 26 Mar 2025 21:58:10 -0500 Subject: [PATCH 11/12] fix logic --- .evergreen/utils.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.evergreen/utils.sh b/.evergreen/utils.sh index 18b422c9ee..8dc7dd72f0 100755 --- a/.evergreen/utils.sh +++ b/.evergreen/utils.sh @@ -127,9 +127,10 @@ get_python_binary() { else PYTHON="/opt/python/$version/bin/python3" fi - if [ ! -v "$PYTHON" ]; then + if is_python_39 "$(command -v $PYTHON)"; then + echo "$PYTHON" + else echo "Could not find suitable python binary for '$version'" >&2 return 1 fi - echo "$PYTHON" } From 33905916dae85adcdba5d5fd1c4c90b34784ae99 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 26 Mar 2025 22:07:30 -0500 Subject: [PATCH 12/12] fix get_secrets on windows --- .evergreen/scripts/setup_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index d02cd8759a..8f4299a6d0 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -124,7 +124,7 @@ def load_config_from_file(path: str | Path) -> dict[str, str]: def get_secrets(name: str) -> dict[str, str]: secrets_dir = Path(f"{DRIVERS_TOOLS}/.evergreen/secrets_handling") - run_command(f"bash {secrets_dir}/setup-secrets.sh {name}", cwd=secrets_dir) + run_command(f"bash {secrets_dir.as_posix()}/setup-secrets.sh {name}", cwd=secrets_dir) return load_config_from_file(secrets_dir / "secrets-export.sh")