Skip to content

Commit 2ed2498

Browse files
committed
Merge branch 'master' of github.com:mongodb/mongo-python-driver
2 parents 04fc9a5 + 317a539 commit 2ed2498

File tree

2 files changed

+136
-50
lines changed

2 files changed

+136
-50
lines changed

.evergreen/config.yml

Lines changed: 86 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2112,23 +2112,6 @@ axes:
21122112
AUTH: "noauth"
21132113
SSL: "nossl"
21142114

2115-
# Choice of wire protocol compression support
2116-
- id: compression
2117-
display_name: Compression
2118-
values:
2119-
- id: snappy
2120-
display_name: snappy compression
2121-
variables:
2122-
COMPRESSORS: "snappy"
2123-
- id: zlib
2124-
display_name: zlib compression
2125-
variables:
2126-
COMPRESSORS: "zlib"
2127-
- id: zstd
2128-
display_name: zstd compression
2129-
variables:
2130-
COMPRESSORS: "zstd"
2131-
21322115
# Choice of MongoDB server version
21332116
- id: mongodb-version
21342117
display_name: "MongoDB"
@@ -3125,6 +3108,92 @@ buildvariants:
31253108
PYTHON_BINARY: C:/python/Python313/python.exe
31263109
tags: [encryption_tag]
31273110

3111+
# Compressor tests.
3112+
- name: snappy-compression-rhel8-py3.9-no-c
3113+
tasks:
3114+
- name: .standalone
3115+
display_name: snappy compression RHEL8 py3.9 No C
3116+
run_on:
3117+
- rhel87-small
3118+
expansions:
3119+
COMPRESSORS: snappy
3120+
NO_EXT: "1"
3121+
PYTHON_BINARY: /opt/python/3.9/bin/python3
3122+
- name: snappy-compression-rhel8-py3.10
3123+
tasks:
3124+
- name: .standalone
3125+
display_name: snappy compression RHEL8 py3.10
3126+
run_on:
3127+
- rhel87-small
3128+
expansions:
3129+
COMPRESSORS: snappy
3130+
PYTHON_BINARY: /opt/python/3.10/bin/python3
3131+
- name: zlib-compression-rhel8-py3.11-no-c
3132+
tasks:
3133+
- name: .standalone
3134+
display_name: zlib compression RHEL8 py3.11 No C
3135+
run_on:
3136+
- rhel87-small
3137+
expansions:
3138+
COMPRESSORS: zlib
3139+
NO_EXT: "1"
3140+
PYTHON_BINARY: /opt/python/3.11/bin/python3
3141+
- name: zlib-compression-rhel8-py3.12
3142+
tasks:
3143+
- name: .standalone
3144+
display_name: zlib compression RHEL8 py3.12
3145+
run_on:
3146+
- rhel87-small
3147+
expansions:
3148+
COMPRESSORS: zlib
3149+
PYTHON_BINARY: /opt/python/3.12/bin/python3
3150+
- name: zstd-compression-rhel8-py3.13-no-c
3151+
tasks:
3152+
- name: .standalone !.4.0
3153+
display_name: zstd compression RHEL8 py3.13 No C
3154+
run_on:
3155+
- rhel87-small
3156+
expansions:
3157+
COMPRESSORS: zstd
3158+
NO_EXT: "1"
3159+
PYTHON_BINARY: /opt/python/3.13/bin/python3
3160+
- name: zstd-compression-rhel8-py3.9
3161+
tasks:
3162+
- name: .standalone !.4.0
3163+
display_name: zstd compression RHEL8 py3.9
3164+
run_on:
3165+
- rhel87-small
3166+
expansions:
3167+
COMPRESSORS: zstd
3168+
PYTHON_BINARY: /opt/python/3.9/bin/python3
3169+
- name: snappy-compression-rhel8-pypy3.9
3170+
tasks:
3171+
- name: .standalone
3172+
display_name: snappy compression RHEL8 pypy3.9
3173+
run_on:
3174+
- rhel87-small
3175+
expansions:
3176+
COMPRESSORS: snappy
3177+
PYTHON_BINARY: /opt/python/pypy3.9/bin/python3
3178+
- name: zlib-compression-rhel8-pypy3.10
3179+
tasks:
3180+
- name: .standalone
3181+
display_name: zlib compression RHEL8 pypy3.10
3182+
run_on:
3183+
- rhel87-small
3184+
expansions:
3185+
COMPRESSORS: zlib
3186+
PYTHON_BINARY: /opt/python/pypy3.10/bin/python3
3187+
- name: zstd-compression-rhel8-pypy3.9
3188+
tasks:
3189+
- name: .standalone !.4.0
3190+
display_name: zstd compression RHEL8 pypy3.9
3191+
run_on:
3192+
- rhel87-small
3193+
expansions:
3194+
COMPRESSORS: zstd
3195+
PYTHON_BINARY: /opt/python/pypy3.9/bin/python3
3196+
31283197
- matrix_name: "tests-fips"
31293198
matrix_spec:
31303199
platform:
@@ -3214,38 +3283,6 @@ buildvariants:
32143283
- ".4.2"
32153284
- ".4.0"
32163285

