Skip to content

Commit 31800c7

Browse files
committed
Merge branch 'master' of github.com:mongodb/mongo-python-driver
2 parents 0ed2438 + 4003edf commit 31800c7

File tree

3 files changed

+181
-101
lines changed

3 files changed

+181
-101
lines changed

.evergreen/config.yml

Lines changed: 111 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -2247,32 +2247,6 @@ axes:
22472247
variables:
22482248
MOD_WSGI_VERSION: "4"
22492249

2250-
# Install and use the driver's C-extensions?
2251-
- id: c-extensions
2252-
display_name: "C Extensions"
2253-
values:
2254-
- id: "without-c-extensions"
2255-
display_name: "Without C Extensions"
2256-
variables:
2257-
NO_EXT: "1"
2258-
- id: "with-c-extensions"
2259-
display_name: "With C Extensions"
2260-
variables:
2261-
NO_EXT: ""
2262-
2263-
# Choice of MongoDB storage engine
2264-
- id: storage-engine
2265-
display_name: Storage
2266-
values:
2267-
- id: mmapv1
2268-
display_name: MMAPv1
2269-
variables:
2270-
STORAGE_ENGINE: "mmapv1"
2271-
- id: inmemory
2272-
display_name: InMemory
2273-
variables:
2274-
STORAGE_ENGINE: "inmemory"
2275-
22762250
# Run with test commands disabled on server?
22772251
- id: disableTestCommands
22782252
display_name: Disable test commands
@@ -3331,6 +3305,34 @@ buildvariants:
33313305
SSL: ssl
33323306
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
33333307

3308+
# Storage Engine tests.
3309+
- name: storage-inmemory-rhel8-py3.9
3310+
tasks:
3311+
- name: .standalone .4.0
3312+
- name: .standalone .4.4
3313+
- name: .standalone .5.0
3314+
- name: .standalone .6.0
3315+
- name: .standalone .7.0
3316+
- name: .standalone .8.0
3317+
- name: .standalone .rapid
3318+
- name: .standalone .latest
3319+
display_name: Storage InMemory RHEL8 py3.9
3320+
run_on:
3321+
- rhel87-small
3322+
expansions:
3323+
STORAGE_ENGINE: inmemory
3324+
PYTHON_BINARY: /opt/python/3.9/bin/python3
3325+
- name: storage-mmapv1-rhel8-py3.9
3326+
tasks:
3327+
- name: .standalone .4.0
3328+
- name: .replica_set .4.0
3329+
display_name: Storage MMAPv1 RHEL8 py3.9
3330+
run_on:
3331+
- rhel87-small
3332+
expansions:
3333+
STORAGE_ENGINE: mmapv1
3334+
PYTHON_BINARY: /opt/python/3.9/bin/python3
3335+
33343336
# Versioned API tests.
33353337
- name: versioned-api-require-v1-rhel8-py3.9-auth
33363338
tasks:
@@ -3445,6 +3447,89 @@ buildvariants:
34453447
SSL: ssl
34463448
PYTHON_BINARY: /opt/python/3.12/bin/python3
34473449

