diff --git a/.evergreen/config.yml b/.evergreen/config.yml index e357f02f2b..4868096e83 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -1830,15 +1830,6 @@ tasks: # and then run our test suite on the vm. export GCPOIDC_TEST_CMD="OIDC_ENV=gcp ./.evergreen/run-mongodb-oidc-test.sh" bash $DRIVERS_TOOLS/.evergreen/auth_oidc/gcp/run-driver-test.sh - - - name: "test-fips-standalone" - tags: ["fips"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "latest" - TOPOLOGY: "server" - - func: "run tests" # }}} - name: "coverage-report" tags: ["coverage"] @@ -2004,72 +1995,17 @@ axes: - id: platform display_name: OS values: - - id: macos - display_name: "macOS" - run_on: macos-14 - variables: - skip_EC2_auth_test: true - skip_ECS_auth_test: true - skip_web_identity_auth_test: true - # CSOT tests are unreliable on our slow macOS hosts. - SKIP_CSOT_TESTS: true - - id: macos-arm64 - display_name: "macOS Arm64" - run_on: macos-14-arm64 - variables: - skip_EC2_auth_test: true - skip_ECS_auth_test: true - skip_web_identity_auth_test: true - # CSOT tests are unreliable on our slow macOS hosts. - SKIP_CSOT_TESTS: true - - id: rhel7 - display_name: "RHEL 7.x" - run_on: rhel79-small - batchtime: 10080 # 7 days - id: rhel8 display_name: "RHEL 8.x" run_on: rhel8.8-small batchtime: 10080 # 7 days - - id: rhel9-fips - display_name: "RHEL 9 FIPS" - run_on: rhel92-fips - batchtime: 10080 # 7 days - - id: ubuntu-22.04 - display_name: "Ubuntu 22.04" - run_on: ubuntu2204-small - batchtime: 10080 # 7 days - - id: ubuntu-20.04 - display_name: "Ubuntu 20.04" - run_on: ubuntu2004-small - batchtime: 10080 # 7 days - - id: rhel8-zseries - display_name: "RHEL 8 (zSeries)" - run_on: rhel8-zseries-small - batchtime: 10080 # 7 days - variables: - SKIP_HATCH: true - - id: rhel8-power8 - display_name: "RHEL 8 (POWER8)" - run_on: rhel8-power-small - batchtime: 10080 # 7 days - variables: - SKIP_HATCH: true - - id: rhel8-arm64 - display_name: "RHEL 8 (ARM64)" - run_on: rhel82-arm64-small - batchtime: 10080 # 7 days - variables: - id: windows display_name: "Windows 64" run_on: windows-64-vsMulti-small batchtime: 10080 # 7 days - variables: - skip_ECS_auth_test: true - skip_EC2_auth_test: true - skip_web_identity_auth_test: true - venv_bin_dir: "Scripts" - # CSOT tests are unreliable on our slow Windows hosts. - SKIP_CSOT_TESTS: true + - id: macos + display_name: "macOS" + run_on: macos-14 # Test with authentication? - id: auth @@ -2147,30 +2083,6 @@ axes: variables: PYTHON_BINARY: "/opt/python/pypy3.10/bin/pypy3" - - id: python-version-windows - display_name: "Python" - values: - - id: "3.9" - display_name: "Python 3.9" - variables: - PYTHON_BINARY: "C:/python/Python39/python.exe" - - id: "3.10" - display_name: "Python 3.10" - variables: - PYTHON_BINARY: "C:/python/Python310/python.exe" - - id: "3.11" - display_name: "Python 3.11" - variables: - PYTHON_BINARY: "C:/python/Python311/python.exe" - - id: "3.12" - display_name: "Python 3.12" - variables: - PYTHON_BINARY: "C:/python/Python312/python.exe" - - id: "3.13" - display_name: "Python 3.13" - variables: - PYTHON_BINARY: "C:/python/Python313/python.exe" - buildvariants: # Server Tests. - name: test-rhel8-py3.9-auth-ssl-cov @@ -3889,37 +3801,175 @@ buildvariants: skip_web_identity_auth_test: "true" PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- matrix_name: "tests-fips" - matrix_spec: - platform: - - rhel9-fips - auth: "auth" - ssl: "ssl" - display_name: "${platform} ${auth} ${ssl}" +# Other hosts tests. +- name: openssl-1.0.2-rhel7-py3.9-auth-ssl tasks: - - "test-fips-standalone" - -# Test one server version with zSeries, POWER8, and ARM. -- matrix_name: "test-different-cpu-architectures" - matrix_spec: - platform: - - rhel8-zseries # Added in 5.0.8 (SERVER-44074) - - rhel8-power8 # Added in 4.2.7 (SERVER-44072) - - rhel8-arm64 # Added in 4.4.2 (SERVER-48282) - auth-ssl: "*" - display_name: "${platform} ${auth-ssl}" + - name: .5.0 .standalone + display_name: OpenSSL 1.0.2 RHEL7 py3.9 Auth SSL + run_on: + - rhel79-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: auth + SSL: ssl + PYTHON_BINARY: /opt/python/3.9/bin/python3 +- name: openssl-1.0.2-rhel7-py3.9-noauth-ssl tasks: - - ".6.0" - -- matrix_name: "tests-python-version-supports-openssl-102-test-ssl" - matrix_spec: - platform: rhel7 - # Python 3.10+ requires OpenSSL 1.1.1+ - python-version: ["3.9"] - auth-ssl: "*" - display_name: "OpenSSL 1.0.2 ${python-version} ${platform} ${auth-ssl}" + - name: .5.0 .standalone + display_name: OpenSSL 1.0.2 RHEL7 py3.9 NoAuth SSL + run_on: + - rhel79-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: ssl + PYTHON_BINARY: /opt/python/3.9/bin/python3 +- name: openssl-1.0.2-rhel7-py3.9-noauth-nossl + tasks: + - name: .5.0 .standalone + display_name: OpenSSL 1.0.2 RHEL7 py3.9 NoAuth NoSSL + run_on: + - rhel79-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: nossl + PYTHON_BINARY: /opt/python/3.9/bin/python3 +- name: other-hosts-rhel9-fips-auth-ssl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL9-FIPS Auth SSL + run_on: + - rhel92-fips + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: auth + SSL: ssl +- name: other-hosts-rhel9-fips-noauth-ssl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL9-FIPS NoAuth SSL + run_on: + - rhel92-fips + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: ssl +- name: other-hosts-rhel9-fips-noauth-nossl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL9-FIPS NoAuth NoSSL + run_on: + - rhel92-fips + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: nossl +- name: other-hosts-rhel8-zseries-auth-ssl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL8-zseries Auth SSL + run_on: + - rhel8-zseries-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: auth + SSL: ssl +- name: other-hosts-rhel8-zseries-noauth-ssl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL8-zseries NoAuth SSL + run_on: + - rhel8-zseries-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: ssl +- name: other-hosts-rhel8-zseries-noauth-nossl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL8-zseries NoAuth NoSSL + run_on: + - rhel8-zseries-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: nossl +- name: other-hosts-rhel8-power8-auth-ssl tasks: - - ".5.0" + - name: .6.0 .standalone + display_name: Other hosts RHEL8-POWER8 Auth SSL + run_on: + - rhel8-power-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: auth + SSL: ssl +- name: other-hosts-rhel8-power8-noauth-ssl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL8-POWER8 NoAuth SSL + run_on: + - rhel8-power-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: ssl +- name: other-hosts-rhel8-power8-noauth-nossl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL8-POWER8 NoAuth NoSSL + run_on: + - rhel8-power-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: nossl +- name: other-hosts-rhel8-arm64-auth-ssl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL8-arm64 Auth SSL + run_on: + - rhel82-arm64-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: auth + SSL: ssl +- name: other-hosts-rhel8-arm64-noauth-ssl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL8-arm64 NoAuth SSL + run_on: + - rhel82-arm64-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: ssl +- name: other-hosts-rhel8-arm64-noauth-nossl + tasks: + - name: .6.0 .standalone + display_name: Other hosts RHEL8-arm64 NoAuth NoSSL + run_on: + - rhel82-arm64-small + batchtime: 10080 + expansions: + SKIP_HATCH: "true" + AUTH: noauth + SSL: nossl - matrix_name: "test-search-index-helpers" matrix_spec: diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 3f1ea724ed..1217c26885 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -49,6 +49,7 @@ class Host: display_name: str +# Hosts with toolchains. HOSTS["rhel8"] = Host("rhel8", "rhel87-small", "RHEL8") HOSTS["win64"] = Host("win64", "windows-64-vsMulti-small", "Win64") HOSTS["win32"] = Host("win32", "windows-64-vsMulti-small", "Win32") @@ -56,7 +57,7 @@ class Host: HOSTS["macos-arm64"] = Host("macos-arm64", "macos-14-arm64", "macOS Arm64") HOSTS["ubuntu20"] = Host("ubuntu20", "ubuntu2004-small", "Ubuntu-20") HOSTS["ubuntu22"] = Host("ubuntu22", "ubuntu2204-small", "Ubuntu-22") - +HOSTS["rhel7"] = Host("rhel7", "rhel79-small", "RHEL7") ############## # Helpers @@ -76,8 +77,11 @@ def create_variant( task_refs = [EvgTaskRef(name=n) for n in task_names] kwargs.setdefault("expansions", dict()) expansions = kwargs.pop("expansions", dict()).copy() - host = host or "rhel8" - run_on = [HOSTS[host].run_on] + if "run_on" in kwargs: + run_on = kwargs.pop("run_on") + else: + host = host or "rhel8" + run_on = [HOSTS[host].run_on] name = display_name.replace(" ", "-").lower() if python: expansions["PYTHON_BINARY"] = get_python_binary(python, host) @@ -104,7 +108,7 @@ def get_python_binary(python: str, host: str) -> str: python = python.replace(".", "") return f"{base}/Python{python}/python.exe" - if host in ["rhel8", "ubuntu22", "ubuntu20"]: + if host in ["rhel8", "ubuntu22", "ubuntu20", "rhel7"]: return f"/opt/python/{python}/bin/python3" if host in ["macos", "macos-arm64"]: @@ -131,9 +135,11 @@ def get_versions_until(max_version: str) -> list[str]: return versions -def get_display_name(base: str, host: str, **kwargs) -> str: +def get_display_name(base: str, host: str | None = None, **kwargs) -> str: """Get the display name of a variant.""" - display_name = f"{base} {HOSTS[host].display_name}" + display_name = base + if host is not None: + display_name += f" {HOSTS[host].display_name}" version = kwargs.pop("VERSION", None) if version: if version not in ["rapid", "latest"]: @@ -640,10 +646,48 @@ def generate_aws_auth_variants(): return variants +def generate_alternative_hosts_variants(): + base_expansions = dict(SKIP_HATCH="true") + batchtime = BATCHTIME_WEEK + variants = [] + + host = "rhel7" + for auth, ssl in AUTH_SSLS: + expansions = base_expansions.copy() + expansions["AUTH"] = auth + expansions["SSL"] = ssl + variants.append( + create_variant( + [".5.0 .standalone"], + get_display_name("OpenSSL 1.0.2", "rhel7", python=CPYTHONS[0], **expansions), + host=host, + python=CPYTHONS[0], + batchtime=batchtime, + expansions=expansions, + ) + ) + + hosts = ["rhel92-fips", "rhel8-zseries-small", "rhel8-power-small", "rhel82-arm64-small"] + host_names = ["RHEL9-FIPS", "RHEL8-zseries", "RHEL8-POWER8", "RHEL8-arm64"] + for (host, host_name), (auth, ssl) in product(zip(hosts, host_names), AUTH_SSLS): + expansions = base_expansions.copy() + expansions["AUTH"] = auth + expansions["SSL"] = ssl + variants.append( + create_variant( + [".6.0 .standalone"], + display_name=get_display_name(f"Other hosts {host_name}", **expansions), + expansions=expansions, + batchtime=batchtime, + run_on=[host], + ) + ) + return variants + + ################## # Generate Config ################## -variants = create_server_variants() -# print(len(variants)) +variants = generate_alternative_hosts_variants() generate_yaml(variants=variants)