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:&#160;`Providers[airbyte,http]`&#160;or&#160;excluded&#160;from&#160;the&#160;full&#160;test&#160;suite:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
 </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&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;PlainAsserts&#160;|&#160;Postgres&#160;|&#160;&#160;&#160;&#160;&#160;</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&#160;|&#160;Quarantine)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
+</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&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Operators&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;PlainAsserts&#160;|&#160;&#160;&#160;&#160;</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&#160;|&#160;MySQL&#160;|&#160;Quarantine)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
 </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&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
 </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:&#160;60;&#160;x&gt;=0]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
@@ -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&#160;RANGE)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
 </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:&#160;4;&#160;1&lt;=x&lt;=8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
-</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:&#160;API&#160;Always&#160;CLI&#160;Core&#160;Other&#160;Providers&#160;WWW&#160;PlainAsserts]&#160;</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:&#160;API&#160;Always&#160;CLI&#160;Core&#160;Operators&#160;Other&#160;Providers&#160;WWW&#160;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

Reply via email to