3450+
# No C Ext tests.
3451+
- name: no-c-ext-rhel8-py3.9
3452+
tasks:
3453+
- name: .standalone
3454+
display_name: No C Ext RHEL8 py3.9
3455+
run_on:
3456+
- rhel87-small
3457+
expansions:
3458+
NO_EXT: "1"
3459+
PYTHON_BINARY: /opt/python/3.9/bin/python3
3460+
- name: no-c-ext-rhel8-py3.10
3461+
tasks:
3462+
- name: .replica_set
3463+
display_name: No C Ext RHEL8 py3.10
3464+
run_on:
3465+
- rhel87-small
3466+
expansions:
3467+
NO_EXT: "1"
3468+
PYTHON_BINARY: /opt/python/3.10/bin/python3
3469+
- name: no-c-ext-rhel8-py3.11
3470+
tasks:
3471+
- name: .sharded_cluster
3472+
display_name: No C Ext RHEL8 py3.11
3473+
run_on:
3474+
- rhel87-small
3475+
expansions:
3476+
NO_EXT: "1"
3477+
PYTHON_BINARY: /opt/python/3.11/bin/python3
3478+
- name: no-c-ext-rhel8-py3.12
3479+
tasks:
3480+
- name: .standalone
3481+
display_name: No C Ext RHEL8 py3.12
3482+
run_on:
3483+
- rhel87-small
3484+
expansions:
3485+
NO_EXT: "1"
3486+
PYTHON_BINARY: /opt/python/3.12/bin/python3
3487+
- name: no-c-ext-rhel8-py3.13
3488+
tasks:
3489+
- name: .replica_set
3490+
display_name: No C Ext RHEL8 py3.13
3491+
run_on:
3492+
- rhel87-small
3493+
expansions:
3494+
NO_EXT: "1"
3495+
PYTHON_BINARY: /opt/python/3.13/bin/python3
3496+
3497+
# Atlas Data Lake tests.
3498+
- name: atlas-data-lake-rhel8-py3.9-no-c
3499+
tasks:
3500+
- name: atlas-data-lake-tests
3501+
display_name: Atlas Data Lake RHEL8 py3.9 No C
3502+
run_on:
3503+
- rhel87-small
3504+
expansions:
3505+
NO_EXT: "1"
3506+
PYTHON_BINARY: /opt/python/3.9/bin/python3
3507+
- name: atlas-data-lake-rhel8-py3.9
3508+
tasks:
3509+
- name: atlas-data-lake-tests
3510+
display_name: Atlas Data Lake RHEL8 py3.9
3511+
run_on:
3512+
- rhel87-small
3513+
expansions:
3514+
PYTHON_BINARY: /opt/python/3.9/bin/python3
3515+
- name: atlas-data-lake-rhel8-py3.13-no-c
3516+
tasks:
3517+
- name: atlas-data-lake-tests
3518+
display_name: Atlas Data Lake RHEL8 py3.13 No C
3519+
run_on:
3520+
- rhel87-small
3521+
expansions:
3522+
NO_EXT: "1"
3523+
PYTHON_BINARY: /opt/python/3.13/bin/python3
3524+
- name: atlas-data-lake-rhel8-py3.13
3525+
tasks:
3526+
- name: atlas-data-lake-tests
3527+
display_name: Atlas Data Lake RHEL8 py3.13
3528+
run_on:
3529+
- rhel87-small
3530+
expansions:
3531+
PYTHON_BINARY: /opt/python/3.13/bin/python3
3532+
34483533
- matrix_name: "tests-fips"
34493534
matrix_spec:
34503535
platform:
@@ -3467,32 +3552,6 @@ buildvariants:
34673552
tasks:
34683553
- ".6.0"
34693554

3470-
- matrix_name: "tests-python-version-rhel8-without-c-extensions"
3471-
matrix_spec:
3472-
platform: rhel8
3473-
python-version: "*"
3474-
c-extensions: without-c-extensions
3475-
auth-ssl: noauth-nossl
3476-
coverage: "*"
3477-
exclude_spec:
3478-
# These interpreters are always tested without extensions.
3479-
- platform: rhel8
3480-
python-version: ["pypy3.9", "pypy3.10"]
3481-
c-extensions: "*"
3482-
auth-ssl: "*"
3483-
coverage: "*"
3484-
display_name: "${c-extensions} ${python-version} ${platform} ${auth} ${ssl} ${coverage}"
3485-
tasks: &all-server-versions
3486-
- ".rapid"
3487-
- ".latest"
3488-
- ".8.0"
3489-
- ".7.0"
3490-
- ".6.0"
3491-
- ".5.0"
3492-
- ".4.4"
3493-
- ".4.2"
3494-
- ".4.0"
3495-
34963555
- matrix_name: "tests-python-version-supports-openssl-102-test-ssl"
34973556
matrix_spec:
34983557
platform: rhel7
@@ -3503,38 +3562,6 @@ buildvariants:
35033562
tasks:
35043563
- ".5.0"
35053564

