Skip to content

PYTHON-6167 Split the test-non-standard task family into per-suite task families - #3131

Open
blink1073 wants to merge 20 commits into
mongodb:mainfrom
blink1073:PYTHON-6167
Open

blink1073 wants to merge 20 commits into
mongodb:mainfrom
blink1073:PYTHON-6167

Conversation

@blink1073

@blink1073 blink1073 commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

PYTHON-6167

Summary

Splits the shared test-non-standard Evergreen task family into one family per suite, so a task's name and tags identify the suite it runs. The encryption and load balancer matrices now run as separate sync and async tasks.

  • Before: 1325 tasks across 76 build variants
  • After: 833 tasks across 65 build variants

Also ensures a good cross-section of tests in PRs for coverage.

  • Before: 97 tasks, Time Taken: 21h 50m
  • After: 60 tasks, Time Taken: 12h 36m

Motivation

The test-non-standard family was shared by the encryption, load balancer, doctest, and PyOpenSSL suites, and only the build variant decided which suite a task actually ran. That made failures hard to attribute.

Additionally, we were not testing sync and async separately for encryption or load balancer, or any of the other non-standard tests.

Changes

  • Replaces test-non-standard with one family per suite; a task's name identifies its suite, and distro tags decide which variant runs it.
  • Ensure that sync and async tasks run the appropriate tests for all task families
  • Builds OpenSSL 3 on RHEL 8 so free-threaded PyOpenSSL cells can run there, using the updated drivers-evergreen-tools submodule.

Testing

  • python3 -m pytest .evergreen/scripts/test_generate_config.py passes, covering the new suite-identity, sync/async-split, and matrix-size invariants.
  • New tests pass in Evergreen: XXXX Patch URL

Checklist for Author

  • Did you update the changelog (if necessary)? (CI-only change.)
  • Is there test coverage?
  • Is any followup work tracked in a JIRA ticket? If so, add link(s). N/A

Checklist for Reviewer

  • Does the title of the PR reference a JIRA Ticket?
  • Do you fully understand the implementation? (Would you be comfortable explaining how this code works to someone else?)
  • Is all relevant documentation (README or docstring) updated?

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved critical and moderate issues affect shell safety and test correctness.

2 open findings
What changed in this PR

Splits the shared Evergreen non-standard test family into suite-specific families with sync/async selection and updated platform matrices.

Changes:

  • Generates per-suite task families and selectors.
  • Adds sync/async filtering and OpenSSL 3 setup.
  • Regenerates Evergreen variants, tasks, and functions.
File Summary
.evergreen/​scripts/​utils.py Adds --sync; moderate issue (1 vote) with positional argument handling.
.evergreen/​scripts/​test_generate_config.py Adds matrix and suite-shape assertions.
.evergreen/​scripts/​setup_tests.py Adds sync filtering and OpenSSL setup; critical shell-injection issue (2 votes).
.evergreen/​scripts/​generate_config.py Generates suite-specific tasks; moderate issues (2, 1, and 1 votes) affecting load-balancer splitting, disabled test commands, and compressor propagation.
.evergreen/​generated_configs/​variants.yml Updates build-variant selectors.
.evergreen/​generated_configs/​tasks.yml Regenerates suite-specific task matrices.
.evergreen/​generated_configs/​functions.yml Forwards new task environment variables.

🧠 Review effort: Lite


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .evergreen/scripts/setup_tests.py Resolved
Comment thread .evergreen/scripts/generate_config.py Resolved

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved critical and moderate findings affect test coverage and task configuration.

2 open findings
2 resolved since last review

🧠 Review effort: Lite

Comment thread .evergreen/scripts/generate_config.py Resolved
Comment thread .evergreen/scripts/utils.py Resolved

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Three moderate review findings remain unresolved in task generation and configuration.

No open issues 🎉

1 previously missed issue

In code that hasn't changed since last review

Medium severity Allowlist TEST_CRYPT_SHARED for crypt_shared test tasks

.evergreen/​scripts/​generate_config.py:1615

The crypt_shared tasks now put TEST_CRYPT_SHARED in the run tests command vars, but the environment allowlist still omits it. setup_tests.py reads this value to enable the crypt_shared setup, so the new crypt_shared tasks will run without that configuration and test the regular libmongocrypt path instead. Add TEST_CRYPT_SHARED to this allowlist.

2 resolved since last review

Review effort: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Address the critical environment-value shell-injection issue and preserve TEST_CRYPT_SHARED for encryption tests.

2 open issues

Review effort: Lite

Comment thread .evergreen/scripts/setup_tests.py Resolved
Comment thread .evergreen/scripts/generate_config.py Resolved

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved critical and moderate findings affect shell safety, option parsing, test coverage, and compression execution.

4 open issues

Review effort: Lite

Comment thread .evergreen/scripts/setup_tests.py Resolved
Comment thread .evergreen/scripts/utils.py Resolved
…THON-6167

# Conflicts:
#	.evergreen/generated_configs/functions.yml
#	.evergreen/scripts/generate_config.py
#	.evergreen/scripts/setup_tests.py

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The broad Evergreen matrix and platform-specific OpenSSL/environment changes depend on an unavailable submodule and placeholder patch, while static generator tests cannot verify cross-platform task selection or end-to-end execution, requiring human Evergreen validation.

2 open issues
2 resolved since last review

Review effort: Lite

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Human assessment is needed because the configuration change may remove the baseline Linux standard test matrix, creating a potentially critical gap in the generated build variants.

No open issues 🎉

2 resolved since last review

Review effort: Lite

# Conflicts:
#	.evergreen/scripts/run_tests.py
#	.evergreen/scripts/test_generate_config.py

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Active moderate and critical findings remain: the rhel8 OCSP variant is not included in PR builds, and default-family tasks no longer filter to the default test suite.

2 open issues

Review effort: Lite

Comment thread .evergreen/scripts/generate_config.py Resolved
@blink1073
blink1073 marked this pull request as ready for review November 13, 2026 15:28
@blink1073
blink1073 requested a review from a team as a code owner November 13, 2026 15:28

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants