diff --git a/.evergreen/config.yml b/.evergreen/config.yml index e357f02f2b..fc1713a88e 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -25,6 +25,10 @@ timeout: script: | ls -la +include: + - filename: .evergreen/generated_configs/tasks.yml + - filename: .evergreen/generated_configs/variants.yml + functions: "fetch source": # Executes clone and applies the submitted patch, if any @@ -516,6 +520,18 @@ functions: args: - .evergreen/run-mongodb-oidc-test.sh + "run oidc k8s auth test": + - command: subprocess.exec + type: test + params: + binary: bash + working_dir: src + env: + OIDC_ENV: k8s + include_expansions_in_env: ["DRIVERS_TOOLS", "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "K8S_VARIANT"] + args: + - ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-oidc-remote-test.sh + "run aws auth test with aws credentials as environment variables": - command: shell.exec type: test @@ -869,6 +885,32 @@ task_groups: tasks: - oidc-auth-test-gcp + - name: testk8soidc_task_group + setup_group: + - func: fetch source + - func: prepare resources + - func: fix absolute paths + - func: make files executable + - command: ec2.assume_role + params: + role_arn: ${aws_test_secrets_role} + duration_seconds: 1800 + - command: subprocess.exec + params: + binary: bash + args: + - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/k8s/setup.sh + teardown_task: + - command: subprocess.exec + params: + binary: bash + args: + - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/k8s/teardown.sh + setup_group_can_fail_task: true + setup_group_timeout_secs: 1800 + tasks: + - oidc-auth-test-k8s + - name: testoidc_task_group setup_group: - func: fetch source @@ -968,249 +1010,6 @@ tasks: TOPOLOGY: "server" - func: "run doctests" - - name: "test-4.0-standalone" - tags: ["4.0", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.0" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-4.0-replica_set" - tags: ["4.0", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.0" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-4.0-sharded_cluster" - tags: ["4.0", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.0" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - - name: "test-4.2-standalone" - tags: ["4.2", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.2" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-4.2-replica_set" - tags: ["4.2", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.2" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-4.2-sharded_cluster" - tags: ["4.2", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.2" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - - name: "test-4.4-standalone" - tags: ["4.4", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.4" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-4.4-replica_set" - tags: ["4.4", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.4" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-4.4-sharded_cluster" - tags: ["4.4", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "4.4" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - - name: "test-5.0-standalone" - tags: ["5.0", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "5.0" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-5.0-replica_set" - tags: ["5.0", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "5.0" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-5.0-sharded_cluster" - tags: ["5.0", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "5.0" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - - name: "test-6.0-standalone" - tags: ["6.0", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "6.0" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-6.0-replica_set" - tags: ["6.0", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "6.0" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-6.0-sharded_cluster" - tags: ["6.0", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "6.0" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - - name: "test-8.0-standalone" - tags: ["8.0", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "8.0" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-8.0-replica_set" - tags: ["8.0", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "8.0" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-8.0-sharded_cluster" - tags: ["8.0", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "8.0" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - - name: "test-7.0-standalone" - tags: ["7.0", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "7.0" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-7.0-replica_set" - tags: ["7.0", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "7.0" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-7.0-sharded_cluster" - tags: ["7.0", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "7.0" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - - name: "test-latest-standalone" - tags: ["latest", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "latest" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-latest-replica_set" - tags: ["latest", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "latest" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-latest-sharded_cluster" - tags: ["latest", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "latest" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - - name: "test-rapid-standalone" - tags: ["rapid", "standalone"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "rapid" - TOPOLOGY: "server" - - func: "run tests" - - - name: "test-rapid-replica_set" - tags: ["rapid", "replica_set"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "rapid" - TOPOLOGY: "replica_set" - - func: "run tests" - - - name: "test-rapid-sharded_cluster" - tags: ["rapid", "sharded_cluster"] - commands: - - func: "bootstrap mongo-orchestration" - vars: - VERSION: "rapid" - TOPOLOGY: "sharded_cluster" - - func: "run tests" - - name: "test-serverless" tags: ["serverless"] commands: @@ -1781,64 +1580,47 @@ tasks: - func: "run aws auth test with aws web identity credentials" - func: "run aws ECS auth test" - - name: load-balancer-test - commands: - - func: "bootstrap mongo-orchestration" - vars: - TOPOLOGY: "sharded_cluster" - LOAD_BALANCER: true - - func: "run load-balancer" - - func: "run tests" - - name: "oidc-auth-test" commands: - func: "run oidc auth test with test credentials" - name: "oidc-auth-test-azure" commands: - - command: shell.exec + - command: subprocess.exec type: test params: - shell: bash - script: |- - set -o errexit - . src/.evergreen/scripts/env.sh - cd src - git add . - git commit -m "add files" - export AZUREOIDC_DRIVERS_TAR_FILE=/tmp/mongo-python-driver.tgz - git archive -o $AZUREOIDC_DRIVERS_TAR_FILE HEAD - export AZUREOIDC_TEST_CMD="OIDC_ENV=azure ./.evergreen/run-mongodb-oidc-test.sh" - bash $DRIVERS_TOOLS/.evergreen/auth_oidc/azure/run-driver-test.sh + binary: bash + working_dir: src + env: + OIDC_ENV: azure + include_expansions_in_env: ["DRIVERS_TOOLS"] + args: + - ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-oidc-remote-test.sh - name: "oidc-auth-test-gcp" commands: - - command: shell.exec + - command: subprocess.exec type: test params: - shell: bash - script: |- - set -o errexit - . src/.evergreen/scripts/env.sh - cd src - git add . - git commit -m "add files" - export GCPOIDC_DRIVERS_TAR_FILE=/tmp/mongo-python-driver.tgz - git archive -o $GCPOIDC_DRIVERS_TAR_FILE HEAD - # Define the command to run on the VM. - # Ensure that we source the environment file created for us, set up any other variables we need, - # and then run our test suite on the vm. - export GCPOIDC_TEST_CMD="OIDC_ENV=gcp ./.evergreen/run-mongodb-oidc-test.sh" - bash $DRIVERS_TOOLS/.evergreen/auth_oidc/gcp/run-driver-test.sh - - - name: "test-fips-standalone" - tags: ["fips"] + binary: bash + working_dir: src + env: + OIDC_ENV: gcp + include_expansions_in_env: ["DRIVERS_TOOLS"] + args: + - ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-oidc-remote-test.sh + + - name: "oidc-auth-test-k8s" commands: - - func: "bootstrap mongo-orchestration" + - func: "run oidc k8s auth test" vars: - VERSION: "latest" - TOPOLOGY: "server" - - func: "run tests" + K8S_VARIANT: eks + - func: "run oidc k8s auth test" + vars: + K8S_VARIANT: gke + - func: "run oidc k8s auth test" + vars: + K8S_VARIANT: aks # }}} - name: "coverage-report" tags: ["coverage"] @@ -1954,23 +1736,6 @@ tasks: - func: "attach benchmark test results" - func: "send dashboard data" - - name: "assign-pr-reviewer" - tags: ["pr"] - allowed_requesters: ["patch", "github_pr"] - commands: - - command: shell.exec - type: test - params: - shell: "bash" - working_dir: src - script: | - . .evergreen/scripts/env.sh - set -x - export CONFIG=$PROJECT_DIRECTORY/.github/reviewers.txt - export SCRIPT="$DRIVERS_TOOLS/.evergreen/github_app/assign-reviewer.sh" - bash $SCRIPT -p $CONFIG -h ${github_commit} -o "mongodb" -n "mongo-python-driver" - echo '{"results": [{ "status": "PASS", "test_file": "Build", "log_raw": "Test completed" } ]}' > ${PROJECT_DIRECTORY}/test-results.json - - name: "check-import-time" tags: ["pr"] commands: @@ -1999,2369 +1764,41 @@ tasks: - mongo-python-driver - ${github_commit} -axes: - # Choice of distro - - id: platform - display_name: OS - values: - - id: macos - display_name: "macOS" - run_on: macos-14 - variables: - skip_EC2_auth_test: true - skip_ECS_auth_test: true - skip_web_identity_auth_test: true - # CSOT tests are unreliable on our slow macOS hosts. - SKIP_CSOT_TESTS: true - - id: macos-arm64 - display_name: "macOS Arm64" - run_on: macos-14-arm64 - variables: - skip_EC2_auth_test: true - skip_ECS_auth_test: true - skip_web_identity_auth_test: true - # CSOT tests are unreliable on our slow macOS hosts. - SKIP_CSOT_TESTS: true - - id: rhel7 - display_name: "RHEL 7.x" - run_on: rhel79-small - batchtime: 10080 # 7 days - - id: rhel8 - display_name: "RHEL 8.x" - run_on: rhel8.8-small - batchtime: 10080 # 7 days - - id: rhel9-fips - display_name: "RHEL 9 FIPS" - run_on: rhel92-fips - batchtime: 10080 # 7 days - - id: ubuntu-22.04 - display_name: "Ubuntu 22.04" - run_on: ubuntu2204-small - batchtime: 10080 # 7 days - - id: ubuntu-20.04 - display_name: "Ubuntu 20.04" - run_on: ubuntu2004-small - batchtime: 10080 # 7 days - - id: rhel8-zseries - display_name: "RHEL 8 (zSeries)" - run_on: rhel8-zseries-small - batchtime: 10080 # 7 days - variables: - SKIP_HATCH: true - - id: rhel8-power8 - display_name: "RHEL 8 (POWER8)" - run_on: rhel8-power-small - batchtime: 10080 # 7 days - variables: - SKIP_HATCH: true - - id: rhel8-arm64 - display_name: "RHEL 8 (ARM64)" - run_on: rhel82-arm64-small - batchtime: 10080 # 7 days - variables: - - id: windows - display_name: "Windows 64" - run_on: windows-64-vsMulti-small - batchtime: 10080 # 7 days - variables: - skip_ECS_auth_test: true - skip_EC2_auth_test: true - skip_web_identity_auth_test: true - venv_bin_dir: "Scripts" - # CSOT tests are unreliable on our slow Windows hosts. - SKIP_CSOT_TESTS: true - - # Test with authentication? - - id: auth - display_name: Authentication - values: - - id: auth - display_name: Auth - variables: - AUTH: "auth" - - id: noauth - display_name: NoAuth - variables: - AUTH: "noauth" - - # Test with SSL? - - id: ssl - display_name: SSL - values: - - id: ssl - display_name: SSL - variables: - SSL: "ssl" - - id: nossl - display_name: NoSSL - variables: - SSL: "nossl" - - # Test with Auth + SSL (combined for convenience)? - - id: auth-ssl - display_name: Auth SSL - values: - - id: auth-ssl - display_name: Auth SSL - variables: - AUTH: "auth" - SSL: "ssl" - - id: noauth-nossl - display_name: NoAuth NoSSL - variables: - AUTH: "noauth" - SSL: "nossl" - - # Choice of Python runtime version - - id: python-version - display_name: "Python" - values: - # Note: always display platform with python-version to avoid ambiguous display names. - # Linux - - id: "3.9" - display_name: "Python 3.9" - variables: - PYTHON_BINARY: "/opt/python/3.9/bin/python3" - - id: "3.10" - display_name: "Python 3.10" - variables: - PYTHON_BINARY: "/opt/python/3.10/bin/python3" - - id: "3.11" - display_name: "Python 3.11" - variables: - PYTHON_BINARY: "/opt/python/3.11/bin/python3" - - id: "3.12" - display_name: "Python 3.12" - variables: - PYTHON_BINARY: "/opt/python/3.12/bin/python3" - - id: "3.13" - display_name: "Python 3.13" - variables: - PYTHON_BINARY: "/opt/python/3.13/bin/python3" - - id: "pypy3.9" - display_name: "PyPy 3.9" - variables: - PYTHON_BINARY: "/opt/python/pypy3.9/bin/pypy3" - - id: "pypy3.10" - display_name: "PyPy 3.10" - variables: - PYTHON_BINARY: "/opt/python/pypy3.10/bin/pypy3" - - - id: python-version-windows - display_name: "Python" - values: - - id: "3.9" - display_name: "Python 3.9" - variables: - PYTHON_BINARY: "C:/python/Python39/python.exe" - - id: "3.10" - display_name: "Python 3.10" - variables: - PYTHON_BINARY: "C:/python/Python310/python.exe" - - id: "3.11" - display_name: "Python 3.11" - variables: - PYTHON_BINARY: "C:/python/Python311/python.exe" - - id: "3.12" - display_name: "Python 3.12" - variables: - PYTHON_BINARY: "C:/python/Python312/python.exe" - - id: "3.13" - display_name: "Python 3.13" - variables: - PYTHON_BINARY: "C:/python/Python313/python.exe" - buildvariants: -# Server Tests. -- 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 +- name: "no-server" + display_name: "No server" 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 + - rhel84-small tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Test RHEL8 py3.13 NoAuth NoSSL cov + - name: "no-server" + +- name: "Coverage Report" + display_name: "Coverage Report" 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 + - rhel84-small tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Test RHEL8 pypy3.10 Auth SSL cov + - name: "coverage-report" + +- name: testkms-variant + display_name: "KMS" 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 -- 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 - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-py3.9-noauth-ssl-sync - tasks: - - name: .standalone - display_name: Test macOS py3.9 NoAuth SSL Sync - run_on: - - macos-14 - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-py3.9-noauth-nossl-sync - tasks: - - name: .standalone - display_name: Test macOS py3.9 NoAuth NoSSL Sync - run_on: - - macos-14 - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- 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 - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-py3.9-noauth-ssl-async - tasks: - - name: .standalone - display_name: Test macOS py3.9 NoAuth SSL Async - run_on: - - macos-14 - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-py3.9-noauth-nossl-async - tasks: - - name: .standalone - display_name: Test macOS py3.9 NoAuth NoSSL Async - run_on: - - macos-14 - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-py3.13-auth-ssl-sync - tasks: - - name: .sharded_cluster - display_name: Test macOS py3.13 Auth SSL Sync - run_on: - - macos-14 - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-py3.13-noauth-ssl-sync - tasks: - - name: .sharded_cluster - display_name: Test macOS py3.13 NoAuth SSL Sync - run_on: - - macos-14 - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-py3.13-noauth-nossl-sync - tasks: - - name: .sharded_cluster - display_name: Test macOS py3.13 NoAuth NoSSL Sync - run_on: - - macos-14 - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-py3.13-auth-ssl-async - tasks: - - name: .sharded_cluster - display_name: Test macOS py3.13 Auth SSL Async - run_on: - - macos-14 - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-py3.13-noauth-ssl-async - tasks: - - name: .sharded_cluster - display_name: Test macOS py3.13 NoAuth SSL Async - run_on: - - macos-14 - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-py3.13-noauth-nossl-async - tasks: - - name: .sharded_cluster - display_name: Test macOS py3.13 NoAuth NoSSL Async - run_on: - - macos-14 - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-arm64-py3.9-auth-ssl-sync - tasks: - - name: .standalone .6.0 - - name: .standalone .7.0 - - name: .standalone .8.0 - - name: .standalone .rapid - - name: .standalone .latest - display_name: Test macOS Arm64 py3.9 Auth SSL Sync - run_on: - - macos-14-arm64 - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-arm64-py3.9-noauth-ssl-sync - tasks: - - name: .standalone .6.0 - - name: .standalone .7.0 - - name: .standalone .8.0 - - name: .standalone .rapid - - name: .standalone .latest - display_name: Test macOS Arm64 py3.9 NoAuth SSL Sync - run_on: - - macos-14-arm64 - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-arm64-py3.9-noauth-nossl-sync - tasks: - - name: .standalone .6.0 - - name: .standalone .7.0 - - name: .standalone .8.0 - - name: .standalone .rapid - - name: .standalone .latest - display_name: Test macOS Arm64 py3.9 NoAuth NoSSL Sync - run_on: - - macos-14-arm64 - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-arm64-py3.9-auth-ssl-async - tasks: - - name: .standalone .6.0 - - name: .standalone .7.0 - - name: .standalone .8.0 - - name: .standalone .rapid - - name: .standalone .latest - display_name: Test macOS Arm64 py3.9 Auth SSL Async - run_on: - - macos-14-arm64 - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-arm64-py3.9-noauth-ssl-async - tasks: - - name: .standalone .6.0 - - name: .standalone .7.0 - - name: .standalone .8.0 - - name: .standalone .rapid - - name: .standalone .latest - display_name: Test macOS Arm64 py3.9 NoAuth SSL Async - run_on: - - macos-14-arm64 - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-arm64-py3.9-noauth-nossl-async - tasks: - - name: .standalone .6.0 - - name: .standalone .7.0 - - name: .standalone .8.0 - - name: .standalone .rapid - - name: .standalone .latest - display_name: Test macOS Arm64 py3.9 NoAuth NoSSL Async - run_on: - - macos-14-arm64 - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: test-macos-arm64-py3.13-auth-ssl-sync - tasks: - - name: .sharded_cluster .6.0 - - name: .sharded_cluster .7.0 - - name: .sharded_cluster .8.0 - - name: .sharded_cluster .rapid - - name: .sharded_cluster .latest - display_name: Test macOS Arm64 py3.13 Auth SSL Sync - run_on: - - macos-14-arm64 - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-arm64-py3.13-noauth-ssl-sync - tasks: - - name: .sharded_cluster .6.0 - - name: .sharded_cluster .7.0 - - name: .sharded_cluster .8.0 - - name: .sharded_cluster .rapid - - name: .sharded_cluster .latest - display_name: Test macOS Arm64 py3.13 NoAuth SSL Sync - run_on: - - macos-14-arm64 - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-arm64-py3.13-noauth-nossl-sync - tasks: - - name: .sharded_cluster .6.0 - - name: .sharded_cluster .7.0 - - name: .sharded_cluster .8.0 - - name: .sharded_cluster .rapid - - name: .sharded_cluster .latest - display_name: Test macOS Arm64 py3.13 NoAuth NoSSL Sync - run_on: - - macos-14-arm64 - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-arm64-py3.13-auth-ssl-async - tasks: - - name: .sharded_cluster .6.0 - - name: .sharded_cluster .7.0 - - name: .sharded_cluster .8.0 - - name: .sharded_cluster .rapid - - name: .sharded_cluster .latest - display_name: Test macOS Arm64 py3.13 Auth SSL Async - run_on: - - macos-14-arm64 - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-arm64-py3.13-noauth-ssl-async - tasks: - - name: .sharded_cluster .6.0 - - name: .sharded_cluster .7.0 - - name: .sharded_cluster .8.0 - - name: .sharded_cluster .rapid - - name: .sharded_cluster .latest - display_name: Test macOS Arm64 py3.13 NoAuth SSL Async - run_on: - - macos-14-arm64 - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- name: test-macos-arm64-py3.13-noauth-nossl-async - tasks: - - name: .sharded_cluster .6.0 - - name: .sharded_cluster .7.0 - - name: .sharded_cluster .8.0 - - name: .sharded_cluster .rapid - - name: .sharded_cluster .latest - display_name: Test macOS Arm64 py3.13 NoAuth NoSSL Async - run_on: - - macos-14-arm64 - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 -- 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 - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python39/python.exe -- name: test-win64-py3.9-noauth-ssl-sync - tasks: - - name: .standalone - display_name: Test Win64 py3.9 NoAuth SSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python39/python.exe -- name: test-win64-py3.9-noauth-nossl-sync - tasks: - - name: .standalone - display_name: Test Win64 py3.9 NoAuth NoSSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python39/python.exe -- 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 - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python39/python.exe -- name: test-win64-py3.9-noauth-ssl-async - tasks: - - name: .standalone - display_name: Test Win64 py3.9 NoAuth SSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python39/python.exe -- name: test-win64-py3.9-noauth-nossl-async - tasks: - - name: .standalone - display_name: Test Win64 py3.9 NoAuth NoSSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python39/python.exe -- name: test-win64-py3.13-auth-ssl-sync - tasks: - - name: .sharded_cluster - display_name: Test Win64 py3.13 Auth SSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python313/python.exe -- name: test-win64-py3.13-noauth-ssl-sync - tasks: - - name: .sharded_cluster - display_name: Test Win64 py3.13 NoAuth SSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python313/python.exe -- name: test-win64-py3.13-noauth-nossl-sync - tasks: - - name: .sharded_cluster - display_name: Test Win64 py3.13 NoAuth NoSSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python313/python.exe -- name: test-win64-py3.13-auth-ssl-async - tasks: - - name: .sharded_cluster - display_name: Test Win64 py3.13 Auth SSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python313/python.exe -- name: test-win64-py3.13-noauth-ssl-async - tasks: - - name: .sharded_cluster - display_name: Test Win64 py3.13 NoAuth SSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python313/python.exe -- name: test-win64-py3.13-noauth-nossl-async - tasks: - - name: .sharded_cluster - display_name: Test Win64 py3.13 NoAuth NoSSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/Python313/python.exe -- 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 - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python39/python.exe -- name: test-win32-py3.9-noauth-ssl-sync - tasks: - - name: .standalone - display_name: Test Win32 py3.9 NoAuth SSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python39/python.exe -- name: test-win32-py3.9-noauth-nossl-sync - tasks: - - name: .standalone - display_name: Test Win32 py3.9 NoAuth NoSSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python39/python.exe -- 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 - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python39/python.exe -- name: test-win32-py3.9-noauth-ssl-async - tasks: - - name: .standalone - display_name: Test Win32 py3.9 NoAuth SSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python39/python.exe -- name: test-win32-py3.9-noauth-nossl-async - tasks: - - name: .standalone - display_name: Test Win32 py3.9 NoAuth NoSSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python39/python.exe -- name: test-win32-py3.13-auth-ssl-sync - tasks: - - name: .sharded_cluster - display_name: Test Win32 py3.13 Auth SSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python313/python.exe -- name: test-win32-py3.13-noauth-ssl-sync - tasks: - - name: .sharded_cluster - display_name: Test Win32 py3.13 NoAuth SSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python313/python.exe -- name: test-win32-py3.13-noauth-nossl-sync - tasks: - - name: .sharded_cluster - display_name: Test Win32 py3.13 NoAuth NoSSL Sync - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python313/python.exe -- name: test-win32-py3.13-auth-ssl-async - tasks: - - name: .sharded_cluster - display_name: Test Win32 py3.13 Auth SSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: auth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python313/python.exe -- name: test-win32-py3.13-noauth-ssl-async - tasks: - - name: .sharded_cluster - display_name: Test Win32 py3.13 NoAuth SSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: ssl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python313/python.exe -- name: test-win32-py3.13-noauth-nossl-async - tasks: - - name: .sharded_cluster - display_name: Test Win32 py3.13 NoAuth NoSSL Async - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: noauth - SSL: nossl - TEST_SUITES: default_async - SKIP_CSOT_TESTS: "true" - PYTHON_BINARY: C:/python/32/Python313/python.exe - -# Encryption tests. -- name: encryption-rhel8-py3.9-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption RHEL8 py3.9 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - PYTHON_BINARY: /opt/python/3.9/bin/python3 - tags: [encryption_tag] -- name: encryption-rhel8-py3.13-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption RHEL8 py3.13 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - PYTHON_BINARY: /opt/python/3.13/bin/python3 - tags: [encryption_tag] -- name: encryption-rhel8-pypy3.10-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption RHEL8 pypy3.10 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 - tags: [encryption_tag] -- name: encryption-crypt_shared-rhel8-py3.9-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption crypt_shared RHEL8 py3.9 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - test_crypt_shared: "true" - PYTHON_BINARY: /opt/python/3.9/bin/python3 - tags: [encryption_tag] -- name: encryption-crypt_shared-rhel8-py3.13-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption crypt_shared RHEL8 py3.13 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - test_crypt_shared: "true" - PYTHON_BINARY: /opt/python/3.13/bin/python3 - tags: [encryption_tag] -- name: encryption-crypt_shared-rhel8-pypy3.10-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption crypt_shared RHEL8 pypy3.10 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - test_crypt_shared: "true" - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 - tags: [encryption_tag] -- name: encryption-pyopenssl-rhel8-py3.9-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption PyOpenSSL RHEL8 py3.9 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - test_encryption_pyopenssl: "true" - PYTHON_BINARY: /opt/python/3.9/bin/python3 - tags: [encryption_tag] -- name: encryption-pyopenssl-rhel8-py3.13-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption PyOpenSSL RHEL8 py3.13 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - test_encryption_pyopenssl: "true" - PYTHON_BINARY: /opt/python/3.13/bin/python3 - tags: [encryption_tag] -- name: encryption-pyopenssl-rhel8-pypy3.10-auth-ssl - tasks: - - name: .standalone - - name: .replica_set - - name: .sharded_cluster - display_name: Encryption PyOpenSSL RHEL8 pypy3.10 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - test_encryption_pyopenssl: "true" - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 - tags: [encryption_tag] -- name: encryption-rhel8-py3.10-auth-ssl - tasks: - - name: .replica_set - display_name: Encryption RHEL8 py3.10 Auth SSL - run_on: - - rhel87-small - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - PYTHON_BINARY: /opt/python/3.10/bin/python3 -- name: encryption-crypt_shared-rhel8-py3.11-auth-nossl - tasks: - - name: .replica_set - display_name: Encryption crypt_shared RHEL8 py3.11 Auth NoSSL - run_on: - - rhel87-small - expansions: - AUTH: auth - SSL: nossl - test_encryption: "true" - test_crypt_shared: "true" - PYTHON_BINARY: /opt/python/3.11/bin/python3 -- name: encryption-pyopenssl-rhel8-py3.12-auth-ssl - tasks: - - name: .replica_set - display_name: Encryption PyOpenSSL RHEL8 py3.12 Auth SSL - run_on: - - rhel87-small - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - TEST_ENCRYPTION_PYOPENSSL: "true" - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: encryption-rhel8-pypy3.9-auth-nossl - tasks: - - name: .replica_set - display_name: Encryption RHEL8 pypy3.9 Auth NoSSL - run_on: - - rhel87-small - expansions: - AUTH: auth - SSL: nossl - test_encryption: "true" - PYTHON_BINARY: /opt/python/pypy3.9/bin/python3 -- name: encryption-macos-py3.9-auth-ssl - tasks: - - name: .latest .replica_set - display_name: Encryption macOS py3.9 Auth SSL - run_on: - - macos-14 - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 - tags: [encryption_tag] -- name: encryption-macos-py3.13-auth-nossl - tasks: - - name: .latest .replica_set - display_name: Encryption macOS py3.13 Auth NoSSL - run_on: - - macos-14 - batchtime: 10080 - expansions: - AUTH: auth - SSL: nossl - test_encryption: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 - tags: [encryption_tag] -- name: encryption-crypt_shared-macos-py3.9-auth-ssl - tasks: - - name: .latest .replica_set - display_name: Encryption crypt_shared macOS py3.9 Auth SSL - run_on: - - macos-14 - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - test_crypt_shared: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 - tags: [encryption_tag] -- name: encryption-crypt_shared-macos-py3.13-auth-nossl - tasks: - - name: .latest .replica_set - display_name: Encryption crypt_shared macOS py3.13 Auth NoSSL - run_on: - - macos-14 - batchtime: 10080 - expansions: - AUTH: auth - SSL: nossl - test_encryption: "true" - test_crypt_shared: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 - tags: [encryption_tag] -- name: encryption-win64-py3.9-auth-ssl - tasks: - - name: .latest .replica_set - display_name: Encryption Win64 py3.9 Auth SSL - run_on: - - windows-64-vsMulti-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - PYTHON_BINARY: C:/python/Python39/python.exe - tags: [encryption_tag] -- name: encryption-win64-py3.13-auth-nossl - tasks: - - name: .latest .replica_set - display_name: Encryption Win64 py3.13 Auth NoSSL - run_on: - - windows-64-vsMulti-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: nossl - test_encryption: "true" - PYTHON_BINARY: C:/python/Python313/python.exe - tags: [encryption_tag] -- name: encryption-crypt_shared-win64-py3.9-auth-ssl - tasks: - - name: .latest .replica_set - display_name: Encryption crypt_shared Win64 py3.9 Auth SSL - run_on: - - windows-64-vsMulti-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: ssl - test_encryption: "true" - test_crypt_shared: "true" - PYTHON_BINARY: C:/python/Python39/python.exe - tags: [encryption_tag] -- name: encryption-crypt_shared-win64-py3.13-auth-nossl - tasks: - - name: .latest .replica_set - display_name: Encryption crypt_shared Win64 py3.13 Auth NoSSL - run_on: - - windows-64-vsMulti-small - batchtime: 10080 - expansions: - AUTH: auth - SSL: nossl - test_encryption: "true" - test_crypt_shared: "true" - PYTHON_BINARY: C:/python/Python313/python.exe - tags: [encryption_tag] - -# Compressor tests. -- name: snappy-compression-rhel8-py3.9-no-c - tasks: - - name: .standalone - display_name: snappy compression RHEL8 py3.9 No C - run_on: - - rhel87-small - expansions: - COMPRESSORS: snappy - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: snappy-compression-rhel8-py3.10 - tasks: - - name: .standalone - display_name: snappy compression RHEL8 py3.10 - run_on: - - rhel87-small - expansions: - COMPRESSORS: snappy - PYTHON_BINARY: /opt/python/3.10/bin/python3 -- name: zlib-compression-rhel8-py3.11-no-c - tasks: - - name: .standalone - display_name: zlib compression RHEL8 py3.11 No C - run_on: - - rhel87-small - expansions: - COMPRESSORS: zlib - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.11/bin/python3 -- name: zlib-compression-rhel8-py3.12 - tasks: - - name: .standalone - display_name: zlib compression RHEL8 py3.12 - run_on: - - rhel87-small - expansions: - COMPRESSORS: zlib - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: zstd-compression-rhel8-py3.13-no-c - tasks: - - name: .standalone !.4.0 - display_name: zstd compression RHEL8 py3.13 No C - run_on: - - rhel87-small - expansions: - COMPRESSORS: zstd - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.13/bin/python3 -- name: zstd-compression-rhel8-py3.9 - tasks: - - name: .standalone !.4.0 - display_name: zstd compression RHEL8 py3.9 - run_on: - - rhel87-small - expansions: - COMPRESSORS: zstd - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: snappy-compression-rhel8-pypy3.9 - tasks: - - name: .standalone - display_name: snappy compression RHEL8 pypy3.9 - run_on: - - rhel87-small - expansions: - COMPRESSORS: snappy - PYTHON_BINARY: /opt/python/pypy3.9/bin/python3 -- name: zlib-compression-rhel8-pypy3.10 - tasks: - - name: .standalone - display_name: zlib compression RHEL8 pypy3.10 - run_on: - - rhel87-small - expansions: - COMPRESSORS: zlib - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 -- name: zstd-compression-rhel8-pypy3.9 - tasks: - - name: .standalone !.4.0 - display_name: zstd compression RHEL8 pypy3.9 - run_on: - - rhel87-small - expansions: - COMPRESSORS: zstd - PYTHON_BINARY: /opt/python/pypy3.9/bin/python3 - -# Enterprise auth tests. -- name: enterprise-auth-macos-py3.9-auth - tasks: - - name: test-enterprise-auth - display_name: Enterprise Auth macOS py3.9 Auth - run_on: - - macos-14 - expansions: - AUTH: auth - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: enterprise-auth-rhel8-py3.10-auth - tasks: - - name: test-enterprise-auth - display_name: Enterprise Auth RHEL8 py3.10 Auth - run_on: - - rhel87-small - expansions: - AUTH: auth - PYTHON_BINARY: /opt/python/3.10/bin/python3 -- name: enterprise-auth-rhel8-py3.11-auth - tasks: - - name: test-enterprise-auth - display_name: Enterprise Auth RHEL8 py3.11 Auth - run_on: - - rhel87-small - expansions: - AUTH: auth - PYTHON_BINARY: /opt/python/3.11/bin/python3 -- name: enterprise-auth-rhel8-py3.12-auth - tasks: - - name: test-enterprise-auth - display_name: Enterprise Auth RHEL8 py3.12 Auth - run_on: - - rhel87-small - expansions: - AUTH: auth - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: enterprise-auth-win64-py3.13-auth - tasks: - - name: test-enterprise-auth - display_name: Enterprise Auth Win64 py3.13 Auth - run_on: - - windows-64-vsMulti-small - expansions: - AUTH: auth - PYTHON_BINARY: C:/python/Python313/python.exe -- name: enterprise-auth-rhel8-pypy3.9-auth - tasks: - - name: test-enterprise-auth - display_name: Enterprise Auth RHEL8 pypy3.9 Auth - run_on: - - rhel87-small - expansions: - AUTH: auth - PYTHON_BINARY: /opt/python/pypy3.9/bin/python3 -- name: enterprise-auth-rhel8-pypy3.10-auth - tasks: - - name: test-enterprise-auth - display_name: Enterprise Auth RHEL8 pypy3.10 Auth - run_on: - - rhel87-small - expansions: - AUTH: auth - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 - -# PyOpenSSL tests. -- name: pyopenssl-macos-py3.9 - tasks: - - name: .replica_set - - name: .7.0 - display_name: PyOpenSSL macOS py3.9 - run_on: - - macos-14 - batchtime: 10080 - expansions: - AUTH: noauth - test_pyopenssl: "true" - SSL: ssl - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: pyopenssl-rhel8-py3.10 - tasks: - - name: .replica_set - - name: .7.0 - display_name: PyOpenSSL RHEL8 py3.10 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - test_pyopenssl: "true" - SSL: ssl - PYTHON_BINARY: /opt/python/3.10/bin/python3 -- name: pyopenssl-rhel8-py3.11 - tasks: - - name: .replica_set - - name: .7.0 - display_name: PyOpenSSL RHEL8 py3.11 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - test_pyopenssl: "true" - SSL: ssl - PYTHON_BINARY: /opt/python/3.11/bin/python3 -- name: pyopenssl-rhel8-py3.12 - tasks: - - name: .replica_set - - name: .7.0 - display_name: PyOpenSSL RHEL8 py3.12 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - test_pyopenssl: "true" - SSL: ssl - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: pyopenssl-win64-py3.13 - tasks: - - name: .replica_set - - name: .7.0 - display_name: PyOpenSSL Win64 py3.13 - run_on: - - windows-64-vsMulti-small - batchtime: 10080 - expansions: - AUTH: auth - test_pyopenssl: "true" - SSL: ssl - PYTHON_BINARY: C:/python/Python313/python.exe -- name: pyopenssl-rhel8-pypy3.9 - tasks: - - name: .replica_set - - name: .7.0 - display_name: PyOpenSSL RHEL8 pypy3.9 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - test_pyopenssl: "true" - SSL: ssl - PYTHON_BINARY: /opt/python/pypy3.9/bin/python3 -- name: pyopenssl-rhel8-pypy3.10 - tasks: - - name: .replica_set - - name: .7.0 - display_name: PyOpenSSL RHEL8 pypy3.10 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - AUTH: auth - test_pyopenssl: "true" - SSL: ssl - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 - -# Storage Engine tests. -- name: storage-inmemory-rhel8-py3.9 - tasks: - - name: .standalone .4.0 - - name: .standalone .4.4 - - name: .standalone .5.0 - - name: .standalone .6.0 - - name: .standalone .7.0 - - name: .standalone .8.0 - - name: .standalone .rapid - - name: .standalone .latest - display_name: Storage InMemory RHEL8 py3.9 - run_on: - - rhel87-small - expansions: - STORAGE_ENGINE: inmemory - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: storage-mmapv1-rhel8-py3.9 - tasks: - - name: .standalone .4.0 - - name: .replica_set .4.0 - display_name: Storage MMAPv1 RHEL8 py3.9 - run_on: - - rhel87-small - expansions: - STORAGE_ENGINE: mmapv1 - PYTHON_BINARY: /opt/python/3.9/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] - -# Green framework tests. -- name: eventlet-rhel8-py3.9 - tasks: - - name: .standalone - display_name: Eventlet RHEL8 py3.9 - run_on: - - rhel87-small - expansions: - GREEN_FRAMEWORK: eventlet - AUTH: auth - SSL: ssl - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: gevent-rhel8-py3.9 - tasks: - - name: .standalone - display_name: Gevent RHEL8 py3.9 - run_on: - - rhel87-small - expansions: - GREEN_FRAMEWORK: gevent - AUTH: auth - SSL: ssl - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: eventlet-rhel8-py3.12 - tasks: - - name: .standalone - display_name: Eventlet RHEL8 py3.12 - run_on: - - rhel87-small - expansions: - GREEN_FRAMEWORK: eventlet - AUTH: auth - SSL: ssl - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: gevent-rhel8-py3.12 - tasks: - - name: .standalone - display_name: Gevent RHEL8 py3.12 - run_on: - - rhel87-small - expansions: - GREEN_FRAMEWORK: gevent - AUTH: auth - SSL: ssl - PYTHON_BINARY: /opt/python/3.12/bin/python3 - -# No C Ext tests. -- name: no-c-ext-rhel8-py3.9 - tasks: - - name: .standalone - display_name: No C Ext RHEL8 py3.9 - run_on: - - rhel87-small - expansions: - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: no-c-ext-rhel8-py3.10 - tasks: - - name: .replica_set - display_name: No C Ext RHEL8 py3.10 - run_on: - - rhel87-small - expansions: - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.10/bin/python3 -- name: no-c-ext-rhel8-py3.11 - tasks: - - name: .sharded_cluster - display_name: No C Ext RHEL8 py3.11 - run_on: - - rhel87-small - expansions: - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.11/bin/python3 -- name: no-c-ext-rhel8-py3.12 - tasks: - - name: .standalone - display_name: No C Ext RHEL8 py3.12 - run_on: - - rhel87-small - expansions: - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: no-c-ext-rhel8-py3.13 - tasks: - - name: .replica_set - display_name: No C Ext RHEL8 py3.13 - run_on: - - rhel87-small - expansions: - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.13/bin/python3 - -# Atlas Data Lake tests. -- name: atlas-data-lake-rhel8-py3.9-no-c - tasks: - - name: atlas-data-lake-tests - display_name: Atlas Data Lake RHEL8 py3.9 No C - run_on: - - rhel87-small - expansions: - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: atlas-data-lake-rhel8-py3.9 - tasks: - - name: atlas-data-lake-tests - display_name: Atlas Data Lake RHEL8 py3.9 - run_on: - - rhel87-small - expansions: - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: atlas-data-lake-rhel8-py3.13-no-c - tasks: - - name: atlas-data-lake-tests - display_name: Atlas Data Lake RHEL8 py3.13 No C - run_on: - - rhel87-small - expansions: - NO_EXT: "1" - PYTHON_BINARY: /opt/python/3.13/bin/python3 -- name: atlas-data-lake-rhel8-py3.13 - tasks: - - name: atlas-data-lake-tests - display_name: Atlas Data Lake RHEL8 py3.13 - run_on: - - rhel87-small - expansions: - PYTHON_BINARY: /opt/python/3.13/bin/python3 - -# Mod_wsgi tests. -- name: mod_wsgi-ubuntu-22-py3.9 - tasks: - - name: mod-wsgi-standalone - - name: mod-wsgi-replica-set - - name: mod-wsgi-embedded-mode-standalone - - name: mod-wsgi-embedded-mode-replica-set - display_name: mod_wsgi Ubuntu-22 py3.9 - run_on: - - ubuntu2204-small - expansions: - MOD_WSGI_VERSION: "4" - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: mod_wsgi-ubuntu-22-py3.13 - tasks: - - name: mod-wsgi-standalone - - name: mod-wsgi-replica-set - - name: mod-wsgi-embedded-mode-standalone - - name: mod-wsgi-embedded-mode-replica-set - display_name: mod_wsgi Ubuntu-22 py3.13 - run_on: - - ubuntu2204-small - expansions: - MOD_WSGI_VERSION: "4" - PYTHON_BINARY: /opt/python/3.13/bin/python3 - -# Disable test commands variants. -- name: disable-test-commands-rhel8-py3.9 - tasks: - - name: .latest - display_name: Disable test commands RHEL8 py3.9 - run_on: - - rhel87-small - expansions: - AUTH: auth - SSL: ssl - DISABLE_TEST_COMMANDS: "1" - PYTHON_BINARY: /opt/python/3.9/bin/python3 - -# Serverless variants. -- name: serverless-rhel8-py3.9 - tasks: - - name: serverless_task_group - display_name: Serverless RHEL8 py3.9 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - test_serverless: "true" - AUTH: auth - SSL: ssl - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: serverless-rhel8-py3.13 - tasks: - - name: serverless_task_group - display_name: Serverless RHEL8 py3.13 - run_on: - - rhel87-small - batchtime: 10080 - expansions: - test_serverless: "true" - AUTH: auth - SSL: ssl - PYTHON_BINARY: /opt/python/3.13/bin/python3 - -# AWS Auth tests. -- name: aws-auth-ubuntu-20-py3.9 - tasks: - - name: aws-auth-test-4.4 - - name: aws-auth-test-5.0 - - name: aws-auth-test-6.0 - - name: aws-auth-test-7.0 - - name: aws-auth-test-8.0 - - name: aws-auth-test-rapid - - name: aws-auth-test-latest - display_name: AWS Auth Ubuntu-20 py3.9 - run_on: - - ubuntu2004-small - expansions: - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: aws-auth-ubuntu-20-py3.13 - tasks: - - name: aws-auth-test-4.4 - - name: aws-auth-test-5.0 - - name: aws-auth-test-6.0 - - name: aws-auth-test-7.0 - - name: aws-auth-test-8.0 - - name: aws-auth-test-rapid - - name: aws-auth-test-latest - display_name: AWS Auth Ubuntu-20 py3.13 - run_on: - - ubuntu2004-small - expansions: - PYTHON_BINARY: /opt/python/3.13/bin/python3 -- name: aws-auth-win64-py3.9 - tasks: - - name: aws-auth-test-4.4 - - name: aws-auth-test-5.0 - - name: aws-auth-test-6.0 - - name: aws-auth-test-7.0 - - name: aws-auth-test-8.0 - - name: aws-auth-test-rapid - - name: aws-auth-test-latest - display_name: AWS Auth Win64 py3.9 - run_on: - - windows-64-vsMulti-small - expansions: - skip_ECS_auth_test: "true" - PYTHON_BINARY: C:/python/Python39/python.exe -- name: aws-auth-win64-py3.13 - tasks: - - name: aws-auth-test-4.4 - - name: aws-auth-test-5.0 - - name: aws-auth-test-6.0 - - name: aws-auth-test-7.0 - - name: aws-auth-test-8.0 - - name: aws-auth-test-rapid - - name: aws-auth-test-latest - display_name: AWS Auth Win64 py3.13 - run_on: - - windows-64-vsMulti-small - expansions: - skip_ECS_auth_test: "true" - PYTHON_BINARY: C:/python/Python313/python.exe -- name: aws-auth-macos-py3.9 - tasks: - - name: aws-auth-test-4.4 - - name: aws-auth-test-5.0 - - name: aws-auth-test-6.0 - - name: aws-auth-test-7.0 - - name: aws-auth-test-8.0 - - name: aws-auth-test-rapid - - name: aws-auth-test-latest - display_name: AWS Auth macOS py3.9 - run_on: - - macos-14 - expansions: - skip_ECS_auth_test: "true" - skip_EC2_auth_test: "true" - skip_web_identity_auth_test: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: aws-auth-macos-py3.13 - tasks: - - name: aws-auth-test-4.4 - - name: aws-auth-test-5.0 - - name: aws-auth-test-6.0 - - name: aws-auth-test-7.0 - - name: aws-auth-test-8.0 - - name: aws-auth-test-rapid - - name: aws-auth-test-latest - display_name: AWS Auth macOS py3.13 - run_on: - - macos-14 - expansions: - skip_ECS_auth_test: "true" - skip_EC2_auth_test: "true" - skip_web_identity_auth_test: "true" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 - -- matrix_name: "tests-fips" - matrix_spec: - platform: - - rhel9-fips - auth: "auth" - ssl: "ssl" - display_name: "${platform} ${auth} ${ssl}" - tasks: - - "test-fips-standalone" - -# Test one server version with zSeries, POWER8, and ARM. -- matrix_name: "test-different-cpu-architectures" - matrix_spec: - platform: - - rhel8-zseries # Added in 5.0.8 (SERVER-44074) - - rhel8-power8 # Added in 4.2.7 (SERVER-44072) - - rhel8-arm64 # Added in 4.4.2 (SERVER-48282) - auth-ssl: "*" - display_name: "${platform} ${auth-ssl}" - tasks: - - ".6.0" - -- matrix_name: "tests-python-version-supports-openssl-102-test-ssl" - matrix_spec: - platform: rhel7 - # Python 3.10+ requires OpenSSL 1.1.1+ - python-version: ["3.9"] - auth-ssl: "*" - display_name: "OpenSSL 1.0.2 ${python-version} ${platform} ${auth-ssl}" - tasks: - - ".5.0" - -- matrix_name: "test-search-index-helpers" - matrix_spec: - platform: rhel8 - python-version: "3.9" - display_name: "Search Index Helpers ${platform}" - tasks: - - name: "test_atlas_task_group_search_indexes" - -- matrix_name: "mockupdb-tests" - matrix_spec: - platform: rhel8 - python-version: 3.9 - display_name: "MockupDB Tests" - tasks: - - name: "mockupdb" - -- matrix_name: "tests-doctests" - matrix_spec: - platform: rhel8 - python-version: ["3.9"] - display_name: "Doctests ${python-version} ${platform}" - tasks: - - name: "doctests" - -- name: "no-server" - display_name: "No server test" - run_on: - - rhel84-small - tasks: - - name: "no-server" - -- name: "Coverage Report" - display_name: "Coverage Report" - run_on: - - rhel84-small - tasks: - - name: "coverage-report" - -- matrix_name: "atlas-connect" - matrix_spec: - platform: rhel8 - python-version: "*" - display_name: "Atlas connect ${python-version} ${platform}" - tasks: - - name: "atlas-connect" - -# OCSP test matrix. -- name: ocsp-test-rhel8-v4.4-py3.9 - tasks: - - name: .ocsp - display_name: OCSP test RHEL8 v4.4 py3.9 - run_on: - - rhel87-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "4.4" - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: ocsp-test-rhel8-v5.0-py3.10 - tasks: - - name: .ocsp - display_name: OCSP test RHEL8 v5.0 py3.10 - run_on: - - rhel87-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "5.0" - PYTHON_BINARY: /opt/python/3.10/bin/python3 -- name: ocsp-test-rhel8-v6.0-py3.11 - tasks: - - name: .ocsp - display_name: OCSP test RHEL8 v6.0 py3.11 - run_on: - - rhel87-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "6.0" - PYTHON_BINARY: /opt/python/3.11/bin/python3 -- name: ocsp-test-rhel8-v7.0-py3.12 - tasks: - - name: .ocsp - display_name: OCSP test RHEL8 v7.0 py3.12 - run_on: - - rhel87-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "7.0" - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: ocsp-test-rhel8-v8.0-py3.13 - tasks: - - name: .ocsp - display_name: OCSP test RHEL8 v8.0 py3.13 - run_on: - - rhel87-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "8.0" - PYTHON_BINARY: /opt/python/3.13/bin/python3 -- name: ocsp-test-rhel8-rapid-pypy3.9 - tasks: - - name: .ocsp - display_name: OCSP test RHEL8 rapid pypy3.9 - run_on: - - rhel87-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: rapid - PYTHON_BINARY: /opt/python/pypy3.9/bin/python3 -- name: ocsp-test-rhel8-latest-pypy3.10 - tasks: - - name: .ocsp - display_name: OCSP test RHEL8 latest pypy3.10 - run_on: - - rhel87-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: latest - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 -- name: ocsp-test-win64-v4.4-py3.9 - tasks: - - name: .ocsp-rsa !.ocsp-staple - display_name: OCSP test Win64 v4.4 py3.9 - run_on: - - windows-64-vsMulti-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "4.4" - PYTHON_BINARY: C:/python/Python39/python.exe -- name: ocsp-test-win64-v8.0-py3.13 - tasks: - - name: .ocsp-rsa !.ocsp-staple - display_name: OCSP test Win64 v8.0 py3.13 - run_on: - - windows-64-vsMulti-small - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "8.0" - PYTHON_BINARY: C:/python/Python313/python.exe -- name: ocsp-test-macos-v4.4-py3.9 - tasks: - - name: .ocsp-rsa !.ocsp-staple - display_name: OCSP test macOS v4.4 py3.9 - run_on: - - macos-14 - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "4.4" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 -- name: ocsp-test-macos-v8.0-py3.13 - tasks: - - name: .ocsp-rsa !.ocsp-staple - display_name: OCSP test macOS v8.0 py3.13 - run_on: - - macos-14 - batchtime: 20160 - expansions: - AUTH: noauth - SSL: ssl - TOPOLOGY: server - VERSION: "8.0" - PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 - -# Load balancer tests -- name: load-balancer-rhel8-v6.0-py3.9-auth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v6.0 py3.9 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "6.0" - AUTH: auth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: load-balancer-rhel8-v6.0-py3.10-noauth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v6.0 py3.10 NoAuth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "6.0" - AUTH: noauth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.10/bin/python3 -- name: load-balancer-rhel8-v6.0-py3.11-noauth-nossl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v6.0 py3.11 NoAuth NoSSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "6.0" - AUTH: noauth - SSL: nossl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.11/bin/python3 -- name: load-balancer-rhel8-v7.0-py3.12-auth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v7.0 py3.12 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "7.0" - AUTH: auth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: load-balancer-rhel8-v7.0-py3.13-noauth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v7.0 py3.13 NoAuth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "7.0" - AUTH: noauth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.13/bin/python3 -- name: load-balancer-rhel8-v7.0-pypy3.9-noauth-nossl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v7.0 pypy3.9 NoAuth NoSSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "7.0" - AUTH: noauth - SSL: nossl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/pypy3.9/bin/python3 -- name: load-balancer-rhel8-v8.0-pypy3.10-auth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v8.0 pypy3.10 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "8.0" - AUTH: auth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 -- name: load-balancer-rhel8-v8.0-py3.9-noauth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v8.0 py3.9 NoAuth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "8.0" - AUTH: noauth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.9/bin/python3 -- name: load-balancer-rhel8-v8.0-py3.10-noauth-nossl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 v8.0 py3.10 NoAuth NoSSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: "8.0" - AUTH: noauth - SSL: nossl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.10/bin/python3 -- name: load-balancer-rhel8-latest-py3.11-auth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 latest py3.11 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: latest - AUTH: auth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.11/bin/python3 -- name: load-balancer-rhel8-latest-py3.12-noauth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 latest py3.12 NoAuth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: latest - AUTH: noauth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.12/bin/python3 -- name: load-balancer-rhel8-latest-py3.13-noauth-nossl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 latest py3.13 NoAuth NoSSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: latest - AUTH: noauth - SSL: nossl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.13/bin/python3 -- name: load-balancer-rhel8-rapid-pypy3.9-auth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 rapid pypy3.9 Auth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: rapid - AUTH: auth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/pypy3.9/bin/python3 -- name: load-balancer-rhel8-rapid-pypy3.10-noauth-ssl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 rapid pypy3.10 NoAuth SSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: rapid - AUTH: noauth - SSL: ssl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 -- name: load-balancer-rhel8-rapid-py3.9-noauth-nossl - tasks: - - name: load-balancer-test - display_name: Load Balancer RHEL8 rapid py3.9 NoAuth NoSSL - run_on: - - rhel87-small - batchtime: 10080 - expansions: - VERSION: rapid - AUTH: noauth - SSL: nossl - test_loadbalancer: "true" - PYTHON_BINARY: /opt/python/3.9/bin/python3 - -- matrix_name: "oidc-auth-test" - matrix_spec: - platform: [ rhel8, macos, windows ] - display_name: "OIDC Auth ${platform}" - tasks: - - name: testoidc_task_group - batchtime: 20160 # 14 days - -- name: testazureoidc-variant - display_name: "OIDC Auth Azure" - run_on: ubuntu2204-small - tasks: - - name: testazureoidc_task_group - batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README - -- name: testgcpoidc-variant - display_name: "OIDC Auth GCP" - run_on: ubuntu2204-small - tasks: - - name: testgcpoidc_task_group - batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README - -- name: testgcpkms-variant - display_name: "GCP KMS" - run_on: - - debian11-small + - debian11-small tasks: - name: testgcpkms_task_group batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README - testgcpkms-fail-task - -- name: testazurekms-variant - display_name: "Azure KMS" - run_on: debian11-small - tasks: - name: testazurekms_task_group batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README - testazurekms-fail-task - name: rhel8-test-lambda - display_name: AWS Lambda handler tests + display_name: FaaS Lambda run_on: rhel87-small tasks: - name: test_aws_lambda_task_group -- name: rhel8-pr-assign-reviewer - display_name: Assign PR Reviewer - run_on: rhel87-small - tasks: - - name: "assign-pr-reviewer" - - name: rhel8-import-time - display_name: Import Time Check + display_name: Import Time run_on: rhel87-small tasks: - name: "check-import-time" @@ -4374,7 +1811,7 @@ buildvariants: - name: "backport-pr" - name: "perf-tests" - display_name: "Performance Benchmark Tests" + display_name: "Performance Benchmarks" batchtime: 10080 # 7 days run_on: rhel90-dbx-perf-large tasks: diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 210a403d39..b7187b50db 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -9,13 +9,17 @@ # Note: Run this file with `hatch run`, `pipx run`, or `uv run`. from __future__ import annotations +import sys from dataclasses import dataclass +from inspect import getmembers, isfunction from itertools import cycle, product, zip_longest +from pathlib import Path from typing import Any from shrub.v3.evg_build_variant import BuildVariant +from shrub.v3.evg_command import FunctionCall from shrub.v3.evg_project import EvgProject -from shrub.v3.evg_task import EvgTaskRef +from shrub.v3.evg_task import EvgTask, EvgTaskRef from shrub.v3.shrub_service import ShrubService ############## @@ -23,7 +27,6 @@ ############## 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 @@ -32,7 +35,13 @@ AUTH_SSLS = [("auth", "ssl"), ("noauth", "ssl"), ("noauth", "nossl")] TOPOLOGIES = ["standalone", "replica_set", "sharded_cluster"] C_EXTS = ["with_ext", "without_ext"] -SYNCS = ["sync", "async"] +# By default test each of the topologies with a subset of auth/ssl. +SUB_TASKS = [ + ".sharded_cluster .auth .ssl", + ".replica_set .noauth .ssl", + ".standalone .noauth .nossl", +] +SYNCS = ["sync", "async", "sync_async"] DISPLAY_LOOKUP = dict( ssl=dict(ssl="SSL", nossl="NoSSL"), auth=dict(auth="Auth", noauth="NoAuth"), @@ -172,6 +181,7 @@ def get_display_name(base: str, host: Host | None = None, **kwargs) -> str: if host is not None: display_name += f" {host.display_name}" version = kwargs.pop("VERSION", None) + version = version or kwargs.pop("version", None) if version: if version not in ["rapid", "latest"]: version = f"v{version}" @@ -222,7 +232,7 @@ def create_ocsp_variants() -> list[BuildVariant]: variants = [] batchtime = BATCHTIME_WEEK * 2 expansions = dict(AUTH="noauth", SSL="ssl", TOPOLOGY="server") - base_display = "OCSP test" + base_display = "OCSP" # OCSP tests on default host with all servers v4.4+ and all python versions. versions = [v for v in ALL_VERSIONS if v != "4.0"] @@ -230,7 +240,7 @@ def create_ocsp_variants() -> list[BuildVariant]: host = DEFAULT_HOST variant = create_variant( [".ocsp"], - get_display_name(base_display, host, version, python), + get_display_name(base_display, host, version=version, python=python), python=python, version=version, host=host, @@ -246,7 +256,7 @@ def create_ocsp_variants() -> list[BuildVariant]: python = CPYTHONS[0] if version == "4.4" else CPYTHONS[-1] variant = create_variant( [".ocsp-rsa !.ocsp-staple"], - get_display_name(base_display, host, version, python), + get_display_name(base_display, host, version=version, python=python), python=python, version=version, host=host, @@ -269,7 +279,7 @@ def create_server_variants() -> list[BuildVariant]: expansions = dict(COVERAGE="coverage") display_name = get_display_name(base_display_name, host, python=python, **expansions) variant = create_variant( - [f".{t}" for t in TOPOLOGIES], + [f".{t} .sync_async" for t in TOPOLOGIES], display_name, python=python, host=host, @@ -278,15 +288,12 @@ def create_server_variants() -> list[BuildVariant]: ) 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 - ): + # Test the rest of the pythons. + for python in CPYTHONS[1:-1] + PYPYS[:-1]: display_name = f"Test {host}" - expansions = dict(AUTH=auth, SSL=ssl) - display_name = get_display_name("Test", host, python=python, **expansions) + display_name = get_display_name(base_display_name, host, python=python) variant = create_variant( - [f".{topology}"], + [f"{t} .sync_async" for t in SUB_TASKS], display_name, python=python, host=host, @@ -316,8 +323,8 @@ def create_encryption_variants() -> list[BuildVariant]: tags = ["encryption_tag"] batchtime = BATCHTIME_WEEK - def get_encryption_expansions(encryption, ssl="ssl"): - expansions = dict(AUTH="auth", SSL=ssl, test_encryption="true") + def get_encryption_expansions(encryption): + expansions = dict(test_encryption="true") if "crypt_shared" in encryption: expansions["test_crypt_shared"] = "true" if "PyOpenSSL" in encryption: @@ -326,13 +333,13 @@ def get_encryption_expansions(encryption, ssl="ssl"): host = DEFAULT_HOST - # Test against all server versions and topolgies for the three main python versions. + # Test against all server versions for the three main python versions. encryptions = ["Encryption", "Encryption crypt_shared", "Encryption PyOpenSSL"] for encryption, python in product(encryptions, [*MIN_MAX_PYTHON, PYPYS[-1]]): expansions = get_encryption_expansions(encryption) display_name = get_display_name(encryption, host, python=python, **expansions) variant = create_variant( - [f".{t}" for t in TOPOLOGIES], + [f"{t} .sync_async" for t in SUB_TASKS], display_name, python=python, host=host, @@ -343,13 +350,11 @@ def get_encryption_expansions(encryption, ssl="ssl"): variants.append(variant) # Test the rest of the pythons on linux for all server versions. - for encryption, python, ssl in zip_cycle( - encryptions, CPYTHONS[1:-1] + PYPYS[:-1], ["ssl", "nossl"] - ): - expansions = get_encryption_expansions(encryption, ssl) + for encryption, python, task in zip_cycle(encryptions, CPYTHONS[1:-1] + PYPYS[:-1], SUB_TASKS): + expansions = get_encryption_expansions(encryption) display_name = get_display_name(encryption, host, python=python, **expansions) variant = create_variant( - [".replica_set"], + [f"{task} .sync_async"], display_name, python=python, host=host, @@ -381,21 +386,17 @@ def create_load_balancer_variants(): # Load balancer tests - run all supported server versions using the lowest supported python. host = DEFAULT_HOST batchtime = BATCHTIME_WEEK - expansions_base = dict(test_loadbalancer="true") - versions = ["6.0", "7.0", "8.0", "latest", "rapid"] + versions = get_versions_from("6.0") variants = [] - pythons = CPYTHONS + PYPYS - for ind, (version, (auth, ssl)) in enumerate(product(versions, AUTH_SSLS)): - expansions = dict(VERSION=version, AUTH=auth, SSL=ssl) - expansions.update(expansions_base) - python = pythons[ind % len(pythons)] - display_name = get_display_name("Load Balancer", host, python=python, **expansions) + for version in versions: + python = CPYTHONS[0] + display_name = get_display_name("Load Balancer", host, python=python, version=version) variant = create_variant( - task_names, + [".load-balancer"], display_name, python=python, host=host, - expansions=expansions, + version=version, batchtime=batchtime, ) variants.append(variant) @@ -412,7 +413,7 @@ def create_compression_variants(): for ind, (compressor, c_ext) in enumerate(product(["snappy", "zlib", "zstd"], C_EXTS)): expansions = dict(COMPRESSORS=compressor) handle_c_ext(c_ext, expansions) - base_name = f"{compressor} compression" + base_name = f"Compression {compressor}" python = CPYTHONS[ind % len(CPYTHONS)] display_name = get_display_name(base_name, host, python=python, **expansions) variant = create_variant( @@ -428,7 +429,7 @@ def create_compression_variants(): for compressor, python in zip_cycle(["snappy", "zlib", "zstd"], other_pythons): expansions = dict(COMPRESSORS=compressor) handle_c_ext(c_ext, expansions) - base_name = f"{compressor} compression" + base_name = f"Compression {compressor}" display_name = get_display_name(base_name, host, python=python, **expansions) variant = create_variant( task_names[compressor], @@ -466,12 +467,13 @@ def create_enterprise_auth_variants(): def create_pyopenssl_variants(): base_name = "PyOpenSSL" batchtime = BATCHTIME_WEEK - base_expansions = dict(test_pyopenssl="true", SSL="ssl") + expansions = dict(test_pyopenssl="true") variants = [] for python in ALL_PYTHONS: # Only test "noauth" with min python. auth = "noauth" if python == CPYTHONS[0] else "auth" + ssl = "nossl" if auth == "noauth" else "ssl" if python == CPYTHONS[0]: host = HOSTS["macos"] elif python == CPYTHONS[-1]: @@ -481,7 +483,7 @@ def create_pyopenssl_variants(): display_name = get_display_name(base_name, host, python=python) variant = create_variant( - [".replica_set", ".7.0"], + [f".replica_set .{auth} .{ssl} .sync_async", f".7.0 .{auth} .{ssl} .sync_async"], display_name, python=python, host=host, @@ -825,6 +827,66 @@ def create_load_balancer_tasks(): # Generate Config ################## -variants = create_pyopenssl_variants() -# print(len(variants)) -generate_yaml(variants=variants) + +def write_variants_to_file(): + mod = sys.modules[__name__] + here = Path(__file__).absolute().parent + target = here.parent / "generated_configs" / "variants.yml" + if target.exists(): + target.unlink() + with target.open("w") as fid: + fid.write("buildvariants:\n") + + for name, func in getmembers(mod, isfunction): + if not name.endswith("_variants"): + continue + if not name.startswith("create_"): + raise ValueError("Variant creators must start with create_") + title = name.replace("create_", "").replace("_variants", "").replace("_", " ").capitalize() + project = EvgProject(tasks=None, buildvariants=func()) + out = ShrubService.generate_yaml(project).splitlines() + with target.open("a") as fid: + fid.write(f" # {title} tests\n") + for line in out[1:]: + fid.write(f"{line}\n") + fid.write("\n") + + # Remove extra trailing newline: + data = target.read_text().splitlines() + with target.open("w") as fid: + for line in data[:-1]: + fid.write(f"{line}\n") + + +def write_tasks_to_file(): + mod = sys.modules[__name__] + here = Path(__file__).absolute().parent + target = here.parent / "generated_configs" / "tasks.yml" + if target.exists(): + target.unlink() + with target.open("w") as fid: + fid.write("tasks:\n") + + for name, func in getmembers(mod, isfunction): + if not name.endswith("_tasks"): + continue + if not name.startswith("create_"): + raise ValueError("Task creators must start with create_") + title = name.replace("create_", "").replace("_tasks", "").replace("_", " ").capitalize() + project = EvgProject(tasks=func(), buildvariants=None) + out = ShrubService.generate_yaml(project).splitlines() + with target.open("a") as fid: + fid.write(f" # {title} tests\n") + for line in out[1:]: + fid.write(f"{line}\n") + fid.write("\n") + + # Remove extra trailing newline: + data = target.read_text().splitlines() + with target.open("w") as fid: + for line in data[:-1]: + fid.write(f"{line}\n") + + +write_variants_to_file() +write_tasks_to_file()