3506-
# Storage engine tests on RHEL 8.4 (x86_64) with Python 3.9.
3507-
- matrix_name: "tests-storage-engines"
3508-
matrix_spec:
3509-
platform: rhel8
3510-
storage-engine: "*"
3511-
python-version: "3.9"
3512-
display_name: "Storage ${storage-engine} ${python-version} ${platform}"
3513-
rules:
3514-
- if:
3515-
platform: rhel8
3516-
storage-engine: ["inmemory"]
3517-
python-version: "*"
3518-
then:
3519-
add_tasks:
3520-
- "test-latest-standalone"
3521-
- "test-8.0-standalone"
3522-
- "test-7.0-standalone"
3523-
- "test-6.0-standalone"
3524-
- "test-5.0-standalone"
3525-
- "test-4.4-standalone"
3526-
- "test-4.2-standalone"
3527-
- "test-4.0-standalone"
3528-
- if:
3529-
# MongoDB 4.2 drops support for MMAPv1
3530-
platform: rhel8
3531-
storage-engine: ["mmapv1"]
3532-
python-version: "*"
3533-
then:
3534-
add_tasks:
3535-
- "test-4.0-standalone"
3536-
- "test-4.0-replica_set"
3537-
35383565
# enableTestCommands=0 tests on RHEL 8.4 (x86_64) with Python 3.9.
35393566
- matrix_name: "test-disableTestCommands"
35403567
matrix_spec:
@@ -3613,16 +3640,6 @@ buildvariants:
36133640
tasks:
36143641
- "serverless_task_group"
36153642

3616-
- matrix_name: "data-lake-spec-tests"
3617-
matrix_spec:
3618-
platform: ubuntu-22.04
3619-
python-version: ["3.9", "3.10"]
3620-
auth: "auth"
3621-
c-extensions: "*"
3622-
display_name: "Atlas Data Lake ${python-version} ${c-extensions}"
3623-
tasks:
3624-
- name: atlas-data-lake-tests
3625-
36263643
# OCSP test matrix.
36273644
- name: ocsp-test-rhel8-v4.4-py3.9
36283645
tasks:

.evergreen/scripts/generate_config.py

Lines changed: 69 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,24 @@ def get_python_binary(python: str, host: str) -> str:
111111
raise ValueError(f"no match found for python {python} on {host}")
112112

113113

114-
def get_pythons_from(min_version: str) -> list[str]:
115-
"""Get all pythons starting from a minimum version."""
114+
def get_versions_from(min_version: str) -> list[str]:
115+
"""Get all server versions starting from a minimum version."""
116116
min_version_float = float(min_version)
117117
rapid_latest = ["rapid", "latest"]
118118
versions = [v for v in ALL_VERSIONS if v not in rapid_latest]
119119
return [v for v in versions if float(v) >= min_version_float] + rapid_latest
120120

121121

