diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 028caf4d9b..72cab17dc9 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -42,7 +42,7 @@ functions: # Make an evergreen expansion file with dynamic values - command: subprocess.exec params: - include_expansions_in_env: ["is_patch", "project", "version_id", "AUTH", "SSL", "TEST_ENCRYPTION", "TEST_ENCRYPTION_PYOPENSSL", "TEST_CRYPT_SHARED", "TEST_PYOPENSSL", "SETDEFAULTENCODING", "TEST_LOADBALANCER", "TEST_SEVERLESS", "SKIP_CSOT_TESTS", "MONGODB_STARTED", "DISABLE_TEST_COMMANDS", "GREEN_FRAMEWORK", "NO_EXT", "COVERAGE", "COMPRESSORS", "MONGODB_API_VERSION", "skip_crypt_shared", "VERSION", "TOPOLOGY", "STORAGE_ENGINE", "ORCHESTRATION_FILE", "REQUIRE_API_VERSION", "LOAD_BALANCER", "skip_web_identity_auth_test", "skip_ECS_auth_test"] + include_expansions_in_env: ["is_patch", "project", "version_id", "skip_web_identity_auth_test", "skip_ECS_auth_test"] binary: bash working_dir: "src" args: @@ -205,18 +205,13 @@ functions: - command: subprocess.exec params: binary: bash - include_expansions_in_env: ["VERSION", "TOPOLOGY", "AUTH", "SSL", "ORCHESTRATION_FILE", "LOAD_BALANCER"] + include_expansions_in_env: [VERSION, TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE, LOAD_BALANCER, + STORAGE_ENGINE, REQUIRE_API_VERSION, DRIVERS_TOOLS, TEST_CRYPT_SHARED] args: - - src/.evergreen/scripts/run-with-env.sh - src/.evergreen/scripts/bootstrap-mongo-orchestration.sh - command: expansions.update params: file: mo-expansion.yml - - command: expansions.update - params: - updates: - - key: MONGODB_STARTED - value: "1" "bootstrap data lake": - command: subprocess.exec @@ -250,17 +245,6 @@ functions: - .evergreen/scripts/run-with-env.sh - .evergreen/scripts/run-mod-wsgi-tests.sh - "run mockupdb tests": - - command: subprocess.exec - type: test - params: - include_expansions_in_env: ["PYTHON_BINARY"] - working_dir: "src" - binary: bash - args: - - .evergreen/scripts/run-with-env.sh - - .evergreen/scripts/run-mockupdb-tests.sh - "run doctests": - command: subprocess.exec type: test @@ -276,14 +260,12 @@ functions: - command: subprocess.exec type: test params: - include_expansions_in_env: ["TEST_DATA_LAKE", "PYTHON_BINARY", "AUTH", "SSL", - "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "TEST_SUITES", - "TEST_INDEX_MANAGEMENT", "CRYPT_SHARED_LIB_PATH", "TEST_ENCRYPTION", "TEST_ENCRYPTION_PYOPENSSL", - "TEST_CRYPT_SHARED", "TEST_PYOPENSSL", "TEST_LOADBALANCER", "TEST_SEVERLESS", "MONGODB_URI"] + include_expansions_in_env: [AUTH, SSL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, + AWS_SESSION_TOKEN, COVERAGE, PYTHON_BINARY, LIBMONGOCRYPT_URL, MONGODB_URI, + DISABLE_TEST_COMMANDS, GREEN_FRAMEWORK, NO_EXT, COMPRESSORS] binary: bash working_dir: "src" - args: - - .evergreen/scripts/setup-tests.sh + args: [.evergreen/just.sh, setup-test, "${TEST_NAME}", "${SUB_TEST_NAME}"] - command: subprocess.exec type: test params: @@ -755,7 +737,9 @@ tasks: - name: "mockupdb" tags: ["mockupdb"] commands: - - func: "run mockupdb tests" + - func: "run tests" + vars: + TEST_NAME: mockupdb - name: "doctests" tags: ["doctests"] @@ -770,6 +754,8 @@ tasks: tags: ["serverless"] commands: - func: "run tests" + vars: + TEST_NAME: serverless - name: "test-enterprise-auth" tags: ["enterprise-auth"] @@ -789,7 +775,7 @@ tasks: TOPOLOGY: "replica_set" - func: "run tests" vars: - TEST_INDEX_MANAGEMENT: "1" + TEST_NAME: index_management AUTH: "auth" - name: "mod-wsgi-standalone" @@ -857,7 +843,7 @@ tasks: - func: "bootstrap data lake" - func: "run tests" vars: - TEST_DATA_LAKE: "true" + TEST_NAME: "data_lake" - name: "test-aws-lambda-deployed" commands: diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 6b17035748..5495ad3470 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -12,7 +12,7 @@ tasks: vars: AUTH: auth SSL: ssl - TEST_LOADBALANCER: "true" + TEST_NAME: load_balancer tags: [load-balancer, auth, ssl] - name: test-load-balancer-noauth-ssl commands: @@ -26,7 +26,7 @@ tasks: vars: AUTH: noauth SSL: ssl - TEST_LOADBALANCER: "true" + TEST_NAME: load_balancer tags: [load-balancer, noauth, ssl] - name: test-load-balancer-noauth-nossl commands: @@ -40,7 +40,7 @@ tasks: vars: AUTH: noauth SSL: nossl - TEST_LOADBALANCER: "true" + TEST_NAME: load_balancer tags: [load-balancer, noauth, nossl] # Server tests @@ -57,7 +57,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - standalone @@ -77,7 +77,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - standalone @@ -97,7 +97,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - standalone @@ -117,7 +116,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - standalone @@ -137,7 +136,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - standalone @@ -157,7 +156,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - standalone @@ -177,7 +175,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - standalone @@ -197,7 +195,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - standalone @@ -217,7 +215,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - standalone @@ -237,7 +234,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - standalone @@ -257,7 +254,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - standalone @@ -277,7 +274,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - standalone @@ -297,7 +293,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - standalone @@ -317,7 +313,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - standalone @@ -337,7 +333,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - standalone @@ -357,7 +352,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - standalone @@ -377,7 +372,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - standalone @@ -397,7 +392,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - standalone @@ -417,7 +411,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - standalone @@ -437,7 +431,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - standalone @@ -457,7 +451,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - standalone @@ -477,7 +470,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - standalone @@ -497,7 +490,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - standalone @@ -517,7 +510,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - standalone @@ -537,7 +529,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - standalone @@ -557,7 +549,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - standalone @@ -577,7 +569,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - standalone @@ -597,7 +588,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - standalone @@ -617,7 +608,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - standalone @@ -637,7 +628,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - standalone @@ -657,7 +647,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - standalone @@ -677,7 +667,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - standalone @@ -697,7 +687,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - standalone @@ -717,7 +706,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - standalone @@ -737,7 +726,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - standalone @@ -757,7 +746,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - standalone @@ -777,7 +765,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - standalone @@ -797,7 +785,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - standalone @@ -817,7 +805,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - standalone @@ -837,7 +824,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - standalone @@ -857,7 +844,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - standalone @@ -877,7 +864,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - standalone @@ -897,7 +883,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - standalone @@ -917,7 +903,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - standalone @@ -937,7 +923,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - standalone @@ -957,7 +942,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - standalone @@ -977,7 +962,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - standalone @@ -997,7 +982,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - standalone @@ -1017,7 +1001,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - standalone @@ -1037,7 +1021,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - standalone @@ -1057,7 +1041,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - standalone @@ -1077,7 +1060,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - standalone @@ -1097,7 +1080,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - standalone @@ -1117,7 +1100,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - standalone @@ -1137,7 +1119,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - standalone @@ -1157,7 +1139,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - standalone @@ -1177,7 +1159,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - standalone @@ -1197,7 +1178,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - standalone @@ -1217,7 +1198,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - standalone @@ -1237,7 +1218,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - standalone @@ -1257,7 +1237,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - standalone @@ -1277,7 +1257,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - standalone @@ -1297,7 +1277,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - standalone @@ -1317,7 +1296,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - standalone @@ -1337,7 +1316,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - standalone @@ -1357,7 +1336,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - standalone @@ -1377,7 +1355,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - standalone @@ -1397,7 +1375,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - standalone @@ -1417,7 +1395,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - standalone @@ -1437,7 +1414,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - standalone @@ -1457,7 +1434,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - standalone @@ -1477,7 +1454,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - standalone @@ -1497,7 +1473,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - standalone @@ -1517,7 +1493,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - standalone @@ -1537,7 +1513,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - latest - standalone @@ -1557,7 +1532,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - standalone @@ -1577,7 +1552,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - standalone @@ -1597,7 +1572,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - latest - standalone @@ -1617,7 +1591,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - standalone @@ -1637,7 +1611,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - standalone @@ -1657,7 +1631,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - latest - standalone @@ -1677,7 +1650,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - replica_set @@ -1697,7 +1670,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - replica_set @@ -1717,7 +1690,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - replica_set @@ -1737,7 +1709,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - replica_set @@ -1757,7 +1729,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - replica_set @@ -1777,7 +1749,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - replica_set @@ -1797,7 +1768,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - replica_set @@ -1817,7 +1788,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - replica_set @@ -1837,7 +1808,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - replica_set @@ -1857,7 +1827,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - replica_set @@ -1877,7 +1847,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - replica_set @@ -1897,7 +1867,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - replica_set @@ -1917,7 +1886,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - replica_set @@ -1937,7 +1906,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - replica_set @@ -1957,7 +1926,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - replica_set @@ -1977,7 +1945,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - replica_set @@ -1997,7 +1965,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - replica_set @@ -2017,7 +1985,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - replica_set @@ -2037,7 +2004,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - replica_set @@ -2057,7 +2024,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - replica_set @@ -2077,7 +2044,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - replica_set @@ -2097,7 +2063,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - replica_set @@ -2117,7 +2083,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - replica_set @@ -2137,7 +2103,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - replica_set @@ -2157,7 +2122,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - replica_set @@ -2177,7 +2142,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - replica_set @@ -2197,7 +2162,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - replica_set @@ -2217,7 +2181,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - replica_set @@ -2237,7 +2201,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - replica_set @@ -2257,7 +2221,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - replica_set @@ -2277,7 +2240,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - replica_set @@ -2297,7 +2260,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - replica_set @@ -2317,7 +2280,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - replica_set @@ -2337,7 +2299,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - replica_set @@ -2357,7 +2319,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - replica_set @@ -2377,7 +2339,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - replica_set @@ -2397,7 +2358,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - replica_set @@ -2417,7 +2378,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - replica_set @@ -2437,7 +2398,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - replica_set @@ -2457,7 +2417,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - replica_set @@ -2477,7 +2437,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - replica_set @@ -2497,7 +2457,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - replica_set @@ -2517,7 +2476,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - replica_set @@ -2537,7 +2496,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - replica_set @@ -2557,7 +2516,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - replica_set @@ -2577,7 +2535,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - replica_set @@ -2597,7 +2555,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - replica_set @@ -2617,7 +2575,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - replica_set @@ -2637,7 +2594,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - replica_set @@ -2657,7 +2614,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - replica_set @@ -2677,7 +2634,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - replica_set @@ -2697,7 +2653,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - replica_set @@ -2717,7 +2673,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - replica_set @@ -2737,7 +2693,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - replica_set @@ -2757,7 +2712,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - replica_set @@ -2777,7 +2732,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - replica_set @@ -2797,7 +2752,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - replica_set @@ -2817,7 +2771,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - replica_set @@ -2837,7 +2791,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - replica_set @@ -2857,7 +2811,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - replica_set @@ -2877,7 +2830,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - replica_set @@ -2897,7 +2850,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - replica_set @@ -2917,7 +2870,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - replica_set @@ -2937,7 +2889,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - replica_set @@ -2957,7 +2909,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - replica_set @@ -2977,7 +2929,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - replica_set @@ -2997,7 +2948,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - replica_set @@ -3017,7 +2968,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - replica_set @@ -3037,7 +2988,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - replica_set @@ -3057,7 +3007,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - replica_set @@ -3077,7 +3027,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - replica_set @@ -3097,7 +3047,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - replica_set @@ -3117,7 +3066,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - replica_set @@ -3137,7 +3086,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - replica_set @@ -3157,7 +3106,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - latest - replica_set @@ -3177,7 +3125,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - replica_set @@ -3197,7 +3145,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - replica_set @@ -3217,7 +3165,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - latest - replica_set @@ -3237,7 +3184,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - replica_set @@ -3257,7 +3204,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - replica_set @@ -3277,7 +3224,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - latest - replica_set @@ -3297,7 +3243,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - sharded_cluster @@ -3317,7 +3263,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - sharded_cluster @@ -3337,7 +3283,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - sharded_cluster @@ -3357,7 +3302,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - sharded_cluster @@ -3377,7 +3322,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - sharded_cluster @@ -3397,7 +3342,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - sharded_cluster @@ -3417,7 +3361,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.0" - sharded_cluster @@ -3437,7 +3381,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.0" - sharded_cluster @@ -3457,7 +3401,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.0" - sharded_cluster @@ -3477,7 +3420,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - sharded_cluster @@ -3497,7 +3440,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - sharded_cluster @@ -3517,7 +3460,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - sharded_cluster @@ -3537,7 +3479,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - sharded_cluster @@ -3557,7 +3499,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - sharded_cluster @@ -3577,7 +3519,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - sharded_cluster @@ -3597,7 +3538,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.2" - sharded_cluster @@ -3617,7 +3558,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.2" - sharded_cluster @@ -3637,7 +3578,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.2" - sharded_cluster @@ -3657,7 +3597,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - sharded_cluster @@ -3677,7 +3617,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - sharded_cluster @@ -3697,7 +3637,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - sharded_cluster @@ -3717,7 +3656,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - sharded_cluster @@ -3737,7 +3676,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - sharded_cluster @@ -3757,7 +3696,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - sharded_cluster @@ -3777,7 +3715,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "4.4" - sharded_cluster @@ -3797,7 +3735,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "4.4" - sharded_cluster @@ -3817,7 +3755,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "4.4" - sharded_cluster @@ -3837,7 +3774,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - sharded_cluster @@ -3857,7 +3794,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - sharded_cluster @@ -3877,7 +3814,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - sharded_cluster @@ -3897,7 +3833,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - sharded_cluster @@ -3917,7 +3853,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - sharded_cluster @@ -3937,7 +3873,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - sharded_cluster @@ -3957,7 +3892,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "5.0" - sharded_cluster @@ -3977,7 +3912,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "5.0" - sharded_cluster @@ -3997,7 +3932,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "5.0" - sharded_cluster @@ -4017,7 +3951,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - sharded_cluster @@ -4037,7 +3971,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - sharded_cluster @@ -4057,7 +3991,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - sharded_cluster @@ -4077,7 +4010,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - sharded_cluster @@ -4097,7 +4030,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - sharded_cluster @@ -4117,7 +4050,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - sharded_cluster @@ -4137,7 +4069,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "6.0" - sharded_cluster @@ -4157,7 +4089,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "6.0" - sharded_cluster @@ -4177,7 +4109,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "6.0" - sharded_cluster @@ -4197,7 +4128,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - sharded_cluster @@ -4217,7 +4148,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - sharded_cluster @@ -4237,7 +4168,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - sharded_cluster @@ -4257,7 +4187,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - sharded_cluster @@ -4277,7 +4207,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - sharded_cluster @@ -4297,7 +4227,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - sharded_cluster @@ -4317,7 +4246,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "7.0" - sharded_cluster @@ -4337,7 +4266,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "7.0" - sharded_cluster @@ -4357,7 +4286,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "7.0" - sharded_cluster @@ -4377,7 +4305,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - sharded_cluster @@ -4397,7 +4325,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - sharded_cluster @@ -4417,7 +4345,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - sharded_cluster @@ -4437,7 +4364,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - sharded_cluster @@ -4457,7 +4384,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - sharded_cluster @@ -4477,7 +4404,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - sharded_cluster @@ -4497,7 +4423,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - "8.0" - sharded_cluster @@ -4517,7 +4443,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - "8.0" - sharded_cluster @@ -4537,7 +4463,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - "8.0" - sharded_cluster @@ -4557,7 +4482,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - sharded_cluster @@ -4577,7 +4502,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - sharded_cluster @@ -4597,7 +4522,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - sharded_cluster @@ -4617,7 +4541,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - sharded_cluster @@ -4637,7 +4561,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - sharded_cluster @@ -4657,7 +4581,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - sharded_cluster @@ -4677,7 +4600,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - rapid - sharded_cluster @@ -4697,7 +4620,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - rapid - sharded_cluster @@ -4717,7 +4640,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - rapid - sharded_cluster @@ -4737,7 +4659,7 @@ tasks: AUTH: auth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - sharded_cluster @@ -4757,7 +4679,7 @@ tasks: AUTH: auth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - sharded_cluster @@ -4777,7 +4699,6 @@ tasks: AUTH: auth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - latest - sharded_cluster @@ -4797,7 +4718,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - sharded_cluster @@ -4817,7 +4738,7 @@ tasks: AUTH: noauth SSL: ssl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - sharded_cluster @@ -4837,7 +4758,6 @@ tasks: AUTH: noauth SSL: ssl SYNC: sync_async - TEST_SUITES: "" tags: - latest - sharded_cluster @@ -4857,7 +4777,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync - TEST_SUITES: default + TEST_NAME: default_sync tags: - latest - sharded_cluster @@ -4877,7 +4797,7 @@ tasks: AUTH: noauth SSL: nossl SYNC: async - TEST_SUITES: default_async + TEST_NAME: default_async tags: - latest - sharded_cluster @@ -4897,7 +4817,6 @@ tasks: AUTH: noauth SSL: nossl SYNC: sync_async - TEST_SUITES: "" tags: - latest - sharded_cluster diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 531f23eb66..2793f1f7fb 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -318,7 +318,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption PYTHON_BINARY: /opt/python/3.9/bin/python3 tags: [encryption_tag] - name: encryption-rhel8-python3.13 @@ -331,7 +331,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption PYTHON_BINARY: /opt/python/3.13/bin/python3 tags: [encryption_tag] - name: encryption-rhel8-pypy3.10 @@ -344,7 +344,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 tags: [encryption_tag] - name: encryption-crypt_shared-rhel8-python3.9 @@ -357,7 +357,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption TEST_CRYPT_SHARED: "true" PYTHON_BINARY: /opt/python/3.9/bin/python3 tags: [encryption_tag] @@ -371,7 +371,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption TEST_CRYPT_SHARED: "true" PYTHON_BINARY: /opt/python/3.13/bin/python3 tags: [encryption_tag] @@ -385,7 +385,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption TEST_CRYPT_SHARED: "true" PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 tags: [encryption_tag] @@ -399,8 +399,8 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" - TEST_ENCRYPTION_PYOPENSSL: "true" + TEST_NAME: encryption + SUB_TEST_NAME: pyopenssl PYTHON_BINARY: /opt/python/3.9/bin/python3 tags: [encryption_tag] - name: encryption-pyopenssl-rhel8-python3.13 @@ -413,8 +413,8 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" - TEST_ENCRYPTION_PYOPENSSL: "true" + TEST_NAME: encryption + SUB_TEST_NAME: pyopenssl PYTHON_BINARY: /opt/python/3.13/bin/python3 tags: [encryption_tag] - name: encryption-pyopenssl-rhel8-pypy3.10 @@ -427,8 +427,8 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" - TEST_ENCRYPTION_PYOPENSSL: "true" + TEST_NAME: encryption + SUB_TEST_NAME: pyopenssl PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 tags: [encryption_tag] - name: encryption-rhel8-python3.10 @@ -438,7 +438,7 @@ buildvariants: run_on: - rhel87-small expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption PYTHON_BINARY: /opt/python/3.10/bin/python3 - name: encryption-crypt_shared-rhel8-python3.11 tasks: @@ -447,7 +447,7 @@ buildvariants: run_on: - rhel87-small expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption TEST_CRYPT_SHARED: "true" PYTHON_BINARY: /opt/python/3.11/bin/python3 - name: encryption-pyopenssl-rhel8-python3.12 @@ -457,8 +457,8 @@ buildvariants: run_on: - rhel87-small expansions: - TEST_ENCRYPTION: "true" - TEST_ENCRYPTION_PYOPENSSL: "true" + TEST_NAME: encryption + SUB_TEST_NAME: pyopenssl PYTHON_BINARY: /opt/python/3.12/bin/python3 - name: encryption-macos-python3.9 tasks: @@ -468,7 +468,7 @@ buildvariants: - macos-14 batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 tags: [encryption_tag] - name: encryption-macos-python3.13 @@ -479,7 +479,7 @@ buildvariants: - macos-14 batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 tags: [encryption_tag] - name: encryption-crypt_shared-macos-python3.9 @@ -490,7 +490,7 @@ buildvariants: - macos-14 batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption TEST_CRYPT_SHARED: "true" PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 tags: [encryption_tag] @@ -502,7 +502,7 @@ buildvariants: - macos-14 batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption TEST_CRYPT_SHARED: "true" PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.13/bin/python3 tags: [encryption_tag] @@ -514,7 +514,7 @@ buildvariants: - windows-64-vsMulti-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption PYTHON_BINARY: C:/python/Python39/python.exe tags: [encryption_tag] - name: encryption-win64-python3.13 @@ -525,7 +525,7 @@ buildvariants: - windows-64-vsMulti-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption PYTHON_BINARY: C:/python/Python313/python.exe tags: [encryption_tag] - name: encryption-crypt_shared-win64-python3.9 @@ -536,7 +536,7 @@ buildvariants: - windows-64-vsMulti-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption TEST_CRYPT_SHARED: "true" PYTHON_BINARY: C:/python/Python39/python.exe tags: [encryption_tag] @@ -548,7 +548,7 @@ buildvariants: - windows-64-vsMulti-small batchtime: 10080 expansions: - TEST_ENCRYPTION: "true" + TEST_NAME: encryption TEST_CRYPT_SHARED: "true" PYTHON_BINARY: C:/python/Python313/python.exe tags: [encryption_tag] @@ -772,7 +772,7 @@ buildvariants: # No c ext tests - name: no-c-ext-rhel8-python3.9 tasks: - - name: .standalone .noauth .nossl .sync_async + - name: .standalone .noauth .nossl !.sync_async display_name: No C Ext RHEL8 Python3.9 run_on: - rhel87-small @@ -781,7 +781,7 @@ buildvariants: PYTHON_BINARY: /opt/python/3.9/bin/python3 - name: no-c-ext-rhel8-python3.10 tasks: - - name: .replica_set .noauth .nossl .sync_async + - name: .replica_set .noauth .nossl !.sync_async display_name: No C Ext RHEL8 Python3.10 run_on: - rhel87-small @@ -790,7 +790,7 @@ buildvariants: PYTHON_BINARY: /opt/python/3.10/bin/python3 - name: no-c-ext-rhel8-python3.11 tasks: - - name: .sharded_cluster .noauth .nossl .sync_async + - name: .sharded_cluster .noauth .nossl !.sync_async display_name: No C Ext RHEL8 Python3.11 run_on: - rhel87-small @@ -799,7 +799,7 @@ buildvariants: PYTHON_BINARY: /opt/python/3.11/bin/python3 - name: no-c-ext-rhel8-python3.12 tasks: - - name: .standalone .noauth .nossl .sync_async + - name: .standalone .noauth .nossl !.sync_async display_name: No C Ext RHEL8 Python3.12 run_on: - rhel87-small @@ -808,7 +808,7 @@ buildvariants: PYTHON_BINARY: /opt/python/3.12/bin/python3 - name: no-c-ext-rhel8-python3.13 tasks: - - name: .replica_set .noauth .nossl .sync_async + - name: .replica_set .noauth .nossl !.sync_async display_name: No C Ext RHEL8 Python3.13 run_on: - rhel87-small @@ -1010,7 +1010,7 @@ buildvariants: - macos-14 batchtime: 10080 expansions: - TEST_PYOPENSSL: "true" + TEST_NAME: pyopenssl PYTHON_BINARY: /Library/Frameworks/Python.Framework/Versions/3.9/bin/python3 - name: pyopenssl-rhel8-python3.10 tasks: @@ -1021,7 +1021,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_PYOPENSSL: "true" + TEST_NAME: pyopenssl PYTHON_BINARY: /opt/python/3.10/bin/python3 - name: pyopenssl-rhel8-python3.11 tasks: @@ -1032,7 +1032,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_PYOPENSSL: "true" + TEST_NAME: pyopenssl PYTHON_BINARY: /opt/python/3.11/bin/python3 - name: pyopenssl-rhel8-python3.12 tasks: @@ -1043,7 +1043,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_PYOPENSSL: "true" + TEST_NAME: pyopenssl PYTHON_BINARY: /opt/python/3.12/bin/python3 - name: pyopenssl-win64-python3.13 tasks: @@ -1054,7 +1054,7 @@ buildvariants: - windows-64-vsMulti-small batchtime: 10080 expansions: - TEST_PYOPENSSL: "true" + TEST_NAME: pyopenssl PYTHON_BINARY: C:/python/Python313/python.exe - name: pyopenssl-rhel8-pypy3.10 tasks: @@ -1065,7 +1065,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_PYOPENSSL: "true" + TEST_NAME: pyopenssl PYTHON_BINARY: /opt/python/pypy3.10/bin/python3 # Search index tests @@ -1301,7 +1301,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_SERVERLESS: "true" + TEST_NAME: serverless AUTH: auth SSL: ssl PYTHON_BINARY: /opt/python/3.9/bin/python3 @@ -1313,7 +1313,7 @@ buildvariants: - rhel87-small batchtime: 10080 expansions: - TEST_SERVERLESS: "true" + TEST_NAME: serverless AUTH: auth SSL: ssl PYTHON_BINARY: /opt/python/3.13/bin/python3 diff --git a/.evergreen/run-azurekms-fail-test.sh b/.evergreen/run-azurekms-fail-test.sh index eea84d42a9..0804c34d66 100755 --- a/.evergreen/run-azurekms-fail-test.sh +++ b/.evergreen/run-azurekms-fail-test.sh @@ -2,7 +2,7 @@ set -o errexit # Exit the script with error if any of the commands fail HERE=$(dirname ${BASH_SOURCE:-$0}) . $DRIVERS_TOOLS/.evergreen/csfle/azurekms/setup-secrets.sh -SUCCESS=false TEST_FLE_AZURE_AUTO=1 bash $HERE/scripts/setup-tests.sh +bash $HERE/just.sh setup-test kms azure-fail KEY_NAME="${AZUREKMS_KEYNAME}" \ KEY_VAULT_ENDPOINT="${AZUREKMS_KEYVAULTENDPOINT}" \ $HERE/just.sh test-eg diff --git a/.evergreen/run-azurekms-test.sh b/.evergreen/run-azurekms-test.sh index 8e6b050cb6..b40b07b019 100755 --- a/.evergreen/run-azurekms-test.sh +++ b/.evergreen/run-azurekms-test.sh @@ -19,7 +19,7 @@ AZUREKMS_CMD="tar xf mongo-python-driver.tgz" \ $DRIVERS_TOOLS/.evergreen/csfle/azurekms/run-command.sh echo "Untarring file ... end" echo "Running test ... begin" -AZUREKMS_CMD="SUCCESS=true TEST_FLE_AZURE_AUTO=1 bash .evergreen/just.sh setup-test" \ +AZUREKMS_CMD="bash .evergreen/just.sh setup-test kms azure" \ $DRIVERS_TOOLS/.evergreen/csfle/azurekms/run-command.sh AZUREKMS_CMD="KEY_NAME=\"$AZUREKMS_KEYNAME\" KEY_VAULT_ENDPOINT=\"$AZUREKMS_KEYVAULTENDPOINT\" bash ./.evergreen/just.sh test-eg" \ $DRIVERS_TOOLS/.evergreen/csfle/azurekms/run-command.sh diff --git a/.evergreen/run-gcpkms-test.sh b/.evergreen/run-gcpkms-test.sh index a430f4e4f9..ee2e8d8a57 100755 --- a/.evergreen/run-gcpkms-test.sh +++ b/.evergreen/run-gcpkms-test.sh @@ -18,7 +18,7 @@ echo "Untarring file ... begin" GCPKMS_CMD="tar xf mongo-python-driver.tgz" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh echo "Untarring file ... end" echo "Running test ... begin" -GCPKMS_CMD="SUCCESS=true TEST_FLE_GCP_AUTO=1 bash ./.evergreen/just.sh setup-test" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh +GCPKMS_CMD="bash ./.evergreen/just.sh setup-test kms gcp" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh GCPKMS_CMD="./.evergreen/just.sh test-eg" $DRIVERS_TOOLS/.evergreen/csfle/gcpkms/run-command.sh echo "Running test ... end" bash $HERE/scripts/teardown-tests.sh diff --git a/.evergreen/run-mongodb-aws-ecs-test.sh b/.evergreen/run-mongodb-aws-ecs-test.sh index f141792420..fc3a092bd4 100755 --- a/.evergreen/run-mongodb-aws-ecs-test.sh +++ b/.evergreen/run-mongodb-aws-ecs-test.sh @@ -26,11 +26,9 @@ apt-get -qq update < /dev/null > /dev/null apt-get -qq install $PYTHON_VER $PYTHON_VER-venv build-essential $PYTHON_VER-dev -y < /dev/null > /dev/null export PYTHON_BINARY=$PYTHON_VER -export TEST_AUTH_AWS=1 -export AUTH="auth" export SET_XTRACE_ON=1 cd src rm -rf .venv rm -f .evergreen/scripts/test-env.sh || true -bash ./.evergreen/just.sh setup-test +bash ./.evergreen/just.sh setup-test auth_aws ecs bash .evergreen/just.sh test-eg diff --git a/.evergreen/run-mongodb-oidc-test.sh b/.evergreen/run-mongodb-oidc-test.sh index 552f9ef08e..c789d6d147 100755 --- a/.evergreen/run-mongodb-oidc-test.sh +++ b/.evergreen/run-mongodb-oidc-test.sh @@ -29,5 +29,5 @@ else exit 1 fi -TEST_AUTH_OIDC=1 COVERAGE=1 AUTH="auth" bash ./.evergreen/just.sh setup-test +COVERAGE=1 bash ./.evergreen/just.sh setup-test auth_oidc bash ./.evergreen/just.sh test-eg "${@:1}" diff --git a/.evergreen/run-perf-tests.sh b/.evergreen/run-perf-tests.sh index d0e001c5fc..85a82c2a5a 100755 --- a/.evergreen/run-perf-tests.sh +++ b/.evergreen/run-perf-tests.sh @@ -14,7 +14,6 @@ export TEST_PATH="${PROJECT_DIRECTORY}/specifications/source/benchmarking/data" export OUTPUT_FILE="${PROJECT_DIRECTORY}/results.json" export PYTHON_BINARY=/opt/mongodbtoolchain/v4/bin/python3 -export PERF_TEST=1 -bash ./.evergreen/just.sh setup-test +bash ./.evergreen/just.sh setup-test perf bash ./.evergreen/just.sh test-eg diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 12935b25a0..f3c71b41ff 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -1,8 +1,11 @@ #!/bin/bash -set -eu +set -eux SCRIPT_DIR=$(dirname ${BASH_SOURCE:-$0}) -ROOT_DIR="$(dirname "$(dirname $SCRIPT_DIR)")" +SCRIPT_DIR="$( cd -- "$SCRIPT_DIR" > /dev/null 2>&1 && pwd )" +ROOT_DIR="$(dirname $SCRIPT_DIR)" + +pushd $ROOT_DIR export PIP_QUIET=1 # Quiet by default export PIP_PREFER_BINARY=1 # Prefer binary dists by default @@ -16,7 +19,7 @@ else echo "Not sourcing env inputs" fi -# Ensure there are test inputs. +# Handle test inputs. if [ -f $SCRIPT_DIR/scripts/test-env.sh ]; then echo "Sourcing test inputs" . $SCRIPT_DIR/scripts/test-env.sh @@ -24,9 +27,10 @@ else echo "Missing test inputs, please run 'just setup-test'" fi + # Source the local secrets export file if available. -if [ -f "$ROOT_DIR/secrets-export.sh" ]; then - . "$ROOT_DIR/secrets-export.sh" +if [ -f "./secrets-export.sh" ]; then + . "./secrets-export.sh" fi PYTHON_IMPL=$(uv run python -c "import platform; print(platform.python_implementation())") @@ -54,7 +58,7 @@ uv run python -c 'import sys; print(sys.version)' PIP_QUIET=0 uv run ${UV_ARGS} --with pip pip list # Record the start time for a perf test. -if [ -n "${PERF_TEST:-}" ]; then +if [ -n "${TEST_PERF:-}" ]; then start_time=$(date +%s) fi @@ -75,7 +79,7 @@ fi echo "Running tests with $TEST_ARGS... done." # Handle perf test post actions. -if [ -n "${PERF_TEST:-}" ]; then +if [ -n "${TEST_PERF:-}" ]; then end_time=$(date +%s) elapsed_secs=$((end_time-start_time)) @@ -90,3 +94,5 @@ fi if [ -n "${COVERAGE:-}" ]; then rm -rf .pytest_cache fi + +popd diff --git a/.evergreen/scripts/bootstrap-mongo-orchestration.sh b/.evergreen/scripts/bootstrap-mongo-orchestration.sh index 1d2b145de8..5c6387d4b1 100755 --- a/.evergreen/scripts/bootstrap-mongo-orchestration.sh +++ b/.evergreen/scripts/bootstrap-mongo-orchestration.sh @@ -1,6 +1,7 @@ #!/bin/bash -set -o xtrace +set -eu + # Enable core dumps if enabled on the machine # Copied from https://github.com/mongodb/mongo/blob/master/etc/evergreen.yml @@ -29,7 +30,7 @@ if [ "$(uname -s)" = "Darwin" ]; then fi fi -if [ -n "${skip_crypt_shared}" ]; then +if [ -z "${TEST_CRYPT_SHARED:-}" ]; then export SKIP_CRYPT_SHARED=1 fi diff --git a/.evergreen/scripts/configure-env.sh b/.evergreen/scripts/configure-env.sh index 16212ad3b1..5515413562 100755 --- a/.evergreen/scripts/configure-env.sh +++ b/.evergreen/scripts/configure-env.sh @@ -55,24 +55,11 @@ export MONGODB_BINARIES="$DRIVERS_TOOLS/mongodb/bin" cat < "$SCRIPT_DIR"/env.sh export PROJECT_DIRECTORY="$PROJECT_DIRECTORY" export CURRENT_VERSION="$CURRENT_VERSION" -export SKIP_LEGACY_SHELL=1 export DRIVERS_TOOLS="$DRIVERS_TOOLS" export MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME" export MONGODB_BINARIES="$MONGODB_BINARIES" export DRIVERS_TOOLS_BINARIES="$DRIVERS_TOOLS_BINARIES" export PROJECT_DIRECTORY="$PROJECT_DIRECTORY" -export SETDEFAULTENCODING="${SETDEFAULTENCODING:-}" -export SKIP_CSOT_TESTS="${SKIP_CSOT_TESTS:-}" -export MONGODB_STARTED="${MONGODB_STARTED:-}" -export DISABLE_TEST_COMMANDS="${DISABLE_TEST_COMMANDS:-}" -export GREEN_FRAMEWORK="${GREEN_FRAMEWORK:-}" -export NO_EXT="${NO_EXT:-}" -export COVERAGE="${COVERAGE:-}" -export COMPRESSORS="${COMPRESSORS:-}" -export MONGODB_API_VERSION="${MONGODB_API_VERSION:-}" -export skip_crypt_shared="${skip_crypt_shared:-}" -export STORAGE_ENGINE="${STORAGE_ENGINE:-}" -export REQUIRE_API_VERSION="${REQUIRE_API_VERSION:-}" export skip_web_identity_auth_test="${skip_web_identity_auth_test:-}" export skip_ECS_auth_test="${skip_ECS_auth_test:-}" @@ -96,14 +83,8 @@ SKIP_LEGACY_SHELL=1 DRIVERS_TOOLS="$DRIVERS_TOOLS" MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME" MONGODB_BINARIES="$MONGODB_BINARIES" -TMPDIR="$MONGO_ORCHESTRATION_HOME/db" EOT -# Skip CSOT tests on non-linux platforms. -if [ "$(uname -s)" != "Linux" ]; then - echo "export SKIP_CSOT_TESTS=1" >> $SCRIPT_DIR/env.sh -fi - # Add these expansions to make it easier to call out tests scripts from the EVG yaml cat < expansion.yml DRIVERS_TOOLS: "$DRIVERS_TOOLS" diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py index 59c3c720bf..7d6108e9be 100644 --- a/.evergreen/scripts/generate_config.py +++ b/.evergreen/scripts/generate_config.py @@ -344,11 +344,11 @@ def create_encryption_variants() -> list[BuildVariant]: batchtime = BATCHTIME_WEEK def get_encryption_expansions(encryption): - expansions = dict(TEST_ENCRYPTION="true") + expansions = dict(TEST_NAME="encryption") if "crypt_shared" in encryption: expansions["TEST_CRYPT_SHARED"] = "true" if "PyOpenSSL" in encryption: - expansions["TEST_ENCRYPTION_PYOPENSSL"] = "true" + expansions["SUB_TEST_NAME"] = "pyopenssl" return expansions host = DEFAULT_HOST @@ -487,7 +487,7 @@ def create_enterprise_auth_variants(): def create_pyopenssl_variants(): base_name = "PyOpenSSL" batchtime = BATCHTIME_WEEK - expansions = dict(TEST_PYOPENSSL="true") + expansions = dict(TEST_NAME="pyopenssl") variants = [] for python in ALL_PYTHONS: @@ -588,7 +588,7 @@ def create_no_c_ext_variants(): variants = [] host = DEFAULT_HOST for python, topology in zip_cycle(CPYTHONS, TOPOLOGIES): - tasks = [f".{topology} .noauth .nossl .sync_async"] + tasks = [f".{topology} .noauth .nossl !.sync_async"] expansions = dict() handle_c_ext(C_EXTS[0], expansions) display_name = get_display_name("No C Ext", host, python=python) @@ -645,7 +645,7 @@ def create_disable_test_commands_variants(): def create_serverless_variants(): host = DEFAULT_HOST batchtime = BATCHTIME_WEEK - expansions = dict(TEST_SERVERLESS="true", AUTH="auth", SSL="ssl") + expansions = dict(TEST_NAME="serverless", AUTH="auth", SSL="ssl") tasks = ["serverless_task_group"] base_name = "Serverless" return [ @@ -811,17 +811,11 @@ def create_server_tasks(): SSL=ssl, ) bootstrap_func = FunctionCall(func="bootstrap mongo-orchestration", vars=bootstrap_vars) - test_suites = "" + test_vars = dict(AUTH=auth, SSL=ssl, SYNC=sync) if sync == "sync": - test_suites = "default" + test_vars["TEST_NAME"] = "default_sync" elif sync == "async": - test_suites = "default_async" - test_vars = dict( - AUTH=auth, - SSL=ssl, - SYNC=sync, - TEST_SUITES=test_suites, - ) + test_vars["TEST_NAME"] = "default_async" test_func = FunctionCall(func="run tests", vars=test_vars) tasks.append(EvgTask(name=name, tags=tags, commands=[bootstrap_func, test_func])) return tasks @@ -834,9 +828,10 @@ def create_load_balancer_tasks(): tags = ["load-balancer", auth, ssl] bootstrap_vars = dict(TOPOLOGY="sharded_cluster", AUTH=auth, SSL=ssl, LOAD_BALANCER="true") bootstrap_func = FunctionCall(func="bootstrap mongo-orchestration", vars=bootstrap_vars) - test_vars = dict(AUTH=auth, SSL=ssl, TEST_LOADBALANCER="true") + test_vars = dict(AUTH=auth, SSL=ssl, TEST_NAME="load_balancer") test_func = FunctionCall(func="run tests", vars=test_vars) tasks.append(EvgTask(name=name, tags=tags, commands=[bootstrap_func, test_func])) + return tasks diff --git a/.evergreen/scripts/run-atlas-tests.sh b/.evergreen/scripts/run-atlas-tests.sh index e5684b7cb4..5f9d447c3d 100755 --- a/.evergreen/scripts/run-atlas-tests.sh +++ b/.evergreen/scripts/run-atlas-tests.sh @@ -4,5 +4,5 @@ set +x set -o errexit bash "${DRIVERS_TOOLS}"/.evergreen/auth_aws/setup_secrets.sh drivers/atlas_connect -TEST_ATLAS=1 bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test +bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test atlas bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh test-eg diff --git a/.evergreen/scripts/run-enterprise-auth-tests.sh b/.evergreen/scripts/run-enterprise-auth-tests.sh index 6c300325d2..21a7fef301 100755 --- a/.evergreen/scripts/run-enterprise-auth-tests.sh +++ b/.evergreen/scripts/run-enterprise-auth-tests.sh @@ -5,5 +5,5 @@ set -eu set +x # Use the default python to bootstrap secrets. bash "${DRIVERS_TOOLS}"/.evergreen/secrets_handling/setup-secrets.sh drivers/enterprise_auth -TEST_ENTERPRISE_AUTH=1 AUTH=auth bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test +bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test enterprise_auth bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh test-eg diff --git a/.evergreen/scripts/run-gcpkms-fail-test.sh b/.evergreen/scripts/run-gcpkms-fail-test.sh index 8675c7c242..746ea4103a 100755 --- a/.evergreen/scripts/run-gcpkms-fail-test.sh +++ b/.evergreen/scripts/run-gcpkms-fail-test.sh @@ -2,5 +2,5 @@ set -eu HERE=$(dirname ${BASH_SOURCE:-$0}) . $HERE/env.sh -SUCCESS=false TEST_FLE_GCP_AUTO=1 bash $HERE/setup-tests.sh +./.evergreen/just.sh setup-test kms gcp-fail bash ./.evergreen/just.sh test-eg diff --git a/.evergreen/scripts/run-mockupdb-tests.sh b/.evergreen/scripts/run-mockupdb-tests.sh deleted file mode 100755 index 32594f05d3..0000000000 --- a/.evergreen/scripts/run-mockupdb-tests.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -set -o xtrace -export PYTHON_BINARY=${PYTHON_BINARY} -bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh test-mockupdb diff --git a/.evergreen/scripts/run-mongodb-aws-test.sh b/.evergreen/scripts/run-mongodb-aws-test.sh index 255f84f295..917482eaa2 100755 --- a/.evergreen/scripts/run-mongodb-aws-test.sh +++ b/.evergreen/scripts/run-mongodb-aws-test.sh @@ -24,5 +24,5 @@ echo "Running MONGODB-AWS authentication tests for $1" # Handle credentials and environment setup. . "$DRIVERS_TOOLS"/.evergreen/auth_aws/aws_setup.sh "$1" -TEST_AUTH_AWS=1 AUTH="auth" bash ./.evergreen/just.sh setup-test +bash ./.evergreen/just.sh setup-test auth_aws $1 bash ./.evergreen/just.sh test-eg diff --git a/.evergreen/scripts/run-ocsp-test.sh b/.evergreen/scripts/run-ocsp-test.sh index 2b9cbd476d..9c48867041 100755 --- a/.evergreen/scripts/run-ocsp-test.sh +++ b/.evergreen/scripts/run-ocsp-test.sh @@ -1,9 +1,12 @@ #!/bin/bash +set -eu -TEST_OCSP=1 \ -PYTHON_BINARY="${PYTHON_BINARY}" \ +pushd "${PROJECT_DIRECTORY}/.evergreen" +bash scripts/setup-dev-env.sh CA_FILE="${DRIVERS_TOOLS}/.evergreen/ocsp/${OCSP_ALGORITHM}/ca.pem" \ -OCSP_TLS_SHOULD_SUCCEED="${OCSP_TLS_SHOULD_SUCCEED}" \ -bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh setup-test -bash "${PROJECT_DIRECTORY}"/.evergreen/just.sh test-eg + OCSP_TLS_SHOULD_SUCCEED="${OCSP_TLS_SHOULD_SUCCEED}" \ + bash scripts/setup-tests.sh ocsp +bash run-tests.sh bash "${DRIVERS_TOOLS}"/.evergreen/ocsp/teardown.sh + +popd diff --git a/.evergreen/scripts/setup-dev-env.sh b/.evergreen/scripts/setup-dev-env.sh index b26dc3ae0e..04a377a2d2 100755 --- a/.evergreen/scripts/setup-dev-env.sh +++ b/.evergreen/scripts/setup-dev-env.sh @@ -3,7 +3,9 @@ set -eux HERE=$(dirname ${BASH_SOURCE:-$0}) -pushd "$(dirname "$(dirname $HERE)")" > /dev/null +HERE="$( cd -- "$HERE" > /dev/null 2>&1 && pwd )" +ROOT=$(dirname "$(dirname $HERE)") +pushd $ROOT > /dev/null # Source the env files to pick up common variables. if [ -f $HERE/env.sh ]; then @@ -26,7 +28,7 @@ fi # Ensure there is a python venv. if [ ! -d $BIN_DIR ]; then - . .evergreen/utils.sh + . $ROOT/.evergreen/utils.sh if [ -z "${PYTHON_BINARY:-}" ]; then PYTHON_BINARY=$(find_python3) @@ -49,3 +51,5 @@ echo "Setting up python environment... done." if [ -d .git ] && [ ! -f .git/hooks/pre-commit ]; then uv run --frozen pre-commit install fi + +popd > /dev/null diff --git a/.evergreen/scripts/setup-tests.sh b/.evergreen/scripts/setup-tests.sh index 330469711c..8e073dcec9 100755 --- a/.evergreen/scripts/setup-tests.sh +++ b/.evergreen/scripts/setup-tests.sh @@ -8,54 +8,15 @@ set -eu # COVERAGE If non-empty, run the test suite with coverage. # COMPRESSORS If non-empty, install appropriate compressor. # LIBMONGOCRYPT_URL The URL to download libmongocrypt. -# TEST_DATA_LAKE If non-empty, run data lake tests. -# TEST_ENCRYPTION If non-empty, run encryption tests. # TEST_CRYPT_SHARED If non-empty, install crypt_shared lib. -# TEST_SERVERLESS If non-empy, test on serverless. -# TEST_LOADBALANCER If non-empy, test load balancing. -# TEST_FLE_AZURE_AUTO If non-empy, test auto FLE on Azure -# TEST_FLE_GCP_AUTO If non-empy, test auto FLE on GCP -# TEST_PYOPENSSL If non-empy, test with PyOpenSSL -# TEST_ENTERPRISE_AUTH If non-empty, test with Enterprise Auth -# TEST_AUTH_AWS If non-empty, test AWS Auth Mechanism -# TEST_AUTH_OIDC If non-empty, test OIDC Auth Mechanism -# TEST_PERF If non-empty, run performance tests -# TEST_OCSP If non-empty, run OCSP tests -# TEST_ATLAS If non-empty, test Atlas connections -# TEST_INDEX_MANAGEMENT If non-empty, run index management tests -# TEST_ENCRYPTION_PYOPENSSL If non-empy, test encryption with PyOpenSSL -# PERF_TEST If non-empty, run the performance tests. +# MONGODB_API_VERSION The mongodb api version to use in tests. # MONGODB_URI If non-empty, use as the MONGODB_URI in tests. -# PYTHON_BINARY The python binary to use in tests. SCRIPT_DIR=$(dirname ${BASH_SOURCE:-$0}) -ROOT_DIR="$(dirname "$(dirname $SCRIPT_DIR)")" # Try to source the env file. if [ -f $SCRIPT_DIR/env.sh ]; then source $SCRIPT_DIR/env.sh fi -# Source serverless secrets if applicable. -if [ -n "${TEST_SERVERLESS:-}" ]; then - source $DRIVERS_TOOLS/.evergreen/serverless/secrets-export.sh -fi - -# Source atlas secrets if applicable. -if [ -n "${TEST_INDEX_MANAGEMENT:-}" ]; then - source $DRIVERS_TOOLS/.evergreen/atlas/secrets-export.sh -fi - -# Source ADL secrets if applicable. -if [ -n "${TEST_DATA_LAKE:-}" ]; then - source ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/secrets-export.sh -fi - -# Source local secrets if applicable. -if [ -f "$ROOT_DIR/secrets-export.sh" ]; then - source "$ROOT_DIR/secrets-export.sh" -fi - -. $ROOT_DIR/.evergreen/utils.sh -PYTHON=${PYTHON_BINARY:-$(find_python3)} -$PYTHON $SCRIPT_DIR/setup_tests.py +uv run $SCRIPT_DIR/setup_tests.py "$@" diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py index 07693d1e99..96c138b4ae 100644 --- a/.evergreen/scripts/setup_tests.py +++ b/.evergreen/scripts/setup_tests.py @@ -1,5 +1,6 @@ from __future__ import annotations +import argparse import base64 import dataclasses import io @@ -20,64 +21,52 @@ ROOT = HERE.parent.parent ENV_FILE = HERE / "test-env.sh" DRIVERS_TOOLS = os.environ.get("DRIVERS_TOOLS", "").replace(os.sep, "/") -PLATFORM = "windows" if os.name == "nt" else sys.platform +PLATFORM = "windows" if os.name == "nt" else sys.platform.lower() -logging.basicConfig(level=logging.INFO) LOGGER = logging.getLogger(__name__) - -EXPECTED_VARS = [ - "TEST_ENCRYPTION", - "TEST_ENCRYPTION_PYOPENSSL", - "TEST_CRYPT_SHARED", - "TEST_PYOPENSSL", - "TEST_LOAD_BALANCER", - "TEST_SERVERLESS", - "TEST_INDEX_MANAGEMENT", - "TEST_ENTERPRISE_AUTH", - "TEST_FLE_AZURE_AUTO", - "TEST_FLE_GCP_AUTO", - "TEST_LOADBALANCER", - "TEST_DATA_LAKE", - "TEST_ATLAS", - "TEST_OCSP", - "TEST_AUTH_AWS", - "TEST_AUTH_OIDC", - "COMPRESSORS", - "MONGODB_URI", - "PERF_TEST", - "GREEN_FRAMEWORK", - "PYTHON_BINARY", - "LIBMONGOCRYPT_URL", -] - -# Handle the test suite based on the presence of env variables. -TEST_SUITE_MAP = dict( - TEST_DATA_LAKE="data_lake", - TEST_AUTH_OIDC="auth_oidc", - TEST_INDEX_MANAGEMENT="index_management", - TEST_ENTERPRISE_AUTH="auth", - TEST_LOADBALANCER="load_balancer", - TEST_ENCRYPTION="encryption", - TEST_FLE_AZURE_AUTO="csfle", - TEST_FLE_GCP_AUTO="csfle", - TEST_ATLAS="atlas", - TEST_OCSP="ocsp", - TEST_AUTH_AWS="auth_aws", - PERF_TEST="perf", -) - -# Handle extras based on the presence of env variables. -EXTRAS_MAP = dict( - TEST_AUTH_OIDC="aws", - TEST_AUTH_AWS="aws", - TEST_OCSP="ocsp", - TEST_PYOPENSSL="ocsp", - TEST_ENTERPRISE_AUTH="gssapi", - TEST_ENCRYPTION="encryption", - TEST_FLE_AZURE_AUTO="encryption", - TEST_FLE_GCP_AUTO="encryption", - TEST_ENCRYPTION_PYOPENSSL="ocsp", -) +logging.basicConfig(level=logging.INFO, format="%(levelname)-8s %(message)s") + +# Passthrough environment variables. +PASS_THROUGH_ENV = ["GREEN_FRAMEWORK", "NO_EXT", "MONGODB_API_VERSION"] + +# Map the test name to a test suite. +TEST_SUITE_MAP = { + "atlas": "atlas", + "auth_aws": "auth_aws", + "auth_oidc": "auth_oidc", + "data_lake": "data_lake", + "default": "", + "default_async": "default_async", + "default_sync": "default", + "encryption": "encryption", + "enterprise_auth": "auth", + "index_management": "index_management", + "kms": "csfle", + "load_balancer": "load_balancer", + "mockupdb": "mockupdb", + "pyopenssl": "", + "ocsp": "ocsp", + "perf": "perf", + "serverless": "", +} + +# Tests that require a sub test suite. +SUB_TEST_REQUIRED = ["auth_aws", "kms"] + +# Map the test name to test extra. +EXTRAS_MAP = { + "auth_aws": "aws", + "auth_oidc": "aws", + "encryption": "encryption", + "enterprise_auth": "gssapi", + "kms": "encryption", + "ocsp": "ocsp", + "pyopenssl": "ocsp", +} + + +# Map the test name to test group. +GROUP_MAP = dict(mockupdb="mockupdb", perf="perf") @dataclasses.dataclass @@ -87,7 +76,7 @@ class Distro: arch: str -def write_env(name: str, value: Any) -> None: +def write_env(name: str, value: Any = "1") -> None: with ENV_FILE.open("a", newline="\n") as fid: # Remove any existing quote chars. value = str(value).replace('"', "") @@ -105,6 +94,43 @@ def run_command(cmd: str) -> None: LOGGER.info("Running command %s... done.", cmd) +def read_env(path: Path | str) -> dict[str, Any]: + config = dict() + with Path(path).open() as fid: + for line in fid.readlines(): + if "=" not in line: + continue + name, _, value = line.strip().partition("=") + if value.startswith(('"', "'")): + value = value[1:-1] + name = name.replace("export ", "") + config[name] = value + return config + + +def get_options(): + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter + ) + parser.add_argument("test_name", choices=sorted(TEST_SUITE_MAP), nargs="?", default="default") + parser.add_argument("sub_test_name", nargs="?") + parser.add_argument( + "--verbose", "-v", action="store_true", help="Whether to log at the DEBUG level" + ) + parser.add_argument( + "--quiet", "-q", action="store_true", help="Whether to log at the WARNING level" + ) + parser.add_argument("--auth", action="store_true", help="Whether to add authentication") + parser.add_argument("--ssl", action="store_true", help="Whether to add TLS configuration") + # Get the options. + opts = parser.parse_args() + if opts.verbose: + LOGGER.setLevel(logging.DEBUG) + elif opts.quiet: + LOGGER.setLevel(logging.WARNING) + return opts + + def get_distro() -> Distro: name = "" version_id = "" @@ -169,55 +195,80 @@ def setup_libmongocrypt(): def handle_test_env() -> None: + opts = get_options() + test_name = opts.test_name + sub_test_name = opts.sub_test_name + if test_name in SUB_TEST_REQUIRED and not sub_test_name: + raise ValueError(f"Test '{test_name}' requires a sub_test_name") AUTH = os.environ.get("AUTH", "noauth") + if opts.auth or "auth" in test_name: + AUTH = "auth" + # 'auth_aws ecs' shouldn't have extra auth set. + if test_name == "auth_aws" and sub_test_name == "ecs": + AUTH = "noauth" SSL = os.environ.get("SSL", "nossl") - TEST_SUITES = os.environ.get("TEST_SUITES", "") + if opts.ssl: + SSL = "ssl" TEST_ARGS = "" + # Start compiling the args we'll pass to uv. # Run in an isolated environment so as not to pollute the base venv. UV_ARGS = ["--isolated --extra test"] - # Save variables in EXPECTED_VARS that have values. + test_title = test_name + if sub_test_name: + test_title += f" {sub_test_name}" + LOGGER.info(f"Setting up '{test_title}' with {AUTH=} and {SSL=}...") + + # Create the test env file with the initial set of values. with ENV_FILE.open("w", newline="\n") as fid: fid.write("#!/usr/bin/env bash\n") fid.write("set +x\n") - fid.write(f"export AUTH={AUTH}\n") - fid.write(f"export SSL={SSL}\n") - for var in EXPECTED_VARS: - value = os.environ.get(var, "") - # Remove any existing quote chars. - value = value.replace('"', "") - if value: - fid.write(f'export {var}="{value}"\n') ENV_FILE.chmod(ENV_FILE.stat().st_mode | stat.S_IEXEC) - for env_var, extra in EXTRAS_MAP.items(): - if env_var in os.environ: - UV_ARGS.append(f"--extra {extra}") + write_env("AUTH", AUTH) + write_env("SSL", SSL) + + # Skip CSOT tests on non-linux platforms. + if PLATFORM != "linux": + write_env("SKIP_CSOT_TESTS") - for env_var, suite in TEST_SUITE_MAP.items(): - if TEST_SUITES: - break - if env_var in os.environ: - TEST_SUITES = suite + # Set an environment variable for the test name and sub test name. + write_env(f"TEST_{test_name.upper()}") + write_env("SUB_TEST_NAME", sub_test_name) + + # Handle pass through env vars. + for var in PASS_THROUGH_ENV: + if is_set(var): + write_env(var, os.environ[var]) + + if extra := EXTRAS_MAP.get(test_name, ""): + UV_ARGS.append(f"--extra {extra}") + + if group := GROUP_MAP.get(test_name, ""): + UV_ARGS.append(f"--group {group}") if AUTH != "noauth": - if is_set("TEST_DATA_LAKE"): - DB_USER = os.environ["ADL_USERNAME"] - DB_PASSWORD = os.environ["ADL_PASSWORD"] - elif is_set("TEST_SERVERLESS"): - DB_USER = os.environ("SERVERLESS_ATLAS_USER") - DB_PASSWORD = os.environ("SERVERLESS_ATLAS_PASSWORD") - write_env("MONGODB_URI", os.environ("SERVERLESS_URI")) - write_env("SINGLE_MONGOS_LB_URI", os.environ("SERVERLESS_URI")) - write_env("MULTI_MONGOS_LB_URI", os.environ("SERVERLESS_URI")) - elif is_set("TEST_AUTH_OIDC"): + if test_name == "data_lake": + config = read_env(f"{DRIVERS_TOOLS}/.evergreen/atlas_data_lake/secrets-export.sh") + DB_USER = config["ADL_USERNAME"] + DB_PASSWORD = config["ADL_PASSWORD"] + elif test_name == "serverless": + config = read_env(f"{DRIVERS_TOOLS}/.evergreen/serverless/secrets-export.sh") + DB_USER = config["SERVERLESS_ATLAS_USER"] + DB_PASSWORD = config["SERVERLESS_ATLAS_PASSWORD"] + write_env("MONGODB_URI", config["SERVERLESS_URI"]) + write_env("SINGLE_MONGOS_LB_URI", config["SERVERLESS_URI"]) + write_env("MULTI_MONGOS_LB_URI", config["SERVERLESS_URI"]) + elif test_name == "auth_oidc": DB_USER = os.environ["OIDC_ADMIN_USER"] DB_PASSWORD = os.environ["OIDC_ADMIN_PWD"] write_env("DB_IP", os.environ["MONGODB_URI"]) - elif is_set("TEST_INDEX_MANAGEMENT"): - DB_USER = os.environ["DRIVERS_ATLAS_LAMBDA_USER"] - DB_PASSWORD = os.environ["DRIVERS_ATLAS_LAMBDA_PASSWORD"] + elif test_name == "index_management": + config = read_env(f"{DRIVERS_TOOLS}/.evergreen/atlas/secrets-export.sh") + DB_USER = config["DRIVERS_ATLAS_LAMBDA_USER"] + DB_PASSWORD = config["DRIVERS_ATLAS_LAMBDA_PASSWORD"] + write_env("MONGODB_URI", config["MONGODB_URI"]) else: DB_USER = "bob" DB_PASSWORD = "pwd123" # noqa: S105 @@ -225,16 +276,17 @@ def handle_test_env() -> None: write_env("DB_PASSWORD", DB_PASSWORD) LOGGER.info("Added auth, DB_USER: %s", DB_USER) - if is_set("MONGODB_STARTED"): + if is_set("MONGODB_URI"): write_env("PYMONGO_MUST_CONNECT", "true") if is_set("DISABLE_TEST_COMMANDS"): write_env("PYMONGO_DISABLE_TEST_COMMANDS", "1") - if is_set("TEST_ENTERPRISE_AUTH"): + if test_name == "enterprise_auth": + config = read_env(f"{ROOT}/secrets-export.sh") if PLATFORM == "windows": LOGGER.info("Setting GSSAPI_PASS") - write_env("GSSAPI_PASS", os.environ["SASL_PASS"]) + write_env("GSSAPI_PASS", config["SASL_PASS"]) write_env("GSSAPI_CANONICALIZE", "true") else: # BUILD-3830 @@ -242,23 +294,22 @@ def handle_test_env() -> None: krb_conf.touch() write_env("KRB5_CONFIG", krb_conf) LOGGER.info("Writing keytab") - keytab = base64.b64decode(os.environ["KEYTAB_BASE64"]) + keytab = base64.b64decode(config["KEYTAB_BASE64"]) keytab_file = ROOT / ".evergreen/drivers.keytab" with keytab_file.open("wb") as fid: fid.write(keytab) - principal = os.environ["PRINCIPAL"] + principal = config["PRINCIPAL"] LOGGER.info("Running kinit") os.environ["KRB5_CONFIG"] = str(krb_conf) cmd = f"kinit -k -t {keytab_file} -p {principal}" run_command(cmd) LOGGER.info("Setting GSSAPI variables") - write_env("GSSAPI_HOST", os.environ["SASL_HOST"]) - write_env("GSSAPI_PORT", os.environ["SASL_PORT"]) - write_env("GSSAPI_PRINCIPAL", os.environ["PRINCIPAL"]) + write_env("GSSAPI_HOST", config["SASL_HOST"]) + write_env("GSSAPI_PORT", config["SASL_PORT"]) + write_env("GSSAPI_PRINCIPAL", config["PRINCIPAL"]) - if is_set("TEST_LOADBALANCER"): - write_env("LOAD_BALANCER", "1") + if test_name == "load_balancer": SINGLE_MONGOS_LB_URI = os.environ.get( "SINGLE_MONGOS_LB_URI", "mongodb://127.0.0.1:8000/?loadBalanced=true" ) @@ -285,9 +336,9 @@ def handle_test_env() -> None: if compressors == "snappy": UV_ARGS.append("--extra snappy") elif compressors == "zstd": - UV_ARGS.append("--extra zstandard") + UV_ARGS.append("--extra zstd") - if is_set("TEST_ENCRYPTION") or is_set("TEST_FLE_AZURE_AUTO") or is_set("TEST_FLE_GCP_AUTO"): + if test_name in ["encryption", "kms"]: # Check for libmongocrypt download. if not (ROOT / "libmongocrypt").exists(): setup_libmongocrypt() @@ -311,14 +362,18 @@ def handle_test_env() -> None: write_env("PYMONGOCRYPT_LIB", PYMONGOCRYPT_LIB.as_posix()) # PATH is updated by configure-env.sh for access to mongocryptd. - if is_set("TEST_ENCRYPTION"): + if test_name == "encryption": if not DRIVERS_TOOLS: raise RuntimeError("Missing DRIVERS_TOOLS") run_command(f"bash {DRIVERS_TOOLS}/.evergreen/csfle/setup-secrets.sh") run_command(f"bash {DRIVERS_TOOLS}/.evergreen/csfle/start-servers.sh") + if sub_test_name == "pyopenssl": + UV_ARGS.append("--extra ocsp") + if is_set("TEST_CRYPT_SHARED"): - CRYPT_SHARED_DIR = Path(os.environ["CRYPT_SHARED_LIB_PATH"]).parent.as_posix() + config = read_env(f"{DRIVERS_TOOLS}/mo-expansion.sh") + CRYPT_SHARED_DIR = Path(config["CRYPT_SHARED_LIB_PATH"]).parent.as_posix() LOGGER.info("Using crypt_shared_dir %s", CRYPT_SHARED_DIR) if PLATFORM == "windows": write_env("PATH", f"{CRYPT_SHARED_DIR}:$PATH") @@ -329,21 +384,25 @@ def handle_test_env() -> None: ) write_env("LD_LIBRARY_PATH", f"{CRYPT_SHARED_DIR}:${{LD_LIBRARY_PATH:-}}") - if is_set("TEST_FLE_AZURE_AUTO") or is_set("TEST_FLE_GCP_AUTO"): - if "SUCCESS" not in os.environ: - raise RuntimeError("Must define SUCCESS") + if test_name == "kms": + if sub_test_name.startswith("azure"): + write_env("TEST_FLE_AZURE_AUTO") + else: + write_env("TEST_FLE_GCP_AUTO") - write_env("SUCCESS", os.environ["SUCCESS"]) + write_env("SUCCESS", "fail" not in sub_test_name) MONGODB_URI = os.environ.get("MONGODB_URI", "") if "@" in MONGODB_URI: raise RuntimeError("MONGODB_URI unexpectedly contains user credentials in FLE test!") - if is_set("TEST_OCSP"): + if test_name == "ocsp": write_env("CA_FILE", os.environ["CA_FILE"]) write_env("OCSP_TLS_SHOULD_SUCCEED", os.environ["OCSP_TLS_SHOULD_SUCCEED"]) - if is_set("PERF_TEST"): - UV_ARGS.append("--group perf") + if test_name == "auth_aws": + write_env("MONGODB_URI", os.environ["MONGODB_URI"]) + + if test_name == "perf": # PYTHON-4769 Run perf_test.py directly otherwise pytest's test collection negatively # affects the benchmark results. TEST_ARGS = f"test/performance/perf_test.py {TEST_ARGS}" @@ -355,6 +414,7 @@ def handle_test_env() -> None: # coverage >=5 is needed for relative_files=true. UV_ARGS.append("--group coverage") TEST_ARGS = f"{TEST_ARGS} --cov" + write_env("COVERAGE") if is_set("GREEN_FRAMEWORK"): framework = os.environ["GREEN_FRAMEWORK"] @@ -364,12 +424,15 @@ def handle_test_env() -> None: # Use --capture=tee-sys so pytest prints test output inline: # https://docs.pytest.org/en/stable/how-to/capture-stdout-stderr.html TEST_ARGS = f"-v --capture=tee-sys --durations=5 {TEST_ARGS}" - if TEST_SUITES: - TEST_ARGS = f"-m {TEST_SUITES} {TEST_ARGS}" + TEST_SUITE = TEST_SUITE_MAP[test_name] + if TEST_SUITE: + TEST_ARGS = f"-m {TEST_SUITE} {TEST_ARGS}" write_env("TEST_ARGS", TEST_ARGS) write_env("UV_ARGS", " ".join(UV_ARGS)) + LOGGER.info(f"Setting up test '{test_title}' with {AUTH=} and {SSL=}... done.") + if __name__ == "__main__": handle_test_env() diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ce5bebf181..0b8b77fc6e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -212,7 +212,7 @@ the pages will re-render and the browser will automatically refresh. - Start the servers using `LOAD_BALANCER=true TOPOLOGY=sharded_cluster AUTH=noauth SSL=nossl MONGODB_VERSION=6.0 DRIVERS_TOOLS=$PWD/drivers-evergreen-tools MONGO_ORCHESTRATION_HOME=$PWD/drivers-evergreen-tools/.evergreen/orchestration $PWD/drivers-evergreen-tools/.evergreen/run-orchestration.sh`. - Set up the test using: - `MONGODB_URI='mongodb://localhost:27017,localhost:27018/' TEST_LOADBALANCER=1 just setup-test`. + `MONGODB_URI='mongodb://localhost:27017,localhost:27018/' just setup-test load-balancer`. - Run the tests from the `pymongo` checkout directory using: `just test-eg`. @@ -220,7 +220,7 @@ the pages will re-render and the browser will automatically refresh. - Clone `drivers-evergreen-tools`: `git clone git@github.com:mongodb-labs/drivers-evergreen-tools.git`. - Run `export DRIVERS_TOOLS=$PWD/drivers-evergreen-tools` -- Run `TEST_ENCRYPTION=1 AWS_PROFILE= just setup-test` after setting up your AWS profile with `aws configure sso`. +- Run `AWS_PROFILE= just setup-test encryption` after setting up your AWS profile with `aws configure sso`. - Run the tests with `just test-eg`. - When done, run `just teardown-test` to clean up. diff --git a/justfile b/justfile index 3840484bc5..5de578ecc7 100644 --- a/justfile +++ b/justfile @@ -60,17 +60,13 @@ lint-manual: test *args="-v --durations=5 --maxfail=10": {{uv_run}} --extra test pytest {{args}} -[group('test')] -test-mockupdb *args: - {{uv_run}} -v --extra test --group mockupdb pytest -m mockupdb {{args}} - [group('test')] test-eg *args: bash ./.evergreen/run-tests.sh {{args}} [group('test')] -setup-test: - bash .evergreen/scripts/setup-tests.sh +setup-test *args="": + bash .evergreen/scripts/setup-tests.sh {{args}} [group('test')] teardown-test: diff --git a/test/asynchronous/test_client_context.py b/test/asynchronous/test_client_context.py index 6a195eb6b8..afca1c0b26 100644 --- a/test/asynchronous/test_client_context.py +++ b/test/asynchronous/test_client_context.py @@ -47,20 +47,14 @@ def test_serverless(self): ) def test_enableTestCommands_is_disabled(self): - if not os.environ.get("PYMONGO_DISABLE_TEST_COMMANDS"): - raise SkipTest("PYMONGO_DISABLE_TEST_COMMANDS is not set") + if not os.environ.get("DISABLE_TEST_COMMANDS"): + raise SkipTest("DISABLE_TEST_COMMANDS is not set") self.assertFalse( async_client_context.test_commands_enabled, - "enableTestCommands must be disabled when PYMONGO_DISABLE_TEST_COMMANDS is set.", + "enableTestCommands must be disabled when DISABLE_TEST_COMMANDS is set.", ) - def test_setdefaultencoding_worked(self): - if not os.environ.get("SETDEFAULTENCODING"): - raise SkipTest("SETDEFAULTENCODING is not set") - - self.assertEqual(sys.getdefaultencoding(), os.environ["SETDEFAULTENCODING"]) - def test_free_threading_is_enabled(self): if "free-threading build" not in sys.version: raise SkipTest("this test requires the Python free-threading build") diff --git a/test/asynchronous/test_data_lake.py b/test/asynchronous/test_data_lake.py index 0b259fb0d0..e67782ad3f 100644 --- a/test/asynchronous/test_data_lake.py +++ b/test/asynchronous/test_data_lake.py @@ -38,10 +38,6 @@ class TestDataLakeMustConnect(AsyncUnitTest): async def test_connected_to_data_lake(self): - data_lake = os.environ.get("TEST_DATA_LAKE") - if not data_lake: - self.skipTest("TEST_DATA_LAKE is not set") - self.assertTrue( async_client_context.is_data_lake and async_client_context.connected, "client context must be connected to data lake when DATA_LAKE is set. Failed attempts:\n{}".format( diff --git a/test/asynchronous/test_index_management.py b/test/asynchronous/test_index_management.py index 2920c48b2f..c155047089 100644 --- a/test/asynchronous/test_index_management.py +++ b/test/asynchronous/test_index_management.py @@ -51,8 +51,6 @@ class TestCreateSearchIndex(AsyncIntegrationTest): async def test_inputs(self): - if not os.environ.get("TEST_INDEX_MANAGEMENT"): - raise unittest.SkipTest("Skipping index management tests") listener = AllowListEventListener("createSearchIndexes") client = self.simple_client(event_listeners=[listener]) coll = client.test.test @@ -90,8 +88,6 @@ class SearchIndexIntegrationBase(AsyncPyMongoTestCase): @classmethod def setUpClass(cls) -> None: - if not os.environ.get("TEST_INDEX_MANAGEMENT"): - raise unittest.SkipTest("Skipping index management tests") cls.url = os.environ.get("MONGODB_URI") cls.username = os.environ["DB_USER"] cls.password = os.environ["DB_PASSWORD"] diff --git a/test/test_client_context.py b/test/test_client_context.py index e807ac5f5f..ef3633a8b0 100644 --- a/test/test_client_context.py +++ b/test/test_client_context.py @@ -47,20 +47,14 @@ def test_serverless(self): ) def test_enableTestCommands_is_disabled(self): - if not os.environ.get("PYMONGO_DISABLE_TEST_COMMANDS"): - raise SkipTest("PYMONGO_DISABLE_TEST_COMMANDS is not set") + if not os.environ.get("DISABLE_TEST_COMMANDS"): + raise SkipTest("DISABLE_TEST_COMMANDS is not set") self.assertFalse( client_context.test_commands_enabled, - "enableTestCommands must be disabled when PYMONGO_DISABLE_TEST_COMMANDS is set.", + "enableTestCommands must be disabled when DISABLE_TEST_COMMANDS is set.", ) - def test_setdefaultencoding_worked(self): - if not os.environ.get("SETDEFAULTENCODING"): - raise SkipTest("SETDEFAULTENCODING is not set") - - self.assertEqual(sys.getdefaultencoding(), os.environ["SETDEFAULTENCODING"]) - def test_free_threading_is_enabled(self): if "free-threading build" not in sys.version: raise SkipTest("this test requires the Python free-threading build") diff --git a/test/test_data_lake.py b/test/test_data_lake.py index 797ef85000..c8b76eb1ca 100644 --- a/test/test_data_lake.py +++ b/test/test_data_lake.py @@ -38,10 +38,6 @@ class TestDataLakeMustConnect(UnitTest): def test_connected_to_data_lake(self): - data_lake = os.environ.get("TEST_DATA_LAKE") - if not data_lake: - self.skipTest("TEST_DATA_LAKE is not set") - self.assertTrue( client_context.is_data_lake and client_context.connected, "client context must be connected to data lake when DATA_LAKE is set. Failed attempts:\n{}".format( diff --git a/test/test_index_management.py b/test/test_index_management.py index 5135e43f1f..e4b931cf00 100644 --- a/test/test_index_management.py +++ b/test/test_index_management.py @@ -51,8 +51,6 @@ class TestCreateSearchIndex(IntegrationTest): def test_inputs(self): - if not os.environ.get("TEST_INDEX_MANAGEMENT"): - raise unittest.SkipTest("Skipping index management tests") listener = AllowListEventListener("createSearchIndexes") client = self.simple_client(event_listeners=[listener]) coll = client.test.test @@ -90,8 +88,6 @@ class SearchIndexIntegrationBase(PyMongoTestCase): @classmethod def setUpClass(cls) -> None: - if not os.environ.get("TEST_INDEX_MANAGEMENT"): - raise unittest.SkipTest("Skipping index management tests") cls.url = os.environ.get("MONGODB_URI") cls.username = os.environ["DB_USER"] cls.password = os.environ["DB_PASSWORD"]