PYTHON-4888 Use shrub.py for versioned api tests (#1949)
This commit is contained in:
parent
a1ade45dd3
commit
849ed7970f
@ -2305,28 +2305,6 @@ axes:
|
||||
variables:
|
||||
COVERAGE: "coverage"
|
||||
|
||||
- id: versionedApi
|
||||
display_name: "versionedApi"
|
||||
values:
|
||||
# Test against a cluster with requireApiVersion=1.
|
||||
- id: "requireApiVersion1"
|
||||
display_name: "requireApiVersion1"
|
||||
tags: [ "versionedApi_tag" ]
|
||||
variables:
|
||||
# REQUIRE_API_VERSION is set to make drivers-evergreen-tools
|
||||
# start a cluster with the requireApiVersion parameter.
|
||||
REQUIRE_API_VERSION: "1"
|
||||
# MONGODB_API_VERSION is the apiVersion to use in the test suite.
|
||||
MONGODB_API_VERSION: "1"
|
||||
# Test against a cluster with acceptApiVersion2 but without
|
||||
# requireApiVersion, and don't automatically add apiVersion to
|
||||
# clients created in the test suite.
|
||||
- id: "acceptApiVersion2"
|
||||
display_name: "acceptApiVersion2"
|
||||
tags: [ "versionedApi_tag" ]
|
||||
variables:
|
||||
ORCHESTRATION_FILE: "versioned-api-testing.json"
|
||||
|
||||
- id: serverless
|
||||
display_name: "Serverless"
|
||||
values:
|
||||
@ -3366,6 +3344,74 @@ buildvariants:
|
||||
SSL: ssl
|
||||
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
|
||||
|
||||
# Versioned API tests.
|
||||
- name: versioned-api-require-v1-rhel8-py3.9-auth
|
||||
tasks:
|
||||
- name: .standalone .5.0
|
||||
- name: .standalone .6.0
|
||||
- name: .standalone .7.0
|
||||
- name: .standalone .8.0
|
||||
- name: .standalone .rapid
|
||||
- name: .standalone .latest
|
||||
display_name: Versioned API require v1 RHEL8 py3.9 Auth
|
||||
run_on:
|
||||
- rhel87-small
|
||||
expansions:
|
||||
AUTH: auth
|
||||
REQUIRE_API_VERSION: "1"
|
||||
MONGODB_API_VERSION: "1"
|
||||
PYTHON_BINARY: /opt/python/3.9/bin/python3
|
||||
tags: [versionedApi_tag]
|
||||
- name: versioned-api-accept-v2-rhel8-py3.9-auth
|
||||
tasks:
|
||||
- name: .standalone .5.0
|
||||
- name: .standalone .6.0
|
||||
- name: .standalone .7.0
|
||||
- name: .standalone .8.0
|
||||
- name: .standalone .rapid
|
||||
- name: .standalone .latest
|
||||
display_name: Versioned API accept v2 RHEL8 py3.9 Auth
|
||||
run_on:
|
||||
- rhel87-small
|
||||
expansions:
|
||||
AUTH: auth
|
||||
ORCHESTRATION_FILE: versioned-api-testing.json
|
||||
PYTHON_BINARY: /opt/python/3.9/bin/python3
|
||||
tags: [versionedApi_tag]
|
||||
- name: versioned-api-require-v1-rhel8-py3.13-auth
|
||||
tasks:
|
||||
- name: .standalone .5.0
|
||||
- name: .standalone .6.0
|
||||
- name: .standalone .7.0
|
||||
- name: .standalone .8.0
|
||||
- name: .standalone .rapid
|
||||
- name: .standalone .latest
|
||||
display_name: Versioned API require v1 RHEL8 py3.13 Auth
|
||||
run_on:
|
||||
- rhel87-small
|
||||
expansions:
|
||||
AUTH: auth
|
||||
REQUIRE_API_VERSION: "1"
|
||||
MONGODB_API_VERSION: "1"
|
||||
PYTHON_BINARY: /opt/python/3.13/bin/python3
|
||||
tags: [versionedApi_tag]
|
||||
- name: versioned-api-accept-v2-rhel8-py3.13-auth
|
||||
tasks:
|
||||
- name: .standalone .5.0
|
||||
- name: .standalone .6.0
|
||||
- name: .standalone .7.0
|
||||
- name: .standalone .8.0
|
||||
- name: .standalone .rapid
|
||||
- name: .standalone .latest
|
||||
display_name: Versioned API accept v2 RHEL8 py3.13 Auth
|
||||
run_on:
|
||||
- rhel87-small
|
||||
expansions:
|
||||
AUTH: auth
|
||||
ORCHESTRATION_FILE: versioned-api-testing.json
|
||||
PYTHON_BINARY: /opt/python/3.13/bin/python3
|
||||
tags: [versionedApi_tag]
|
||||
|
||||
- matrix_name: "tests-fips"
|
||||
matrix_spec:
|
||||
platform:
|
||||
@ -3559,22 +3605,6 @@ buildvariants:
|
||||
tasks:
|
||||
- name: atlas-data-lake-tests
|
||||
|
||||
- matrix_name: "stable-api-tests"
|
||||
matrix_spec:
|
||||
platform: rhel8
|
||||
python-version: ["3.9", "3.10"]
|
||||
auth: "auth"
|
||||
versionedApi: "*"
|
||||
display_name: "Versioned API ${versionedApi} ${python-version}"
|
||||
batchtime: 10080 # 7 days
|
||||
tasks:
|
||||
# Versioned API was introduced in MongoDB 4.7
|
||||
- "test-latest-standalone"
|
||||
- "test-8.0-standalone"
|
||||
- "test-7.0-standalone"
|
||||
- "test-6.0-standalone"
|
||||
- "test-5.0-standalone"
|
||||
|
||||
# OCSP test matrix.
|
||||
- name: ocsp-test-rhel8-v4.4-py3.9
|
||||
tasks:
|
||||
|
||||
@ -23,7 +23,6 @@ from shrub.v3.shrub_service import ShrubService
|
||||
##############
|
||||
|
||||
ALL_VERSIONS = ["4.0", "4.4", "5.0", "6.0", "7.0", "8.0", "rapid", "latest"]
|
||||
VERSIONS_6_0_PLUS = ["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
|
||||
@ -112,6 +111,14 @@ def get_python_binary(python: str, host: str) -> str:
|
||||
raise ValueError(f"no match found for python {python} on {host}")
|
||||
|
||||
|
||||
def get_pythons_from(min_version: str) -> list[str]:
|
||||
"""Get all pythons starting from a minimum version."""
|
||||
min_version_float = float(min_version)
|
||||
rapid_latest = ["rapid", "latest"]
|
||||
versions = [v for v in ALL_VERSIONS if v not in rapid_latest]
|
||||
return [v for v in versions if float(v) >= min_version_float] + rapid_latest
|
||||
|
||||
|
||||
def get_display_name(base: str, host: str, **kwargs) -> str:
|
||||
"""Get the display name of a variant."""
|
||||
display_name = f"{base} {HOSTS[host].display_name}"
|
||||
@ -243,7 +250,7 @@ def create_server_variants() -> list[BuildVariant]:
|
||||
tasks = [f".{topology}"]
|
||||
# MacOS arm64 only works on server versions 6.0+
|
||||
if host == "macos-arm64":
|
||||
tasks = [f".{topology} .{version}" for version in VERSIONS_6_0_PLUS]
|
||||
tasks = [f".{topology} .{version}" for version in get_pythons_from("6.0")]
|
||||
expansions = dict(AUTH=auth, SSL=ssl, TEST_SUITES=test_suite, SKIP_CSOT_TESTS="true")
|
||||
display_name = get_display_name("Test", host, python=python, **expansions)
|
||||
variant = create_variant(
|
||||
@ -330,7 +337,7 @@ def create_load_balancer_variants():
|
||||
task_names = ["load-balancer-test"]
|
||||
batchtime = BATCHTIME_WEEK
|
||||
expansions_base = dict(test_loadbalancer="true")
|
||||
versions = ["6.0", "7.0", "8.0", "latest", "rapid"]
|
||||
versions = get_pythons_from("6.0")
|
||||
variants = []
|
||||
pythons = CPYTHONS + PYPYS
|
||||
for ind, (version, (auth, ssl)) in enumerate(product(versions, AUTH_SSLS)):
|
||||
@ -442,10 +449,42 @@ def create_pyopenssl_variants():
|
||||
return variants
|
||||
|
||||
|
||||
def create_versioned_api_tests():
|
||||
host = "rhel8"
|
||||
tags = ["versionedApi_tag"]
|
||||
tasks = [f".standalone .{v}" for v in get_pythons_from("5.0")]
|
||||
variants = []
|
||||
types = ["require v1", "accept v2"]
|
||||
|
||||
# All python versions across platforms.
|
||||
for python, test_type in product(MIN_MAX_PYTHON, types):
|
||||
expansions = dict(AUTH="auth")
|
||||
# Test against a cluster with requireApiVersion=1.
|
||||
if test_type == types[0]:
|
||||
# REQUIRE_API_VERSION is set to make drivers-evergreen-tools
|
||||
# start a cluster with the requireApiVersion parameter.
|
||||
expansions["REQUIRE_API_VERSION"] = "1"
|
||||
# MONGODB_API_VERSION is the apiVersion to use in the test suite.
|
||||
expansions["MONGODB_API_VERSION"] = "1"
|
||||
else:
|
||||
# Test against a cluster with acceptApiVersion2 but without
|
||||
# requireApiVersion, and don't automatically add apiVersion to
|
||||
# clients created in the test suite.
|
||||
expansions["ORCHESTRATION_FILE"] = "versioned-api-testing.json"
|
||||
base_display_name = f"Versioned API {test_type}"
|
||||
display_name = get_display_name(base_display_name, host, python=python, **expansions)
|
||||
variant = create_variant(
|
||||
tasks, display_name, host=host, python=python, tags=tags, expansions=expansions
|
||||
)
|
||||
variants.append(variant)
|
||||
|
||||
return variants
|
||||
|
||||
|
||||
##################
|
||||
# Generate Config
|
||||
##################
|
||||
|
||||
variants = create_pyopenssl_variants()
|
||||
variants = create_versioned_api_tests()
|
||||
# print(len(variants))
|
||||
generate_yaml(variants=variants)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user