This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 1b4307bed4 Better parallellise Other/Operator tests (#35002)
1b4307bed4 is described below
commit 1b4307bed47871f5f33614aba1b42331ebc5fc46
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Oct 18 12:54:16 2023 +0200
Better parallellise Other/Operator tests (#35002)
The "test/operators" are one of the longest tests of ours - mainly
because of a lot of Python virtualenv operators taking a lot of
time to create and tear-down virtualenvs. They contributed a lot to
the "Other" category making it one that run for the longest time.
In order to improve usage of parallel cores, we separate operator tests
to a new "Operators" test typ and let them run in parallel to Other
tests - this should help in speeding up the tests overall by around
3-4 minutes on self-hosted runners.
---
Dockerfile.ci | 13 ++--
dev/breeze/SELECTIVE_CHECKS.md | 6 +-
.../airflow_breeze/commands/testing_commands.py | 2 +-
dev/breeze/src/airflow_breeze/global_constants.py | 1 +
.../src/airflow_breeze/utils/selective_checks.py | 9 ++-
dev/breeze/tests/test_selective_checks.py | 85 ++++++++++++++--------
images/breeze/output-commands-hash.txt | 4 +-
images/breeze/output_testing_tests.svg | 8 +-
scripts/docker/entrypoint_ci.sh | 13 ++--
9 files changed, 89 insertions(+), 52 deletions(-)
diff --git a/Dockerfile.ci b/Dockerfile.ci
index ec35aab734..fe7c2cd7d6 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -1090,8 +1090,8 @@ if [[ ${REMOVE_ARM_PACKAGES:="false"} == "true" ]]; then
python "${IN_CONTAINER_DIR}/remove_arm_packages.py"
fi
-declare -a SELECTED_TESTS CLI_TESTS API_TESTS PROVIDERS_TESTS CORE_TESTS
WWW_TESTS \
- ALL_TESTS ALL_PRESELECTED_TESTS ALL_OTHER_TESTS
+declare -a SELECTED_TESTS CLI_TESTS API_TESTS OPERATORS_TESTS ALWAYS_TESTS
PROVIDERS_TESTS \
+ CORE_TESTS WWW_TESTS ALL_TESTS ALL_PRESELECTED_TESTS ALL_OTHER_TESTS
function find_all_other_tests() {
local all_tests_dirs
@@ -1120,6 +1120,7 @@ else
API_TESTS=("tests/api_experimental" "tests/api_connexion"
"tests/api_internal")
PROVIDERS_TESTS=("tests/providers")
ALWAYS_TESTS=("tests/always")
+ OPERATORS_TESTS=("tests/operators")
CORE_TESTS=(
"tests/core"
"tests/executors"
@@ -1142,6 +1143,7 @@ else
"${PROVIDERS_TESTS[@]}"
"${CORE_TESTS[@]}"
"${ALWAYS_TESTS[@]}"
+ "${OPERATORS_TESTS[@]}"
"${WWW_TESTS[@]}"
"${SYSTEM_TESTS[@]}"
)
@@ -1163,6 +1165,8 @@ else
SELECTED_TESTS=("${CORE_TESTS[@]}")
elif [[ ${TEST_TYPE:=""} == "Always" ]]; then
SELECTED_TESTS=("${ALWAYS_TESTS[@]}")
+ elif [[ ${TEST_TYPE:=""} == "Operators" ]]; then
+ SELECTED_TESTS=("${OPERATORS_TESTS[@]}")
elif [[ ${TEST_TYPE:=""} == "WWW" ]]; then
SELECTED_TESTS=("${WWW_TESTS[@]}")
elif [[ ${TEST_TYPE:=""} == "Helm" ]]; then
@@ -1226,8 +1230,8 @@ else
exit 1
fi
fi
-readonly SELECTED_TESTS CLI_TESTS API_TESTS PROVIDERS_TESTS CORE_TESTS
WWW_TESTS \
- ALL_TESTS ALL_PRESELECTED_TESTS
+readonly SELECTED_TESTS CLI_TESTS API_TESTS OPERATORS_TESTS ALWAYS_TESTS
PROVIDERS_TESTS \
+ CORE_TESTS WWW_TESTS ALL_TESTS ALL_PRESELECTED_TESTS
if [[ ${TEST_TYPE:=""} == "Long" ]]; then
EXTRA_PYTEST_ARGS+=(
@@ -1256,7 +1260,6 @@ echo "Running tests ${SELECTED_TESTS[*]}"
echo
ARGS=("${EXTRA_PYTEST_ARGS[@]}" "${SELECTED_TESTS[@]}")
-
if [[ ${RUN_SYSTEM_TESTS:="false"} == "true" ]]; then
"${IN_CONTAINER_DIR}/run_system_tests.sh" "${ARGS[@]}"
else
diff --git a/dev/breeze/SELECTIVE_CHECKS.md b/dev/breeze/SELECTIVE_CHECKS.md
index d6e525485a..0806466a81 100644
--- a/dev/breeze/SELECTIVE_CHECKS.md
+++ b/dev/breeze/SELECTIVE_CHECKS.md
@@ -52,11 +52,13 @@ We have the following unit test types that can be
selectively disabled/enabled b
content of the incoming PR:
* Always - those are tests that should be always executed (always folder)
+* Operators - tests for the operators (operators folder)
* Core - for the core Airflow functionality (core folder)
* API - Tests for the Airflow API (api and api_connexion folders)
* CLI - Tests for the Airflow CLI (cli folder)
* WWW - Tests for the Airflow webserver (www folder)
* Providers - Tests for all Providers of Airflow (providers folder)
+* Other - all other tests remaining after the above tests are selected
We also have several special kinds of tests that are not separated by
packages, but they are marked with
pytest markers. They can be found in any of those packages and they can be
selected by the appropriate
@@ -95,8 +97,8 @@ The logic implements the following rules:
* if there are any changes to "common" provider code not belonging to any
provider (usually system tests
or tests), then tests for all Providers are run
* The specific unit test type is enabled only if changed files match the
expected patterns for each type
- (`API`, `CLI`, `WWW`, `Providers`). The `Always` test type is added always
if any unit tests are run.
- `Providers` tests are removed if current branch is different than `main`
+ (`API`, `CLI`, `WWW`, `Providers`, `Operators`). The `Always` test type is
added always if any unit
+ tests are run. `Providers` tests are removed if current branch is different
than `main`
* If there are no files left in sources after matching the test types and
Kubernetes files,
then apparently some Core/Other files have been changed. This automatically
adds all test
types to execute. This is done because changes in core might impact all the
other test types.
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index b5d09c944b..026ce7482c 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -128,7 +128,7 @@ def docker_compose_tests(
TEST_PROGRESS_REGEXP = r"tests/.*|.*=====.*"
-PERCENT_TEST_PROGRESS_REGEXP = r"^tests/.*\[[ \d%]*\].*"
+PERCENT_TEST_PROGRESS_REGEXP = r"^tests/.*\[[ \d%]*\].*|^\..*\[[ \d%]*\].*"
def _run_test(
diff --git a/dev/breeze/src/airflow_breeze/global_constants.py
b/dev/breeze/src/airflow_breeze/global_constants.py
index 388c4ee051..187cf5ace8 100644
--- a/dev/breeze/src/airflow_breeze/global_constants.py
+++ b/dev/breeze/src/airflow_breeze/global_constants.py
@@ -114,6 +114,7 @@ class SelectiveUnitTestTypes(Enum):
CLI = "CLI"
CORE = "Core"
OTHER = "Other"
+ OPERATORS = "Operators"
PROVIDERS = "Providers"
WWW = "WWW"
diff --git a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
index 8251f3f4de..cb79df3737 100644
--- a/dev/breeze/src/airflow_breeze/utils/selective_checks.py
+++ b/dev/breeze/src/airflow_breeze/utils/selective_checks.py
@@ -187,6 +187,10 @@ TEST_TYPE_MATCHES = HashableDict(
r"^airflow/cli",
r"^tests/cli",
],
+ SelectiveUnitTestTypes.OPERATORS: [
+ r"^airflow/operators",
+ r"^tests/operators",
+ ],
SelectiveUnitTestTypes.PROVIDERS: [
r"^airflow/providers/",
r"^tests/system/providers/",
@@ -584,6 +588,9 @@ class SelectiveChecks:
matched_files.update(
self._select_test_type_if_matching(candidate_test_types,
SelectiveUnitTestTypes.CLI)
)
+ matched_files.update(
+ self._select_test_type_if_matching(candidate_test_types,
SelectiveUnitTestTypes.OPERATORS)
+ )
matched_files.update(
self._select_test_type_if_matching(candidate_test_types,
SelectiveUnitTestTypes.API)
)
@@ -670,7 +677,7 @@ class SelectiveChecks:
self._extract_long_provider_tests(current_test_types)
# this should be hard-coded as we want to have very specific sequence
of tests
- sorting_order = ["Core", "Providers[-amazon,google]", "Other",
"Providers[amazon]", "WWW"]
+ sorting_order = ["Operators", "Core", "Providers[-amazon,google]",
"Providers[amazon]", "WWW"]
sort_key = {item: i for i, item in enumerate(sorting_order)}
# Put the test types in the order we want them to run
return " ".join(sorted(current_test_types, key=lambda x:
(sort_key.get(x, len(sorting_order)), x)))
diff --git a/dev/breeze/tests/test_selective_checks.py
b/dev/breeze/tests/test_selective_checks.py
index 2868c203cb..0eb61aa5e0 100644
--- a/dev/breeze/tests/test_selective_checks.py
+++ b/dev/breeze/tests/test_selective_checks.py
@@ -91,6 +91,26 @@ def assert_outputs_are_printed(expected_outputs: dict[str,
str], stderr: str):
id="Only API tests and DOCS should run",
)
),
+ (
+ pytest.param(
+ ("airflow/operators/file.py",),
+ {
+ "affected-providers-list-as-string": None,
+ "all-python-versions": "['3.8']",
+ "all-python-versions-list-as-string": "3.8",
+ "python-versions": "['3.8']",
+ "python-versions-list-as-string": "3.8",
+ "image-build": "true",
+ "needs-helm-tests": "false",
+ "run-tests": "true",
+ "run-amazon-tests": "false",
+ "docs-build": "true",
+ "upgrade-to-newer-dependencies": "false",
+ "parallel-test-types-list-as-string": "Operators Always",
+ },
+ id="Only Operator tests and DOCS should run",
+ )
+ ),
(
pytest.param(
(
@@ -277,9 +297,9 @@ def assert_outputs_are_printed(expected_outputs: dict[str,
str], stderr: str):
"run-amazon-tests": "true",
"docs-build": "true",
"upgrade-to-newer-dependencies": "true",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] "
- "Other Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
+ "Providers[amazon] WWW "
+ "API Always CLI Other Providers[google]",
},
id="Everything should run - including all providers and
upgrading to "
"newer requirements as setup.py changed and all Python
versions",
@@ -300,9 +320,9 @@ def assert_outputs_are_printed(expected_outputs: dict[str,
str], stderr: str):
"run-amazon-tests": "true",
"docs-build": "true",
"upgrade-to-newer-dependencies": "true",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] "
- "Other Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
+ "Providers[amazon] WWW "
+ "API Always CLI Other Providers[google]",
},
id="Everything should run and upgrading to newer requirements
as dependencies change",
)
@@ -409,9 +429,9 @@ def test_expected_output_pull_request_main(
"docs-filter-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD,
"full-tests-needed": "true",
"upgrade-to-newer-dependencies": "false",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] "
- "Other Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
+ "Providers[amazon] WWW "
+ "API Always CLI Other Providers[google]",
},
id="Everything should run including all providers when full
tests are needed",
)
@@ -436,9 +456,9 @@ def test_expected_output_pull_request_main(
"docs-filter-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD,
"full-tests-needed": "true",
"upgrade-to-newer-dependencies": "false",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] "
- "Other Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
+ "Providers[amazon] WWW "
+ "API Always CLI Other Providers[google]",
},
id="Everything should run including full providers when full "
"tests are needed even with different label set as well",
@@ -461,9 +481,9 @@ def test_expected_output_pull_request_main(
"docs-filter-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD,
"full-tests-needed": "true",
"upgrade-to-newer-dependencies": "false",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] "
- "Other Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
+ "Providers[amazon] WWW "
+ "API Always CLI Other Providers[google]",
},
id="Everything should run including full providers when"
"full tests are needed even if no files are changed",
@@ -488,7 +508,7 @@ def test_expected_output_pull_request_main(
"full-tests-needed": "true",
"skip-provider-tests": "true",
"upgrade-to-newer-dependencies": "false",
- "parallel-test-types-list-as-string": "Core Other WWW API
Always CLI",
+ "parallel-test-types-list-as-string": "Operators Core WWW
API Always CLI Other",
},
id="Everything should run except Providers when full tests are
needed for non-main branch",
)
@@ -600,7 +620,7 @@ def test_expected_output_full_tests_needed(
"run-kubernetes-tests": "false",
"upgrade-to-newer-dependencies": "false",
"skip-provider-tests": "true",
- "parallel-test-types-list-as-string": "Core Other WWW API
Always CLI",
+ "parallel-test-types-list-as-string": "Operators Core WWW API
Always CLI Other",
},
id="All tests except Providers should run if core file changed in
non-main branch",
),
@@ -708,6 +728,7 @@ def test_expected_output_pull_request_v2_3(
pytest.param(
(
"airflow/cli/file.py",
+ "airflow/operators/file.py",
"airflow/www/file.py",
"airflow/api/file.py",
),
@@ -723,9 +744,9 @@ def test_expected_output_pull_request_v2_3(
"run-kubernetes-tests": "false",
"upgrade-to-newer-dependencies": "false",
"skip-provider-tests": "true",
- "parallel-test-types-list-as-string": "WWW API Always CLI",
+ "parallel-test-types-list-as-string": "Operators WWW API
Always CLI",
},
- id="No providers tests should run if only CLI/API/WWW file
changed",
+ id="No providers tests should run if only CLI/API/Operators/WWW
file changed",
),
pytest.param(
("airflow/models/test.py",),
@@ -741,9 +762,9 @@ def test_expected_output_pull_request_v2_3(
"run-kubernetes-tests": "false",
"upgrade-to-newer-dependencies": "false",
"skip-provider-tests": "false",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] Other "
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
"Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "API Always CLI Other Providers[google]",
},
id="Tests for all providers should run if model file changed",
),
@@ -761,11 +782,11 @@ def test_expected_output_pull_request_v2_3(
"run-kubernetes-tests": "false",
"upgrade-to-newer-dependencies": "false",
"skip-provider-tests": "false",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] Other "
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
"Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "API Always CLI Other Providers[google]",
},
- id="Tests for all providers should run if any other than
API/WWW/CLI file changed.",
+ id="Tests for all providers should run if any other than
API/WWW/CLI/Operators file changed.",
),
],
)
@@ -800,9 +821,9 @@ def test_expected_output_pull_request_target(
"docs-build": "true",
"docs-filter-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD,
"upgrade-to-newer-dependencies": "true",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] Other "
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
"Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "API Always CLI Other Providers[google]",
},
id="All tests run on push even if unimportant file changed",
),
@@ -820,7 +841,7 @@ def test_expected_output_pull_request_target(
"docs-build": "true",
"docs-filter-list-as-string": "--package-filter apache-airflow
--package-filter docker-stack",
"upgrade-to-newer-dependencies": "true",
- "parallel-test-types-list-as-string": "Core Other WWW API
Always CLI",
+ "parallel-test-types-list-as-string": "Operators Core WWW API
Always CLI Other",
},
id="All tests except Providers and Helm run on push"
" even if unimportant file changed in non-main branch",
@@ -839,9 +860,9 @@ def test_expected_output_pull_request_target(
"docs-build": "true",
"docs-filter-list-as-string": ALL_DOCS_SELECTED_FOR_BUILD,
"upgrade-to-newer-dependencies": "true",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] Other "
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
"Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "API Always CLI Other Providers[google]",
},
id="All tests run on push if core file changed",
),
@@ -892,9 +913,9 @@ def
test_no_commit_provided_trigger_full_build_for_any_event_type(github_event):
"upgrade-to-newer-dependencies": "true"
if github_event in [GithubEvents.PUSH, GithubEvents.SCHEDULE]
else "false",
- "parallel-test-types-list-as-string": "Core
Providers[-amazon,google] "
- "Other Providers[amazon] WWW "
- "API Always CLI Providers[google]",
+ "parallel-test-types-list-as-string": "Operators Core
Providers[-amazon,google] "
+ "Providers[amazon] WWW "
+ "API Always CLI Other Providers[google]",
},
str(stderr),
)
diff --git a/images/breeze/output-commands-hash.txt
b/images/breeze/output-commands-hash.txt
index 18bd1a776e..9fc6763fca 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -68,5 +68,5 @@ static-checks:19926b8fcea5784b28d4a0d99865363c
testing:docker-compose-tests:fd154a058082fcfda12eb877a9a89338
testing:helm-tests:0669be17b744ba057adbf38681bd8e68
testing:integration-tests:f57fb275b9733a6226601f8095ad4de0
-testing:tests:1cf0f4580ecd2a2321b341b1dd411bee
-testing:31d3b4f2385aed509adee68201906ed4
+testing:tests:ce35463d1c67f3416eba77d3201c90ac
+testing:9c9f35945852ff48da2f5aba6447463e
diff --git a/images/breeze/output_testing_tests.svg
b/images/breeze/output_testing_tests.svg
index f89febadd3..23fc3adb76 100644
--- a/images/breeze/output_testing_tests.svg
+++ b/images/breeze/output_testing_tests.svg
@@ -240,8 +240,8 @@
</text><text class="breeze-testing-tests-r5" x="0" y="166.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-6)">│</text><text
class="breeze-testing-tests-r4" x="24.4" y="166.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-6)">-</text><text
class="breeze-testing-tests-r4" x="36.6" y="166.4" textLength="61"
clip-path="url(#breeze-testing-tests-line-6)">-test</text><text
class="breeze-testing-tests-r4" x="97.6" y="166.4" textLength="61"
clip-path="url(#breeze-tes [...]
</text><text class="breeze-testing-tests-r5" x="0" y="190.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-7)">│</text><text
class="breeze-testing-tests-r1" x="329.4" y="190.8" textLength="1110.2"
clip-path="url(#breeze-testing-tests-line-7)">run: `Providers[airbyte,http]` or excluded from the full test suite:                     &
[...]
</text><text class="breeze-testing-tests-r5" x="0" y="215.2" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-8)">│</text><text
class="breeze-testing-tests-r1" x="329.4" y="215.2" textLength="134.2"
clip-path="url(#breeze-testing-tests-line-8)">`Providers[</text><text
class="breeze-testing-tests-r6" x="463.6" y="215.2" textLength="85.4"
clip-path="url(#breeze-testing-tests-line-8)">-amazon</text><text
class="breeze-testing-tests-r1" x="549" y="215.2" textLength="890.6" clip-pa
[...]
-</text><text class="breeze-testing-tests-r5" x="0" y="239.6" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-9)">│</text><text
class="breeze-testing-tests-r7" x="329.4" y="239.6" textLength="1110.2"
clip-path="url(#breeze-testing-tests-line-9)">(All | API | Always | CLI | Core | Other | Providers | WWW | PlainAsserts | Postgres |     </text><text
class="bree [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="264" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-10)">│</text><text
class="breeze-testing-tests-r7" x="329.4" y="264" textLength="1110.2"
clip-path="url(#breeze-testing-tests-line-10)">MySQL | Quarantine)                                  
[...]
+</text><text class="breeze-testing-tests-r5" x="0" y="239.6" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-9)">│</text><text
class="breeze-testing-tests-r7" x="329.4" y="239.6" textLength="1110.2"
clip-path="url(#breeze-testing-tests-line-9)">(All | API | Always | CLI | Core | Operators | Other | Providers | WWW | PlainAsserts |    </text><text
class="breeze-te [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="264" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-10)">│</text><text
class="breeze-testing-tests-r7" x="329.4" y="264" textLength="1110.2"
clip-path="url(#breeze-testing-tests-line-10)">Postgres | MySQL | Quarantine)                               &
[...]
</text><text class="breeze-testing-tests-r5" x="0" y="288.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-11)">│</text><text
class="breeze-testing-tests-r4" x="24.4" y="288.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-11)">-</text><text
class="breeze-testing-tests-r4" x="36.6" y="288.4" textLength="61"
clip-path="url(#breeze-testing-tests-line-11)">-test</text><text
class="breeze-testing-tests-r4" x="97.6" y="288.4" textLength="97.6"
clip-path="url(#breez [...]
</text><text class="breeze-testing-tests-r5" x="0" y="312.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-12)">│</text><text
class="breeze-testing-tests-r7" x="329.4" y="312.8" textLength="988.2"
clip-path="url(#breeze-testing-tests-line-12)">(INTEGER RANGE)                                   
[...]
</text><text class="breeze-testing-tests-r5" x="0" y="337.2" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-13)">│</text><text
class="breeze-testing-tests-r5" x="329.4" y="337.2" textLength="988.2"
clip-path="url(#breeze-testing-tests-line-13)">[default: 60; x>=0]                                 
[...]
@@ -263,8 +263,8 @@
</text><text class="breeze-testing-tests-r5" x="0" y="727.6" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-29)">│</text><text
class="breeze-testing-tests-r4" x="24.4" y="727.6" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-29)">-</text><text
class="breeze-testing-tests-r4" x="36.6" y="727.6" textLength="146.4"
clip-path="url(#breeze-testing-tests-line-29)">-parallelism</text><text
class="breeze-testing-tests-r1" x="378.2" y="727.6" textLength="915"
clip-path=" [...]
</text><text class="breeze-testing-tests-r5" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-30)">│</text><text
class="breeze-testing-tests-r7" x="378.2" y="752" textLength="915"
clip-path="url(#breeze-testing-tests-line-30)">(INTEGER RANGE)                                    
[...]
</text><text class="breeze-testing-tests-r5" x="0" y="776.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-31)">│</text><text
class="breeze-testing-tests-r5" x="378.2" y="776.4" textLength="915"
clip-path="url(#breeze-testing-tests-line-31)">[default: 4; 1<=x<=8]                                 &
[...]
-</text><text class="breeze-testing-tests-r5" x="0" y="800.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-32)">│</text><text
class="breeze-testing-tests-r4" x="24.4" y="800.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-32)">-</text><text
class="breeze-testing-tests-r4" x="36.6" y="800.8" textLength="109.8"
clip-path="url(#breeze-testing-tests-line-32)">-parallel</text><text
class="breeze-testing-tests-r4" x="146.4" y="800.8" textLength="134.2"
clip-path="u [...]
-</text><text class="breeze-testing-tests-r5" x="0" y="825.2" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-33)">│</text><text
class="breeze-testing-tests-r5" x="378.2" y="825.2" textLength="780.8"
clip-path="url(#breeze-testing-tests-line-33)">[default: API Always CLI Core Other Providers WWW PlainAsserts] </text><text
class="breeze-testing-tests-r5" x="1451.8" y="825.2" textLength="12.2"
clip-path="url(#breeze-testing-tests-line [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="800.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-32)">│</text><text
class="breeze-testing-tests-r4" x="24.4" y="800.8" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-32)">-</text><text
class="breeze-testing-tests-r4" x="36.6" y="800.8" textLength="109.8"
clip-path="url(#breeze-testing-tests-line-32)">-parallel</text><text
class="breeze-testing-tests-r4" x="146.4" y="800.8" textLength="134.2"
clip-path="u [...]
+</text><text class="breeze-testing-tests-r5" x="0" y="825.2" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-33)">│</text><text
class="breeze-testing-tests-r5" x="378.2" y="825.2" textLength="890.6"
clip-path="url(#breeze-testing-tests-line-33)">[default: API Always CLI Core Operators Other Providers WWW PlainAsserts]</text><text
class="breeze-testing-tests-r5" x="1451.8" y="825.2" textLength="12.2"
clip-path="url(#breeze-testing-t [...]
</text><text class="breeze-testing-tests-r5" x="0" y="849.6" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-34)">│</text><text
class="breeze-testing-tests-r4" x="24.4" y="849.6" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-34)">-</text><text
class="breeze-testing-tests-r4" x="36.6" y="849.6" textLength="61"
clip-path="url(#breeze-testing-tests-line-34)">-skip</text><text
class="breeze-testing-tests-r4" x="97.6" y="849.6" textLength="97.6"
clip-path="url(#breez [...]
</text><text class="breeze-testing-tests-r5" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-35)">│</text><text
class="breeze-testing-tests-r4" x="24.4" y="874" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-35)">-</text><text
class="breeze-testing-tests-r4" x="36.6" y="874" textLength="73.2"
clip-path="url(#breeze-testing-tests-line-35)">-debug</text><text
class="breeze-testing-tests-r4" x="109.8" y="874" textLength="122"
clip-path="url(#breeze-tes [...]
</text><text class="breeze-testing-tests-r5" x="0" y="898.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-36)">│</text><text
class="breeze-testing-tests-r4" x="24.4" y="898.4" textLength="12.2"
clip-path="url(#breeze-testing-tests-line-36)">-</text><text
class="breeze-testing-tests-r4" x="36.6" y="898.4" textLength="97.6"
clip-path="url(#breeze-testing-tests-line-36)">-include</text><text
class="breeze-testing-tests-r4" x="134.2" y="898.4" textLength="195.2"
clip-path="url [...]
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index 23ad3c5328..036c8ef633 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -439,8 +439,8 @@ if [[ ${REMOVE_ARM_PACKAGES:="false"} == "true" ]]; then
python "${IN_CONTAINER_DIR}/remove_arm_packages.py"
fi
-declare -a SELECTED_TESTS CLI_TESTS API_TESTS PROVIDERS_TESTS CORE_TESTS
WWW_TESTS \
- ALL_TESTS ALL_PRESELECTED_TESTS ALL_OTHER_TESTS
+declare -a SELECTED_TESTS CLI_TESTS API_TESTS OPERATORS_TESTS ALWAYS_TESTS
PROVIDERS_TESTS \
+ CORE_TESTS WWW_TESTS ALL_TESTS ALL_PRESELECTED_TESTS ALL_OTHER_TESTS
# Finds all directories that are not on the list of tests
# - so that we do not skip any in the future if new directories are added
@@ -471,6 +471,7 @@ else
API_TESTS=("tests/api_experimental" "tests/api_connexion"
"tests/api_internal")
PROVIDERS_TESTS=("tests/providers")
ALWAYS_TESTS=("tests/always")
+ OPERATORS_TESTS=("tests/operators")
CORE_TESTS=(
"tests/core"
"tests/executors"
@@ -493,6 +494,7 @@ else
"${PROVIDERS_TESTS[@]}"
"${CORE_TESTS[@]}"
"${ALWAYS_TESTS[@]}"
+ "${OPERATORS_TESTS[@]}"
"${WWW_TESTS[@]}"
"${SYSTEM_TESTS[@]}"
)
@@ -514,6 +516,8 @@ else
SELECTED_TESTS=("${CORE_TESTS[@]}")
elif [[ ${TEST_TYPE:=""} == "Always" ]]; then
SELECTED_TESTS=("${ALWAYS_TESTS[@]}")
+ elif [[ ${TEST_TYPE:=""} == "Operators" ]]; then
+ SELECTED_TESTS=("${OPERATORS_TESTS[@]}")
elif [[ ${TEST_TYPE:=""} == "WWW" ]]; then
SELECTED_TESTS=("${WWW_TESTS[@]}")
elif [[ ${TEST_TYPE:=""} == "Helm" ]]; then
@@ -577,8 +581,8 @@ else
exit 1
fi
fi
-readonly SELECTED_TESTS CLI_TESTS API_TESTS PROVIDERS_TESTS CORE_TESTS
WWW_TESTS \
- ALL_TESTS ALL_PRESELECTED_TESTS
+readonly SELECTED_TESTS CLI_TESTS API_TESTS OPERATORS_TESTS ALWAYS_TESTS
PROVIDERS_TESTS \
+ CORE_TESTS WWW_TESTS ALL_TESTS ALL_PRESELECTED_TESTS
if [[ ${TEST_TYPE:=""} == "Long" ]]; then
EXTRA_PYTEST_ARGS+=(
@@ -607,7 +611,6 @@ echo "Running tests ${SELECTED_TESTS[*]}"
echo
ARGS=("${EXTRA_PYTEST_ARGS[@]}" "${SELECTED_TESTS[@]}")
-
if [[ ${RUN_SYSTEM_TESTS:="false"} == "true" ]]; then
"${IN_CONTAINER_DIR}/run_system_tests.sh" "${ARGS[@]}"
else