3217-
- matrix_name: "tests-python-version-rhel8-compression"
3218-
matrix_spec:
3219-
platform: rhel8
3220-
python-version: "*"
3221-
c-extensions: "*"
3222-
compression: "*"
3223-
exclude_spec:
3224-
# These interpreters are always tested without extensions.
3225-
- platform: rhel8
3226-
python-version: ["pypy3.9", "pypy3.10"]
3227-
c-extensions: "with-c-extensions"
3228-
compression: "*"
3229-
display_name: "${compression} ${c-extensions} ${python-version} ${platform}"
3230-
tasks:
3231-
- "test-latest-standalone"
3232-
- "test-8.0-standalone"
3233-
- "test-7.0-standalone"
3234-
- "test-6.0-standalone"
3235-
- "test-5.0-standalone"
3236-
- "test-4.4-standalone"
3237-
- "test-4.2-standalone"
3238-
- "test-4.0-standalone"
3239-
rules:
3240-
# Server version 4.0 supports snappy and zlib but not zstd.
3241-
- if:
3242-
python-version: "*"
3243-
c-extensions: "*"
3244-
compression: ["zstd"]
3245-
then:
3246-
remove_tasks:
3247-
- "test-4.0-standalone"
3248-
32493286
- matrix_name: "tests-python-version-green-framework-rhel8"
32503287
matrix_spec:
32513288
platform: rhel8

.evergreen/scripts/generate_config.py

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@
3030
BATCHTIME_WEEK = 10080
3131
AUTH_SSLS = [("auth", "ssl"), ("noauth", "ssl"), ("noauth", "nossl")]
3232
TOPOLOGIES = ["standalone", "replica_set", "sharded_cluster"]
33+
C_EXTS = ["with_ext", "without_ext"]
3334
SYNCS = ["sync", "async"]
3435
DISPLAY_LOOKUP = dict(
3536
ssl=dict(ssl="SSL", nossl="NoSSL"),
3637
auth=dict(auth="Auth", noauth="NoAuth"),
3738
test_suites=dict(default="Sync", default_async="Async"),
3839
coverage=dict(coverage="cov"),
40+
no_ext={"1": "No C"},
3941
)
4042
HOSTS = dict()
4143

@@ -137,6 +139,12 @@ def zip_cycle(*iterables, empty_default=None):
137139
yield tuple(next(i, empty_default) for i in cycles)
138140

139141

142+
def handle_c_ext(c_ext, expansions):
143+
"""Handle c extension option."""
144+
if c_ext == C_EXTS[0]:
145+
expansions["NO_EXT"] = "1"
146+
147+
140148
def generate_yaml(tasks=None, variants=None):
141149
"""Generate the yaml for a given set of tasks and variants."""
142150
project = EvgProject(tasks=tasks, buildvariants=variants)
@@ -337,8 +345,49 @@ def create_load_balancer_variants():
337345
return variants
338346

339347

348+
def create_compression_variants():
349+
# Compression tests - standalone versions of each server, across python versions, with and without c extensions.
350+
# PyPy interpreters are always tested without extensions.
351+
host = "rhel8"
352+
task_names = dict(snappy=[".standalone"], zlib=[".standalone"], zstd=[".standalone !.4.0"])
353+
variants = []
354+
for ind, (compressor, c_ext) in enumerate(product(["snappy", "zlib", "zstd"], C_EXTS)):
355+
expansions = dict(COMPRESSORS=compressor)
356+
handle_c_ext(c_ext, expansions)
357+
base_name = f"{compressor} compression"
358+
python = CPYTHONS[ind % len(CPYTHONS)]
359+
display_name = get_display_name(base_name, host, python=python, **expansions)
360+
variant = create_variant(
361+
task_names[compressor],
362+
display_name,
363+
python=python,
364+
host=host,
365+
expansions=expansions,
366+
)
367+
variants.append(variant)
368+
369+
other_pythons = PYPYS + CPYTHONS[ind:]
370+
for compressor, python in zip_cycle(["snappy", "zlib", "zstd"], other_pythons):
371+
expansions = dict(COMPRESSORS=compressor)
372+
handle_c_ext(c_ext, expansions)
373+
base_name = f"{compressor} compression"
374+
display_name = get_display_name(base_name, host, python=python, **expansions)
375+
variant = create_variant(
376+
task_names[compressor],
377+
display_name,
378+
python=python,
379+
host=host,
380+
expansions=expansions,
381+
)
382+
variants.append(variant)
383+
384+
return variants
385+
386+
340387
##################
341388
# Generate Config
342389
##################
343390

344-
generate_yaml(variants=create_load_balancer_variants())
391+
variants = create_compression_variants()
392+
# print(len(variants))
393+
generate_yaml(variants=variants)

0 commit comments

Comments
 (0)