PYTHON-4868 Generate server tests using shrub.py (#1930)

This commit is contained in:
Steven Silvester 2024-10-15 13:33:04 -05:00 committed by GitHub
parent 82e673d660
commit 1b6c0d3a2a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 583 additions and 92 deletions

View File

@ -409,6 +409,7 @@ functions:
AUTH=${AUTH} \
SSL=${SSL} \
TEST_DATA_LAKE=${TEST_DATA_LAKE} \
TEST_SUITES=${TEST_SUITES} \
MONGODB_API_VERSION=${MONGODB_API_VERSION} \
SKIP_HATCH=${SKIP_HATCH} \
bash ${PROJECT_DIRECTORY}/.evergreen/hatch.sh test:test-eg
@ -2399,6 +2400,470 @@ axes:
batchtime: 10080 # 7 days
buildvariants:
# Server Tests for RHEL8.
- name: test-rhel8-py3.9-auth-ssl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 py3.9 Auth SSL cov
run_on:
- rhel87-small
expansions:
AUTH: auth
SSL: ssl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/3.9/bin/python3
tags: [coverage_tag]
- name: test-rhel8-py3.9-noauth-ssl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 py3.9 NoAuth SSL cov
run_on:
- rhel87-small
expansions:
AUTH: noauth
SSL: ssl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/3.9/bin/python3
tags: [coverage_tag]
- name: test-rhel8-py3.9-noauth-nossl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 py3.9 NoAuth NoSSL cov
run_on:
- rhel87-small
expansions:
AUTH: noauth
SSL: nossl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/3.9/bin/python3
tags: [coverage_tag]
- name: test-rhel8-py3.13-auth-ssl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 py3.13 Auth SSL cov
run_on:
- rhel87-small
expansions:
AUTH: auth
SSL: ssl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/3.13/bin/python3
tags: [coverage_tag]
- name: test-rhel8-py3.13-noauth-ssl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 py3.13 NoAuth SSL cov
run_on:
- rhel87-small
expansions:
AUTH: noauth
SSL: ssl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/3.13/bin/python3
tags: [coverage_tag]
- name: test-rhel8-py3.13-noauth-nossl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 py3.13 NoAuth NoSSL cov
run_on:
- rhel87-small
expansions:
AUTH: noauth
SSL: nossl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/3.13/bin/python3
tags: [coverage_tag]
- name: test-rhel8-pypy3.10-auth-ssl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 pypy3.10 Auth SSL cov
run_on:
- rhel87-small
expansions:
AUTH: auth
SSL: ssl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
tags: [coverage_tag]
- name: test-rhel8-pypy3.10-noauth-ssl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 pypy3.10 NoAuth SSL cov
run_on:
- rhel87-small
expansions:
AUTH: noauth
SSL: ssl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
tags: [coverage_tag]
- name: test-rhel8-pypy3.10-noauth-nossl-cov
tasks:
- name: .standalone
- name: .replica_set
- name: .sharded_cluster
display_name: Test RHEL8 pypy3.10 NoAuth NoSSL cov
run_on:
- rhel87-small
expansions:
AUTH: noauth
SSL: nossl
COVERAGE: coverage
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
tags: [coverage_tag]
- name: test-rhel8-py3.10-auth-ssl
tasks:
- name: .standalone
display_name: Test RHEL8 py3.10 Auth SSL
run_on:
- rhel87-small
expansions:
AUTH: auth
SSL: ssl
PYTHON_BINARY: /opt/python/3.10/bin/python3
- name: test-rhel8-py3.11-noauth-ssl
tasks:
- name: .replica_set
display_name: Test RHEL8 py3.11 NoAuth SSL
run_on:
- rhel87-small
expansions:
AUTH: noauth
SSL: ssl
PYTHON_BINARY: /opt/python/3.11/bin/python3
- name: test-rhel8-py3.12-noauth-nossl
tasks:
- name: .sharded_cluster
display_name: Test RHEL8 py3.12 NoAuth NoSSL
run_on:
- rhel87-small
expansions:
AUTH: noauth
SSL: nossl
PYTHON_BINARY: /opt/python/3.12/bin/python3
- name: test-rhel8-pypy3.9-auth-ssl
tasks:
- name: .standalone
display_name: Test RHEL8 pypy3.9 Auth SSL
run_on:
- rhel87-small
expansions:
AUTH: auth
SSL: ssl
PYTHON_BINARY: /opt/python/pypy3.9/bin/python3
# Server tests for MacOS.
- name: test-macos-py3.9-auth-ssl-sync
tasks:
- name: .standalone
display_name: Test macOS py3.9 Auth SSL Sync
run_on:
- macos-14
expansions:
AUTH: auth
SSL: ssl
TEST_SUITES: default
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-py3.9-auth-ssl-async
tasks:
- name: .standalone
display_name: Test macOS py3.9 Auth SSL Async
run_on:
- macos-14
expansions:
AUTH: auth
SSL: ssl
TEST_SUITES: default_async
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-py3.13-noauth-ssl-sync
tasks:
- name: .replica_set
display_name: Test macOS py3.13 NoAuth SSL Sync
run_on:
- macos-14
expansions:
AUTH: noauth
SSL: ssl
TEST_SUITES: default
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-py3.13-noauth-ssl-async
tasks:
- name: .replica_set
display_name: Test macOS py3.13 NoAuth SSL Async
run_on:
- macos-14
expansions:
AUTH: noauth
SSL: ssl
TEST_SUITES: default_async
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-py3.9-noauth-nossl-sync
tasks:
- name: .sharded_cluster
display_name: Test macOS py3.9 NoAuth NoSSL Sync
run_on:
- macos-14
expansions:
AUTH: noauth
SSL: nossl
TEST_SUITES: default
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-py3.9-noauth-nossl-async
tasks:
- name: .sharded_cluster
display_name: Test macOS py3.9 NoAuth NoSSL Async
run_on:
- macos-14
expansions:
AUTH: noauth
SSL: nossl
TEST_SUITES: default_async
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
SKIP_CSOT_TESTS: "true"
# Server tests for macOS Arm64.
- name: test-macos-arm64-py3.9-auth-ssl-sync
tasks:
- name: .standalone
display_name: Test macOS Arm64 py3.9 Auth SSL Sync
run_on:
- macos-14-arm64
expansions:
AUTH: auth
SSL: ssl
TEST_SUITES: default
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-arm64-py3.9-auth-ssl-async
tasks:
- name: .standalone
display_name: Test macOS Arm64 py3.9 Auth SSL Async
run_on:
- macos-14-arm64
expansions:
AUTH: auth
SSL: ssl
TEST_SUITES: default_async
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-arm64-py3.13-noauth-ssl-sync
tasks:
- name: .replica_set
display_name: Test macOS Arm64 py3.13 NoAuth SSL Sync
run_on:
- macos-14-arm64
expansions:
AUTH: noauth
SSL: ssl
TEST_SUITES: default
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-arm64-py3.13-noauth-ssl-async
tasks:
- name: .replica_set
display_name: Test macOS Arm64 py3.13 NoAuth SSL Async
run_on:
- macos-14-arm64
expansions:
AUTH: noauth
SSL: ssl
TEST_SUITES: default_async
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-arm64-py3.9-noauth-nossl-sync
tasks:
- name: .sharded_cluster
display_name: Test macOS Arm64 py3.9 NoAuth NoSSL Sync
run_on:
- macos-14-arm64
expansions:
AUTH: noauth
SSL: nossl
TEST_SUITES: default
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
SKIP_CSOT_TESTS: "true"
- name: test-macos-arm64-py3.9-noauth-nossl-async
tasks:
- name: .sharded_cluster
display_name: Test macOS Arm64 py3.9 NoAuth NoSSL Async
run_on:
- macos-14-arm64
expansions:
AUTH: noauth
SSL: nossl
TEST_SUITES: default_async
PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3
SKIP_CSOT_TESTS: "true"
# Server tests for Windows.
- name: test-win64-py3.9-auth-ssl-sync
tasks:
- name: .standalone
display_name: Test Win64 py3.9 Auth SSL Sync
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: auth
SSL: ssl
TEST_SUITES: default
PYTHON_BINARY: C:/python/Python39/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win64-py3.9-auth-ssl-async
tasks:
- name: .standalone
display_name: Test Win64 py3.9 Auth SSL Async
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: auth
SSL: ssl
TEST_SUITES: default_async
PYTHON_BINARY: C:/python/Python39/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win64-py3.13-noauth-ssl-sync
tasks:
- name: .replica_set
display_name: Test Win64 py3.13 NoAuth SSL Sync
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: noauth
SSL: ssl
TEST_SUITES: default
PYTHON_BINARY: C:/python/Python313/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win64-py3.13-noauth-ssl-async
tasks:
- name: .replica_set
display_name: Test Win64 py3.13 NoAuth SSL Async
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: noauth
SSL: ssl
TEST_SUITES: default_async
PYTHON_BINARY: C:/python/Python313/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win64-py3.9-noauth-nossl-sync
tasks:
- name: .sharded_cluster
display_name: Test Win64 py3.9 NoAuth NoSSL Sync
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: noauth
SSL: nossl
TEST_SUITES: default
PYTHON_BINARY: C:/python/Python39/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win64-py3.9-noauth-nossl-async
tasks:
- name: .sharded_cluster
display_name: Test Win64 py3.9 NoAuth NoSSL Async
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: noauth
SSL: nossl
TEST_SUITES: default_async
PYTHON_BINARY: C:/python/Python39/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win32-py3.9-auth-ssl-sync
tasks:
- name: .standalone
display_name: Test Win32 py3.9 Auth SSL Sync
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: auth
SSL: ssl
TEST_SUITES: default
PYTHON_BINARY: C:/python/32/Python39/python.exe
SKIP_CSOT_TESTS: "true"
# Server tests for Win32.
- name: test-win32-py3.9-auth-ssl-async
tasks:
- name: .standalone
display_name: Test Win32 py3.9 Auth SSL Async
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: auth
SSL: ssl
TEST_SUITES: default_async
PYTHON_BINARY: C:/python/32/Python39/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win32-py3.13-noauth-ssl-sync
tasks:
- name: .replica_set
display_name: Test Win32 py3.13 NoAuth SSL Sync
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: noauth
SSL: ssl
TEST_SUITES: default
PYTHON_BINARY: C:/python/32/Python313/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win32-py3.13-noauth-ssl-async
tasks:
- name: .replica_set
display_name: Test Win32 py3.13 NoAuth SSL Async
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: noauth
SSL: ssl
TEST_SUITES: default_async
PYTHON_BINARY: C:/python/32/Python313/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win32-py3.9-noauth-nossl-sync
tasks:
- name: .sharded_cluster
display_name: Test Win32 py3.9 NoAuth NoSSL Sync
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: noauth
SSL: nossl
TEST_SUITES: default
PYTHON_BINARY: C:/python/32/Python39/python.exe
SKIP_CSOT_TESTS: "true"
- name: test-win32-py3.9-noauth-nossl-async
tasks:
- name: .sharded_cluster
display_name: Test Win32 py3.9 NoAuth NoSSL Async
run_on:
- windows-64-vsMulti-small
expansions:
AUTH: noauth
SSL: nossl
TEST_SUITES: default_async
PYTHON_BINARY: C:/python/32/Python39/python.exe
SKIP_CSOT_TESTS: "true"
- matrix_name: "tests-fips"
matrix_spec:
platform:
@ -2409,44 +2874,6 @@ buildvariants:
tasks:
- "test-fips-standalone"
- matrix_name: "test-macos"
matrix_spec:
platform:
# MacOS introduced SSL support with MongoDB >= 3.2.
# Older server versions (2.6, 3.0) are supported without SSL.
- macos
auth: "*"
ssl: "*"
exclude_spec:
# No point testing with SSL without auth.
- platform: macos
auth: "noauth"
ssl: "ssl"
display_name: "${platform} ${auth} ${ssl}"
tasks:
- ".latest"
- ".8.0"
- ".7.0"
- ".6.0"
- ".5.0"
- ".4.4"
- ".4.2"
- ".4.0"
- matrix_name: "test-macos-arm64"
matrix_spec:
platform:
- macos-arm64
auth-ssl: "*"
display_name: "${platform} ${auth-ssl}"
tasks:
- ".latest"
- ".8.0"
- ".7.0"
- ".6.0"
- ".5.0"
- ".4.4"
- matrix_name: "test-macos-encryption"
matrix_spec:
platform:
@ -2486,24 +2913,6 @@ buildvariants:
tasks:
- ".6.0"
- matrix_name: "tests-python-version-rhel8-test-ssl"
matrix_spec:
platform: rhel8
python-version: "*"
auth-ssl: "*"
coverage: "*"
display_name: "${python-version} ${platform} ${auth-ssl} ${coverage}"
tasks: &all-server-versions
- ".rapid"
- ".latest"
- ".8.0"
- ".7.0"
- ".6.0"
- ".5.0"
- ".4.4"
- ".4.2"
- ".4.0"
- matrix_name: "tests-pyopenssl"
matrix_spec:
platform: rhel8
@ -2580,7 +2989,16 @@ buildvariants:
auth-ssl: "*"
coverage: "*"
display_name: "${c-extensions} ${python-version} ${platform} ${auth} ${ssl} ${coverage}"
tasks: *all-server-versions
tasks: &all-server-versions
- ".rapid"
- ".latest"
- ".8.0"
- ".7.0"
- ".6.0"
- ".5.0"
- ".4.4"
- ".4.2"
- ".4.0"
- matrix_name: "tests-python-version-rhel8-compression"
matrix_spec:
@ -2629,22 +3047,6 @@ buildvariants:
display_name: "${green-framework} ${python-version} ${platform} ${auth-ssl}"
tasks: *all-server-versions
- matrix_name: "tests-windows-python-version"
matrix_spec:
platform: windows
python-version-windows: "*"
auth-ssl: "*"
display_name: "${platform} ${python-version-windows} ${auth-ssl}"
tasks: *all-server-versions
- matrix_name: "tests-windows-python-version-32-bit"
matrix_spec:
platform: windows
python-version-windows-32: "*"
auth-ssl: "*"
display_name: "${platform} ${python-version-windows-32} ${auth-ssl}"
tasks: *all-server-versions
- matrix_name: "tests-python-version-supports-openssl-102-test-ssl"
matrix_spec:
platform: rhel7

View File

@ -34,8 +34,8 @@ else # Set up virtualenv before installing hatch
fi
export HATCH_CONFIG
hatch config restore
hatch config set dirs.data ".hatch/data"
hatch config set dirs.cache ".hatch/cache"
hatch config set dirs.data "$(pwd)/.hatch/data"
hatch config set dirs.cache "$(pwd)/.hatch/cache"
run_hatch() {
python -m hatch run "$@"

View File

@ -30,7 +30,7 @@ set -o xtrace
AUTH=${AUTH:-noauth}
SSL=${SSL:-nossl}
TEST_SUITES=""
TEST_SUITES=${TEST_SUITES:-}
TEST_ARGS="${*:1}"
export PIP_QUIET=1 # Quiet by default

View File

@ -26,7 +26,17 @@ ALL_VERSIONS = ["4.0", "4.4", "5.0", "6.0", "7.0", "8.0", "rapid", "latest"]
CPYTHONS = ["3.9", "3.10", "3.11", "3.12", "3.13"]
PYPYS = ["pypy3.9", "pypy3.10"]
ALL_PYTHONS = CPYTHONS + PYPYS
MIN_MAX_PYTHON = [CPYTHONS[0], CPYTHONS[-1]]
BATCHTIME_WEEK = 10080
AUTH_SSLS = [("auth", "ssl"), ("noauth", "ssl"), ("noauth", "nossl")]
TOPOLOGIES = ["standalone", "replica_set", "sharded_cluster"]
SYNCS = ["sync", "async"]
DISPLAY_LOOKUP = dict(
ssl=dict(ssl="SSL", nossl="NoSSL"),
auth=dict(auth="Auth", noauth="NoAuth"),
test_suites=dict(default="Sync", default_async="Async"),
coverage=dict(coverage="cov"),
)
HOSTS = dict()
@ -35,11 +45,18 @@ class Host:
name: str
run_on: str
display_name: str
expansions: dict[str, str]
HOSTS["rhel8"] = Host("rhel8", "rhel87-small", "RHEL8")
HOSTS["win64"] = Host("win64", "windows-64-vsMulti-small", "Win64")
HOSTS["macos"] = Host("macos", "macos-14", "macOS")
_macos_expansions = dict( # CSOT tests are unreliable on slow hosts.
SKIP_CSOT_TESTS="true"
)
HOSTS["rhel8"] = Host("rhel8", "rhel87-small", "RHEL8", dict())
HOSTS["win64"] = Host("win64", "windows-64-vsMulti-small", "Win64", _macos_expansions)
HOSTS["win32"] = Host("win32", "windows-64-vsMulti-small", "Win32", _macos_expansions)
HOSTS["macos"] = Host("macos", "macos-14", "macOS", _macos_expansions)
HOSTS["macos-arm64"] = Host("macos-arm64", "macos-14-arm64", "macOS Arm64", _macos_expansions)
##############
@ -67,6 +84,7 @@ def create_variant(
expansions["PYTHON_BINARY"] = get_python_binary(python, host)
if version:
expansions["VERSION"] = version
expansions.update(HOSTS[host].expansions)
expansions = expansions or None
return BuildVariant(
name=name,
@ -80,10 +98,8 @@ def create_variant(
def get_python_binary(python: str, host: str) -> str:
"""Get the appropriate python binary given a python version and host."""
if host == "win64":
is_32 = python.startswith("32-bit")
if is_32:
_, python = python.split()
if host in ["win64", "win32"]:
if host == "win32":
base = "C:/python/32"
else:
base = "C:/python"
@ -93,19 +109,29 @@ def get_python_binary(python: str, host: str) -> str:
if host == "rhel8":
return f"/opt/python/{python}/bin/python3"
if host == "macos":
if host in ["macos", "macos-arm64"]:
return f"/Library/Frameworks/Python.Framework/Versions/{python}/bin/python3"
raise ValueError(f"no match found for python {python} on {host}")
def get_display_name(base: str, host: str, version: str, python: str) -> str:
def get_display_name(base: str, host: str, **kwargs) -> str:
"""Get the display name of a variant."""
if version not in ["rapid", "latest"]:
version = f"v{version}"
if not python.startswith("pypy"):
python = f"py{python}"
return f"{base} {HOSTS[host].display_name} {version} {python}"
display_name = f"{base} {HOSTS[host].display_name}"
for key, value in kwargs.items():
name = value
if key == "version":
if value not in ["rapid", "latest"]:
name = f"v{value}"
elif key == "python":
if not value.startswith("pypy"):
name = f"py{value}"
elif key.lower() in DISPLAY_LOOKUP:
name = DISPLAY_LOOKUP[key.lower()][value]
else:
raise ValueError(f"Missing display handling for {key}")
display_name = f"{display_name} {name}"
return display_name
def zip_cycle(*iterables, empty_default=None):
@ -115,6 +141,15 @@ def zip_cycle(*iterables, empty_default=None):
yield tuple(next(i, empty_default) for i in cycles)
def generate_yaml(tasks=None, variants=None):
"""Generate the yaml for a given set of tasks and variants."""
project = EvgProject(tasks=tasks, buildvariants=variants)
out = ShrubService.generate_yaml(project)
# Dedent by two spaces to match what we use in config.yml
lines = [line[2:] for line in out.splitlines()]
print("\n".join(lines)) # noqa: T201
##############
# Variants
##############
@ -159,9 +194,63 @@ def create_ocsp_variants() -> list[BuildVariant]:
return variants
def create_server_variants() -> list[BuildVariant]:
variants = []
# Run the full matrix on linux with min and max CPython, and latest pypy.
host = "rhel8"
for python, (auth, ssl) in product([*MIN_MAX_PYTHON, PYPYS[-1]], AUTH_SSLS):
display_name = f"Test {host}"
expansions = dict(AUTH=auth, SSL=ssl, COVERAGE="coverage")
display_name = get_display_name("Test", host, python=python, **expansions)
variant = create_variant(
[f".{t}" for t in TOPOLOGIES],
display_name,
python=python,
host=host,
tags=["coverage_tag"],
expansions=expansions,
)
variants.append(variant)
# Test the rest of the pythons on linux.
for python, (auth, ssl), topology in zip_cycle(
CPYTHONS[1:-1] + PYPYS[:-1], AUTH_SSLS, TOPOLOGIES
):
display_name = f"Test {host}"
expansions = dict(AUTH=auth, SSL=ssl)
display_name = get_display_name("Test", host, python=python, **expansions)
variant = create_variant(
[f".{topology}"],
display_name,
python=python,
host=host,
expansions=expansions,
)
variants.append(variant)
# Test a subset on each of the other platforms.
for host in ("macos", "macos-arm64", "win64", "win32"):
for (python, (auth, ssl), topology), sync in product(
zip_cycle(MIN_MAX_PYTHON, AUTH_SSLS, TOPOLOGIES), SYNCS
):
test_suite = "default" if sync == "sync" else "default_async"
expansions = dict(AUTH=auth, SSL=ssl, TEST_SUITES=test_suite)
display_name = get_display_name("Test", host, python=python, **expansions)
variant = create_variant(
[f".{topology}"],
display_name,
python=python,
host=host,
expansions=expansions,
)
variants.append(variant)
return variants
##################
# Generate Config
##################
project = EvgProject(tasks=None, buildvariants=create_ocsp_variants())
print(ShrubService.generate_yaml(project)) # noqa: T201
generate_yaml(variants=create_server_variants())