122+
def get_versions_until(max_version: str) -> list[str]:
123+
"""Get all server version up to a max version."""
124+
max_version_float = float(max_version)
125+
versions = [v for v in ALL_VERSIONS if v not in ["rapid", "latest"]]
126+
versions = [v for v in versions if float(v) <= max_version_float]
127+
if not len(versions):
128+
raise ValueError(f"No server versions found less <= {max_version}")
129+
return versions
130+
131+
122132
def get_display_name(base: str, host: str, **kwargs) -> str:
123133
"""Get the display name of a variant."""
124134
display_name = f"{base} {HOSTS[host].display_name}"
@@ -250,7 +260,7 @@ def create_server_variants() -> list[BuildVariant]:
250260
tasks = [f".{topology}"]
251261
# MacOS arm64 only works on server versions 6.0+
252262
if host == "macos-arm64":
253-
tasks = [f".{topology} .{version}" for version in get_pythons_from("6.0")]
263+
tasks = [f".{topology} .{version}" for version in get_versions_from("6.0")]
254264
expansions = dict(AUTH=auth, SSL=ssl, TEST_SUITES=test_suite, SKIP_CSOT_TESTS="true")
255265
display_name = get_display_name("Test", host, python=python, **expansions)
256266
variant = create_variant(
@@ -337,7 +347,7 @@ def create_load_balancer_variants():
337347
task_names = ["load-balancer-test"]
338348
batchtime = BATCHTIME_WEEK
339349
expansions_base = dict(test_loadbalancer="true")
340-
versions = get_pythons_from("6.0")
350+
versions = get_versions_from("6.0")
341351
variants = []
342352
pythons = CPYTHONS + PYPYS
343353
for ind, (version, (auth, ssl)) in enumerate(product(versions, AUTH_SSLS)):
@@ -449,10 +459,33 @@ def create_pyopenssl_variants():
449459
return variants
450460

451461

462+
def create_storage_engine_tests():
463+
host = "rhel8"
464+
engines = ["InMemory", "MMAPv1"]
465+
variants = []
466+
for engine in engines:
467+
python = CPYTHONS[0]
468+
expansions = dict(STORAGE_ENGINE=engine.lower())
469+
if engine == engines[0]:
470+
tasks = [f".standalone .{v}" for v in ALL_VERSIONS]
471+
else:
472+
# MongoDB 4.2 drops support for MMAPv1
473+
versions = get_versions_until("4.0")
474+
tasks = [f".standalone .{v}" for v in versions] + [
475+
f".replica_set .{v}" for v in versions
476+
]
477+
display_name = get_display_name(f"Storage {engine}", host, python=python)
478+
variant = create_variant(
479+
tasks, display_name, host=host, python=python, expansions=expansions
480+
)
481+
variants.append(variant)
482+
return variants
483+
484+
452485
def create_versioned_api_tests():
453486
host = "rhel8"
454487
tags = ["versionedApi_tag"]
455-
tasks = [f".standalone .{v}" for v in get_pythons_from("5.0")]
488+
tasks = [f".standalone .{v}" for v in get_versions_from("5.0")]
456489
variants = []
457490
types = ["require v1", "accept v2"]
458491

@@ -495,10 +528,40 @@ def create_green_framework_variants():
495528
return variants
496529

497530

531+
def generate_no_c_ext_variants():
532+
variants = []
533+
host = "rhel8"
534+
for python, topology in zip_cycle(CPYTHONS, TOPOLOGIES):
535+
tasks = [f".{topology}"]
536+
expansions = dict()
537+
handle_c_ext(C_EXTS[0], expansions)
538+
display_name = get_display_name("No C Ext", host, python=python)
539+
variant = create_variant(
540+
tasks, display_name, host=host, python=python, expansions=expansions
541+
)
542+
variants.append(variant)
543+
return variants
544+
545+
546+
def generate_atlas_data_lake_variants():
547+
variants = []
548+
host = "rhel8"
549+
for python, c_ext in product(MIN_MAX_PYTHON, C_EXTS):
550+
tasks = ["atlas-data-lake-tests"]
551+
expansions = dict()
552+
handle_c_ext(c_ext, expansions)
553+
display_name = get_display_name("Atlas Data Lake", host, python=python, **expansions)
554+
variant = create_variant(
555+
tasks, display_name, host=host, python=python, expansions=expansions
556+
)
557+
variants.append(variant)
558+
return variants
559+
560+
498561
##################
499562
# Generate Config
500563
##################
501564

502-
variants = create_green_framework_variants()
565+
variants = generate_atlas_data_lake_variants()
503566
# print(len(variants))
504567
generate_yaml(variants=variants)

requirements/typing.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
mypy==1.11.2
1+
mypy==1.12.1
22
pyright==1.1.384
33
typing_extensions
44
-r ./encryption.txt

0 commit comments

Comments
 (0)