You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2022/08/18 08:32:34 UTC

[airflow] branch main updated: Add breeze parameter test-timeout to override pytest timeouts (#25766)

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 6c63f7c9a1 Add breeze parameter test-timeout to override pytest timeouts (#25766)
6c63f7c9a1 is described below

commit 6c63f7c9a1f09ba12e707fb6f0af3386efa6f0d5
Author: Vincent <97...@users.noreply.github.com>
AuthorDate: Thu Aug 18 04:32:12 2022 -0400

    Add breeze parameter test-timeout to override pytest timeouts (#25766)
    
    * Add breeze parameter test-timeout to override pytest timeouts
---
 Dockerfile.ci                                      |   7 +-
 .../airflow_breeze/commands/testing_commands.py    |   9 ++
 .../commands/testing_commands_config.py            |   1 +
 .../airflow_breeze/utils/docker_command_utils.py   |   1 +
 images/breeze/output-commands-hash.txt             |   2 +-
 images/breeze/output_testing_tests.svg             | 168 +++++++++++----------
 scripts/ci/docker-compose/_docker.env              |   1 +
 scripts/ci/docker-compose/base.yml                 |   1 +
 scripts/docker/entrypoint_ci.sh                    |   7 +-
 9 files changed, 110 insertions(+), 87 deletions(-)

diff --git a/Dockerfile.ci b/Dockerfile.ci
index fe2a253ee1..ecfaf110b4 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -569,6 +569,7 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
     RUN_TESTS=${RUN_TESTS:="false"}
     CI=${CI:="false"}
     USE_AIRFLOW_VERSION="${USE_AIRFLOW_VERSION:=""}"
+    TEST_TIMEOUT=${TEST_TIMEOUT:="60"}
 
     if [[ ${USE_AIRFLOW_VERSION} == "" ]]; then
         export PYTHONPATH=${AIRFLOW_SOURCES}
@@ -759,9 +760,9 @@ EXTRA_PYTEST_ARGS=(
     # timeouts in seconds for individual tests
     "--timeouts-order"
     "moi"
-    "--setup-timeout=60"
-    "--execution-timeout=60"
-    "--teardown-timeout=60"
+    "--setup-timeout=${TEST_TIMEOUT}"
+    "--execution-timeout=${TEST_TIMEOUT}"
+    "--teardown-timeout=${TEST_TIMEOUT}"
     # Only display summary for non-expected case
     # f - failed
     # E - error
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands.py b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
index 786c6934b2..9ae90671e3 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands.py
@@ -217,6 +217,12 @@ def run_with_progress(
     default="All",
     type=NotVerifiedBetterChoice(ALLOWED_TEST_TYPE_CHOICES),
 )
+@click.option(
+    "--test-timeout",
+    help="Test timeout. Set the pytest setup, execution and teardown timeouts to this value",
+    default="60",
+    show_default=True,
+)
 @option_db_reset
 @click.argument('extra_pytest_args', nargs=-1, type=click.UNPROCESSED)
 def tests(
@@ -231,6 +237,7 @@ def tests(
     integration: Tuple,
     extra_pytest_args: Tuple,
     test_type: str,
+    test_timeout: str,
     db_reset: bool,
     image_tag: Optional[str],
     mount_sources: str,
@@ -253,6 +260,8 @@ def tests(
         if "[" in test_type and not test_type.startswith("Providers"):
             get_console().print("[error]Only 'Providers' test type can specify actual tests with \\[\\][/]")
             sys.exit(1)
+    if test_timeout:
+        env_variables["TEST_TIMEOUT"] = test_timeout
     if integration:
         if "trino" in integration:
             integration = integration + ("kerberos",)
diff --git a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
index 90a3e20348..e44e8500fd 100644
--- a/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/testing_commands_config.py
@@ -27,6 +27,7 @@ TESTING_PARAMETERS: Dict[str, List[Dict[str, Union[str, List[str]]]]] = {
             "options": [
                 "--integration",
                 "--test-type",
+                "--test-timeout",
                 "--db-reset",
                 "--backend",
                 "--python",
diff --git a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
index b7cad90303..b7f32337a9 100644
--- a/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
+++ b/dev/breeze/src/airflow_breeze/utils/docker_command_utils.py
@@ -593,6 +593,7 @@ def update_expected_environment_variables(env: Dict[str, str]) -> None:
     set_value_to_default_if_not_set(env, 'SKIP_ENVIRONMENT_INITIALIZATION', "false")
     set_value_to_default_if_not_set(env, 'SKIP_SSH_SETUP', "false")
     set_value_to_default_if_not_set(env, 'TEST_TYPE', "")
+    set_value_to_default_if_not_set(env, 'TEST_TIMEOUT', "60")
     set_value_to_default_if_not_set(env, 'UPGRADE_TO_NEWER_DEPENDENCIES', "false")
     set_value_to_default_if_not_set(env, 'USE_PACKAGES_FROM_DIST', "false")
     set_value_to_default_if_not_set(env, 'VERBOSE', "false")
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 76c49e8682..af6780245b 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -57,7 +57,7 @@ start-airflow:3e793b11dc2158c54bfc189bfe20d6f2
 static-checks:03e96245e60c225ed94514ad7b42ceb0
 stop:8ebd8a42f1003495d37b884de5ac7ce6
 testing:chain:68934a3e9455fa72420237eb05902327
-testing:commands:470be9efe36272d49d4d43acb34b6fe5
+testing:commands:c56d4fed05849ebfca609bd725200582
 testing:deprecated:68934a3e9455fa72420237eb05902327
 testing:epilog:37a6259cc0c1dae299a7866489dff0bd
 testing:help:590a1f3d30c4015a1df4acb1a622c66d
diff --git a/images/breeze/output_testing_tests.svg b/images/breeze/output_testing_tests.svg
index 0168ab61e1..80e9bc2560 100644
--- a/images/breeze/output_testing_tests.svg
+++ b/images/breeze/output_testing_tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 855.1999999999999" xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 904.0" xmlns="http://www.w3.org/2000/svg">
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -19,173 +19,181 @@
         font-weight: 700;
     }
 
-    .terminal-2523094625-matrix {
+    .terminal-63872827-matrix {
         font-family: Fira Code, monospace;
         font-size: 20px;
         line-height: 24.4px;
         font-variant-east-asian: full-width;
     }
 
-    .terminal-2523094625-title {
+    .terminal-63872827-title {
         font-size: 18px;
         font-weight: bold;
         font-family: arial;
     }
 
-    .terminal-2523094625-r1 { fill: #c5c8c6;font-weight: bold }
-.terminal-2523094625-r2 { fill: #c5c8c6 }
-.terminal-2523094625-r3 { fill: #d0b344;font-weight: bold }
-.terminal-2523094625-r4 { fill: #868887 }
-.terminal-2523094625-r5 { fill: #68a0b3;font-weight: bold }
-.terminal-2523094625-r6 { fill: #8d7b39 }
-.terminal-2523094625-r7 { fill: #98a84b;font-weight: bold }
+    .terminal-63872827-r1 { fill: #c5c8c6;font-weight: bold }
+.terminal-63872827-r2 { fill: #c5c8c6 }
+.terminal-63872827-r3 { fill: #d0b344;font-weight: bold }
+.terminal-63872827-r4 { fill: #868887 }
+.terminal-63872827-r5 { fill: #68a0b3;font-weight: bold }
+.terminal-63872827-r6 { fill: #8d7b39 }
+.terminal-63872827-r7 { fill: #98a84b;font-weight: bold }
     </style>
 
     <defs>
-    <clipPath id="terminal-2523094625-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="804.1999999999999" />
+    <clipPath id="terminal-63872827-clip-terminal">
+      <rect x="0" y="0" width="1463.0" height="853.0" />
     </clipPath>
-    <clipPath id="terminal-2523094625-line-0">
+    <clipPath id="terminal-63872827-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-1">
+<clipPath id="terminal-63872827-line-1">
     <rect x="0" y="25.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-2">
+<clipPath id="terminal-63872827-line-2">
     <rect x="0" y="50.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-3">
+<clipPath id="terminal-63872827-line-3">
     <rect x="0" y="74.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-4">
+<clipPath id="terminal-63872827-line-4">
     <rect x="0" y="99.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-5">
+<clipPath id="terminal-63872827-line-5">
     <rect x="0" y="123.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-6">
+<clipPath id="terminal-63872827-line-6">
     <rect x="0" y="147.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-7">
+<clipPath id="terminal-63872827-line-7">
     <rect x="0" y="172.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-8">
+<clipPath id="terminal-63872827-line-8">
     <rect x="0" y="196.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-9">
+<clipPath id="terminal-63872827-line-9">
     <rect x="0" y="221.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-10">
+<clipPath id="terminal-63872827-line-10">
     <rect x="0" y="245.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-11">
+<clipPath id="terminal-63872827-line-11">
     <rect x="0" y="269.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-12">
+<clipPath id="terminal-63872827-line-12">
     <rect x="0" y="294.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-13">
+<clipPath id="terminal-63872827-line-13">
     <rect x="0" y="318.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-14">
+<clipPath id="terminal-63872827-line-14">
     <rect x="0" y="343.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-15">
+<clipPath id="terminal-63872827-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-16">
+<clipPath id="terminal-63872827-line-16">
     <rect x="0" y="391.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-17">
+<clipPath id="terminal-63872827-line-17">
     <rect x="0" y="416.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-18">
+<clipPath id="terminal-63872827-line-18">
     <rect x="0" y="440.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-19">
+<clipPath id="terminal-63872827-line-19">
     <rect x="0" y="465.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-20">
+<clipPath id="terminal-63872827-line-20">
     <rect x="0" y="489.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-21">
+<clipPath id="terminal-63872827-line-21">
     <rect x="0" y="513.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-22">
+<clipPath id="terminal-63872827-line-22">
     <rect x="0" y="538.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-23">
+<clipPath id="terminal-63872827-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-24">
+<clipPath id="terminal-63872827-line-24">
     <rect x="0" y="587.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-25">
+<clipPath id="terminal-63872827-line-25">
     <rect x="0" y="611.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-26">
+<clipPath id="terminal-63872827-line-26">
     <rect x="0" y="635.9" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-27">
+<clipPath id="terminal-63872827-line-27">
     <rect x="0" y="660.3" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-28">
+<clipPath id="terminal-63872827-line-28">
     <rect x="0" y="684.7" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-29">
+<clipPath id="terminal-63872827-line-29">
     <rect x="0" y="709.1" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-30">
+<clipPath id="terminal-63872827-line-30">
     <rect x="0" y="733.5" width="1464" height="24.65"/>
             </clipPath>
-<clipPath id="terminal-2523094625-line-31">
+<clipPath id="terminal-63872827-line-31">
     <rect x="0" y="757.9" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="terminal-63872827-line-32">
+    <rect x="0" y="782.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="terminal-63872827-line-33">
+    <rect x="0" y="806.7" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="853.2" rx="8"/><text class="terminal-2523094625-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;tests</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="1480" height="902" rx="8"/><text class="terminal-63872827-title" fill="#c5c8c6" text-anchor="middle" x="740" y="27">Command:&#160;testing&#160;tests</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
             <circle cx="44" cy="0" r="7" fill="#28c840"/>
             </g>
         
-    <g transform="translate(9, 41)" clip-path="url(#terminal-2523094625-clip-terminal)">
+    <g transform="translate(9, 41)" clip-path="url(#terminal-63872827-clip-terminal)">
     
-    <g class="terminal-2523094625-matrix">
-    <text class="terminal-2523094625-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-2523094625-line-0)">
-</text><text class="terminal-2523094625-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-2523094625-line-1)">Usage:&#160;</text><text class="terminal-2523094625-r1" x="97.6" y="44.4" textLength="646.6" clip-path="url(#terminal-2523094625-line-1)">breeze&#160;testing&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-2523094625-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-1)">
-</text><text class="terminal-2523094625-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-2)">
-</text><text class="terminal-2523094625-r2" x="12.2" y="93.2" textLength="439.2" clip-path="url(#terminal-2523094625-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.</text><text class="terminal-2523094625-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-3)">
-</text><text class="terminal-2523094625-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-4)">
-</text><text class="terminal-2523094625-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-2523094625-line-5)">╭─</text><text class="terminal-2523094625-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-2523094625-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2523094625-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(# [...]
-</text><text class="terminal-2523094625-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-6)">│</text><text class="terminal-2523094625-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-6)">-</text><text class="terminal-2523094625-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-2523094625-line-6)">-integration</text><text class="terminal-2523094625-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#te [...]
-</text><text class="terminal-2523094625-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-7)">│</text><text class="terminal-2523094625-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-2523094625-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-2523094625-r4" x="1451.8" y=" [...]
-</text><text class="terminal-2523094625-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-8)">│</text><text class="terminal-2523094625-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-8)">-</text><text class="terminal-2523094625-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-2523094625-line-8)">-test</text><text class="terminal-2523094625-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-25230946 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-9)">│</text><text class="terminal-2523094625-r2" x="317.2" y="239.6" textLength="341.6" clip-path="url(#terminal-2523094625-line-9)">should&#160;be&#160;run&#160;-&#160;for&#160;example&#160;</text><text class="terminal-2523094625-r5" x="658.8" y="239.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-9)">-</text><text class="terminal-2523094625-r5" x="671" y= [...]
-</text><text class="terminal-2523094625-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-2523094625-line-10)">│</text><text class="terminal-2523094625-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-2523094625-line-10)">(All&#160;|&#160;Always&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;Helm&#160;|&#160;&#160;</text><text class="terminal-25230 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-11)">│</text><text class="terminal-2523094625-r6" x="317.2" y="288.4" textLength="1122.4" clip-path="url(#terminal-2523094625-line-11)">Postgres&#160;|&#160;MySQL&#160;|&#160;Integration&#160;|&#160;Other&#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;& [...]
-</text><text class="terminal-2523094625-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-12)">│</text><text class="terminal-2523094625-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-12)">-</text><text class="terminal-2523094625-r5" x="36.6" y="312.8" textLength="36.6" clip-path="url(#terminal-2523094625-line-12)">-db</text><text class="terminal-2523094625-r5" x="73.2" y="312.8" textLength="73.2" clip-path="url(#terminal-252 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-13)">│</text><text class="terminal-2523094625-r5" x="24.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-13)">-</text><text class="terminal-2523094625-r5" x="36.6" y="337.2" textLength="97.6" clip-path="url(#terminal-2523094625-line-13)">-backend</text><text class="terminal-2523094625-r7" x="268.4" y="337.2" textLength="24.4" clip-path="url(#termin [...]
-</text><text class="terminal-2523094625-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-14)">│</text><text class="terminal-2523094625-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-14)">-</text><text class="terminal-2523094625-r5" x="36.6" y="361.6" textLength="85.4" clip-path="url(#terminal-2523094625-line-14)">-python</text><text class="terminal-2523094625-r7" x="268.4" y="361.6" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2523094625-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-2523094625-line-15)">│</text><text class="terminal-2523094625-r4" x="317.2" y="386" textLength="732" clip-path="url(#terminal-2523094625-line-15)">[default:&#160;3.7]&#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;&#160;&#1 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-16)">│</text><text class="terminal-2523094625-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-16)">-</text><text class="terminal-2523094625-r5" x="36.6" y="410.4" textLength="109.8" clip-path="url(#terminal-2523094625-line-16)">-postgres</text><text class="terminal-2523094625-r5" x="146.4" y="410.4" textLength="97.6" clip-path="url(#term [...]
-</text><text class="terminal-2523094625-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-17)">│</text><text class="terminal-2523094625-r5" x="24.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-17)">-</text><text class="terminal-2523094625-r5" x="36.6" y="434.8" textLength="73.2" clip-path="url(#terminal-2523094625-line-17)">-mysql</text><text class="terminal-2523094625-r5" x="109.8" y="434.8" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2523094625-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-18)">│</text><text class="terminal-2523094625-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-18)">-</text><text class="terminal-2523094625-r5" x="36.6" y="459.2" textLength="73.2" clip-path="url(#terminal-2523094625-line-18)">-mssql</text><text class="terminal-2523094625-r5" x="109.8" y="459.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2523094625-r4" x="0" y="483.6" textLength="1464" clip-path="url(#terminal-2523094625-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2523094625-r2" x="1464" y="483.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-19)">
-</text><text class="terminal-2523094625-r4" x="0" y="508" textLength="24.4" clip-path="url(#terminal-2523094625-line-20)">╭─</text><text class="terminal-2523094625-r4" x="24.4" y="508" textLength="1415.2" clip-path="url(#terminal-2523094625-line-20)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2523094625-r4" x="1439.6" y="508" textLength="24.4" clip-path="url [...]
-</text><text class="terminal-2523094625-r4" x="0" y="532.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-21)">│</text><text class="terminal-2523094625-r5" x="24.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-21)">-</text><text class="terminal-2523094625-r5" x="36.6" y="532.4" textLength="73.2" clip-path="url(#terminal-2523094625-line-21)">-limit</text><text class="terminal-2523094625-r5" x="109.8" y="532.4" textLength="195.2" clip-path="url(#termina [...]
-</text><text class="terminal-2523094625-r4" x="0" y="556.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-22)">│</text><text class="terminal-2523094625-r5" x="24.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-22)">-</text><text class="terminal-2523094625-r5" x="36.6" y="556.8" textLength="73.2" clip-path="url(#terminal-2523094625-line-22)">-image</text><text class="terminal-2523094625-r5" x="109.8" y="556.8" textLength="48.8" clip-path="url(#terminal [...]
-</text><text class="terminal-2523094625-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-23)">│</text><text class="terminal-2523094625-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2523094625-line-23)">-</text><text class="terminal-2523094625-r5" x="36.6" y="581.2" textLength="73.2" clip-path="url(#terminal-2523094625-line-23)">-mount</text><text class="terminal-2523094625-r5" x="109.8" y="581.2" textLength="97.6" clip-path="url(#terminal [...]
-</text><text class="terminal-2523094625-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-24)">│</text><text class="terminal-2523094625-r2" x="378.2" y="605.6" textLength="1061.4" clip-path="url(#terminal-2523094625-line-24)">selected).&#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;&#160;&#160 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-2523094625-line-25)">│</text><text class="terminal-2523094625-r6" x="378.2" y="630" textLength="1061.4" clip-path="url(#terminal-2523094625-line-25)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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="terminal-2523094625-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-26)">│</text><text class="terminal-2523094625-r4" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#terminal-2523094625-line-26)">[default:&#160;selected]&#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;&#1 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="678.8" textLength="1464" clip-path="url(#terminal-2523094625-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2523094625-r2" x="1464" y="678.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-27)">
-</text><text class="terminal-2523094625-r4" x="0" y="703.2" textLength="24.4" clip-path="url(#terminal-2523094625-line-28)">╭─</text><text class="terminal-2523094625-r4" x="24.4" y="703.2" textLength="1415.2" clip-path="url(#terminal-2523094625-line-28)">&#160;Common&#160;options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-2523094625-r4" x="1439.6" y="703.2" textLength="24.4" clip-path="url(#termina [...]
-</text><text class="terminal-2523094625-r4" x="0" y="727.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-29)">│</text><text class="terminal-2523094625-r5" x="24.4" y="727.6" textLength="12.2" clip-path="url(#terminal-2523094625-line-29)">-</text><text class="terminal-2523094625-r5" x="36.6" y="727.6" textLength="48.8" clip-path="url(#terminal-2523094625-line-29)">-dry</text><text class="terminal-2523094625-r5" x="85.4" y="727.6" textLength="48.8" clip-path="url(#terminal-25 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="752" textLength="12.2" clip-path="url(#terminal-2523094625-line-30)">│</text><text class="terminal-2523094625-r5" x="24.4" y="752" textLength="12.2" clip-path="url(#terminal-2523094625-line-30)">-</text><text class="terminal-2523094625-r5" x="36.6" y="752" textLength="97.6" clip-path="url(#terminal-2523094625-line-30)">-verbose</text><text class="terminal-2523094625-r7" x="158.6" y="752" textLength="24.4" clip-path="url(#terminal-25230 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-31)">│</text><text class="terminal-2523094625-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-2523094625-line-31)">-</text><text class="terminal-2523094625-r5" x="36.6" y="776.4" textLength="61" clip-path="url(#terminal-2523094625-line-31)">-help</text><text class="terminal-2523094625-r7" x="158.6" y="776.4" textLength="24.4" clip-path="url(#terminal-25 [...]
-</text><text class="terminal-2523094625-r4" x="0" y="800.8" textLength="1464" clip-path="url(#terminal-2523094625-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-2523094625-r2" x="1464" y="800.8" textLength="12.2" clip-path="url(#terminal-2523094625-line-32)">
+    <g class="terminal-63872827-matrix">
+    <text class="terminal-63872827-r2" x="1464" y="20" textLength="12.2" clip-path="url(#terminal-63872827-line-0)">
+</text><text class="terminal-63872827-r3" x="12.2" y="44.4" textLength="85.4" clip-path="url(#terminal-63872827-line-1)">Usage:&#160;</text><text class="terminal-63872827-r1" x="97.6" y="44.4" textLength="646.6" clip-path="url(#terminal-63872827-line-1)">breeze&#160;testing&#160;tests&#160;[OPTIONS]&#160;[EXTRA_PYTEST_ARGS]...</text><text class="terminal-63872827-r2" x="1464" y="44.4" textLength="12.2" clip-path="url(#terminal-63872827-line-1)">
+</text><text class="terminal-63872827-r2" x="1464" y="68.8" textLength="12.2" clip-path="url(#terminal-63872827-line-2)">
+</text><text class="terminal-63872827-r2" x="12.2" y="93.2" textLength="439.2" clip-path="url(#terminal-63872827-line-3)">Run&#160;the&#160;specified&#160;unit&#160;test&#160;targets.</text><text class="terminal-63872827-r2" x="1464" y="93.2" textLength="12.2" clip-path="url(#terminal-63872827-line-3)">
+</text><text class="terminal-63872827-r2" x="1464" y="117.6" textLength="12.2" clip-path="url(#terminal-63872827-line-4)">
+</text><text class="terminal-63872827-r4" x="0" y="142" textLength="24.4" clip-path="url(#terminal-63872827-line-5)">╭─</text><text class="terminal-63872827-r4" x="24.4" y="142" textLength="1415.2" clip-path="url(#terminal-63872827-line-5)">&#160;Basic&#160;flag&#160;for&#160;tests&#160;command&#160;──────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-63872827-r4" x="1439.6" y="142" textLength="24.4" clip-path="url(#terminal-6 [...]
+</text><text class="terminal-63872827-r4" x="0" y="166.4" textLength="12.2" clip-path="url(#terminal-63872827-line-6)">│</text><text class="terminal-63872827-r5" x="24.4" y="166.4" textLength="12.2" clip-path="url(#terminal-63872827-line-6)">-</text><text class="terminal-63872827-r5" x="36.6" y="166.4" textLength="146.4" clip-path="url(#terminal-63872827-line-6)">-integration</text><text class="terminal-63872827-r2" x="317.2" y="166.4" textLength="1110.2" clip-path="url(#terminal-6387282 [...]
+</text><text class="terminal-63872827-r4" x="0" y="190.8" textLength="12.2" clip-path="url(#terminal-63872827-line-7)">│</text><text class="terminal-63872827-r6" x="317.2" y="190.8" textLength="1110.2" clip-path="url(#terminal-63872827-line-7)">(cassandra&#160;|&#160;kerberos&#160;|&#160;mongo&#160;|&#160;openldap&#160;|&#160;pinot&#160;|&#160;rabbitmq&#160;|&#160;redis&#160;|&#160;statsd&#160;|&#160;trino&#160;|&#160;all)</text><text class="terminal-63872827-r4" x="1451.8" y="190.8" tex [...]
+</text><text class="terminal-63872827-r4" x="0" y="215.2" textLength="12.2" clip-path="url(#terminal-63872827-line-8)">│</text><text class="terminal-63872827-r5" x="24.4" y="215.2" textLength="12.2" clip-path="url(#terminal-63872827-line-8)">-</text><text class="terminal-63872827-r5" x="36.6" y="215.2" textLength="61" clip-path="url(#terminal-63872827-line-8)">-test</text><text class="terminal-63872827-r5" x="97.6" y="215.2" textLength="61" clip-path="url(#terminal-63872827-line-8)">-typ [...]
+</text><text class="terminal-63872827-r4" x="0" y="239.6" textLength="12.2" clip-path="url(#terminal-63872827-line-9)">│</text><text class="terminal-63872827-r2" x="317.2" y="239.6" textLength="341.6" clip-path="url(#terminal-63872827-line-9)">should&#160;be&#160;run&#160;-&#160;for&#160;example&#160;</text><text class="terminal-63872827-r5" x="658.8" y="239.6" textLength="12.2" clip-path="url(#terminal-63872827-line-9)">-</text><text class="terminal-63872827-r5" x="671" y="239.6" textLe [...]
+</text><text class="terminal-63872827-r4" x="0" y="264" textLength="12.2" clip-path="url(#terminal-63872827-line-10)">│</text><text class="terminal-63872827-r6" x="317.2" y="264" textLength="1122.4" clip-path="url(#terminal-63872827-line-10)">(All&#160;|&#160;Always&#160;|&#160;API&#160;|&#160;Always&#160;|&#160;CLI&#160;|&#160;Core&#160;|&#160;Integration&#160;|&#160;Other&#160;|&#160;Providers&#160;|&#160;WWW&#160;|&#160;Helm&#160;|&#160;&#160;</text><text class="terminal-63872827-r4"  [...]
+</text><text class="terminal-63872827-r4" x="0" y="288.4" textLength="12.2" clip-path="url(#terminal-63872827-line-11)">│</text><text class="terminal-63872827-r6" x="317.2" y="288.4" textLength="1122.4" clip-path="url(#terminal-63872827-line-11)">Postgres&#160;|&#160;MySQL&#160;|&#160;Integration&#160;|&#160;Other&#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;&#1 [...]
+</text><text class="terminal-63872827-r4" x="0" y="312.8" textLength="12.2" clip-path="url(#terminal-63872827-line-12)">│</text><text class="terminal-63872827-r5" x="24.4" y="312.8" textLength="12.2" clip-path="url(#terminal-63872827-line-12)">-</text><text class="terminal-63872827-r5" x="36.6" y="312.8" textLength="61" clip-path="url(#terminal-63872827-line-12)">-test</text><text class="terminal-63872827-r5" x="97.6" y="312.8" textLength="97.6" clip-path="url(#terminal-63872827-line-12) [...]
+</text><text class="terminal-63872827-r4" x="0" y="337.2" textLength="12.2" clip-path="url(#terminal-63872827-line-13)">│</text><text class="terminal-63872827-r4" x="317.2" y="337.2" textLength="988.2" clip-path="url(#terminal-63872827-line-13)">[default:&#160;60]&#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;&#160;&#160; [...]
+</text><text class="terminal-63872827-r4" x="0" y="361.6" textLength="12.2" clip-path="url(#terminal-63872827-line-14)">│</text><text class="terminal-63872827-r5" x="24.4" y="361.6" textLength="12.2" clip-path="url(#terminal-63872827-line-14)">-</text><text class="terminal-63872827-r5" x="36.6" y="361.6" textLength="36.6" clip-path="url(#terminal-63872827-line-14)">-db</text><text class="terminal-63872827-r5" x="73.2" y="361.6" textLength="73.2" clip-path="url(#terminal-63872827-line-14) [...]
+</text><text class="terminal-63872827-r4" x="0" y="386" textLength="12.2" clip-path="url(#terminal-63872827-line-15)">│</text><text class="terminal-63872827-r5" x="24.4" y="386" textLength="12.2" clip-path="url(#terminal-63872827-line-15)">-</text><text class="terminal-63872827-r5" x="36.6" y="386" textLength="97.6" clip-path="url(#terminal-63872827-line-15)">-backend</text><text class="terminal-63872827-r7" x="268.4" y="386" textLength="24.4" clip-path="url(#terminal-63872827-line-15)"> [...]
+</text><text class="terminal-63872827-r4" x="0" y="410.4" textLength="12.2" clip-path="url(#terminal-63872827-line-16)">│</text><text class="terminal-63872827-r5" x="24.4" y="410.4" textLength="12.2" clip-path="url(#terminal-63872827-line-16)">-</text><text class="terminal-63872827-r5" x="36.6" y="410.4" textLength="85.4" clip-path="url(#terminal-63872827-line-16)">-python</text><text class="terminal-63872827-r7" x="268.4" y="410.4" textLength="24.4" clip-path="url(#terminal-63872827-lin [...]
+</text><text class="terminal-63872827-r4" x="0" y="434.8" textLength="12.2" clip-path="url(#terminal-63872827-line-17)">│</text><text class="terminal-63872827-r4" x="317.2" y="434.8" textLength="732" clip-path="url(#terminal-63872827-line-17)">[default:&#160;3.7]&#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;&#160;&#160;& [...]
+</text><text class="terminal-63872827-r4" x="0" y="459.2" textLength="12.2" clip-path="url(#terminal-63872827-line-18)">│</text><text class="terminal-63872827-r5" x="24.4" y="459.2" textLength="12.2" clip-path="url(#terminal-63872827-line-18)">-</text><text class="terminal-63872827-r5" x="36.6" y="459.2" textLength="109.8" clip-path="url(#terminal-63872827-line-18)">-postgres</text><text class="terminal-63872827-r5" x="146.4" y="459.2" textLength="97.6" clip-path="url(#terminal-63872827- [...]
+</text><text class="terminal-63872827-r4" x="0" y="483.6" textLength="12.2" clip-path="url(#terminal-63872827-line-19)">│</text><text class="terminal-63872827-r5" x="24.4" y="483.6" textLength="12.2" clip-path="url(#terminal-63872827-line-19)">-</text><text class="terminal-63872827-r5" x="36.6" y="483.6" textLength="73.2" clip-path="url(#terminal-63872827-line-19)">-mysql</text><text class="terminal-63872827-r5" x="109.8" y="483.6" textLength="97.6" clip-path="url(#terminal-63872827-line [...]
+</text><text class="terminal-63872827-r4" x="0" y="508" textLength="12.2" clip-path="url(#terminal-63872827-line-20)">│</text><text class="terminal-63872827-r5" x="24.4" y="508" textLength="12.2" clip-path="url(#terminal-63872827-line-20)">-</text><text class="terminal-63872827-r5" x="36.6" y="508" textLength="73.2" clip-path="url(#terminal-63872827-line-20)">-mssql</text><text class="terminal-63872827-r5" x="109.8" y="508" textLength="97.6" clip-path="url(#terminal-63872827-line-20)">-v [...]
+</text><text class="terminal-63872827-r4" x="0" y="532.4" textLength="1464" clip-path="url(#terminal-63872827-line-21)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-63872827-r2" x="1464" y="532.4" textLength="12.2" clip-path="url(#terminal-63872827-line-21)">
+</text><text class="terminal-63872827-r4" x="0" y="556.8" textLength="24.4" clip-path="url(#terminal-63872827-line-22)">╭─</text><text class="terminal-63872827-r4" x="24.4" y="556.8" textLength="1415.2" clip-path="url(#terminal-63872827-line-22)">&#160;Advanced&#160;flag&#160;for&#160;tests&#160;command&#160;───────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-63872827-r4" x="1439.6" y="556.8" textLength="24.4" clip-path="url(#te [...]
+</text><text class="terminal-63872827-r4" x="0" y="581.2" textLength="12.2" clip-path="url(#terminal-63872827-line-23)">│</text><text class="terminal-63872827-r5" x="24.4" y="581.2" textLength="12.2" clip-path="url(#terminal-63872827-line-23)">-</text><text class="terminal-63872827-r5" x="36.6" y="581.2" textLength="73.2" clip-path="url(#terminal-63872827-line-23)">-limit</text><text class="terminal-63872827-r5" x="109.8" y="581.2" textLength="195.2" clip-path="url(#terminal-63872827-lin [...]
+</text><text class="terminal-63872827-r4" x="0" y="605.6" textLength="12.2" clip-path="url(#terminal-63872827-line-24)">│</text><text class="terminal-63872827-r5" x="24.4" y="605.6" textLength="12.2" clip-path="url(#terminal-63872827-line-24)">-</text><text class="terminal-63872827-r5" x="36.6" y="605.6" textLength="73.2" clip-path="url(#terminal-63872827-line-24)">-image</text><text class="terminal-63872827-r5" x="109.8" y="605.6" textLength="48.8" clip-path="url(#terminal-63872827-line [...]
+</text><text class="terminal-63872827-r4" x="0" y="630" textLength="12.2" clip-path="url(#terminal-63872827-line-25)">│</text><text class="terminal-63872827-r5" x="24.4" y="630" textLength="12.2" clip-path="url(#terminal-63872827-line-25)">-</text><text class="terminal-63872827-r5" x="36.6" y="630" textLength="73.2" clip-path="url(#terminal-63872827-line-25)">-mount</text><text class="terminal-63872827-r5" x="109.8" y="630" textLength="97.6" clip-path="url(#terminal-63872827-line-25)">-s [...]
+</text><text class="terminal-63872827-r4" x="0" y="654.4" textLength="12.2" clip-path="url(#terminal-63872827-line-26)">│</text><text class="terminal-63872827-r2" x="378.2" y="654.4" textLength="1061.4" clip-path="url(#terminal-63872827-line-26)">selected).&#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;&#160;&#160;&#160;& [...]
+</text><text class="terminal-63872827-r4" x="0" y="678.8" textLength="12.2" clip-path="url(#terminal-63872827-line-27)">│</text><text class="terminal-63872827-r6" x="378.2" y="678.8" textLength="1061.4" clip-path="url(#terminal-63872827-line-27)">(selected&#160;|&#160;all&#160;|&#160;skip&#160;|&#160;remove)&#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;&#1 [...]
+</text><text class="terminal-63872827-r4" x="0" y="703.2" textLength="12.2" clip-path="url(#terminal-63872827-line-28)">│</text><text class="terminal-63872827-r4" x="378.2" y="703.2" textLength="1061.4" clip-path="url(#terminal-63872827-line-28)">[default:&#160;selected]&#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;&#160 [...]
+</text><text class="terminal-63872827-r4" x="0" y="727.6" textLength="1464" clip-path="url(#terminal-63872827-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-63872827-r2" x="1464" y="727.6" textLength="12.2" clip-path="url(#terminal-63872827-line-29)">
+</text><text class="terminal-63872827-r4" x="0" y="752" textLength="24.4" clip-path="url(#terminal-63872827-line-30)">╭─</text><text class="terminal-63872827-r4" x="24.4" y="752" textLength="1415.2" clip-path="url(#terminal-63872827-line-30)">&#160;Common&#160;options&#160;────────────────────────────────────────────────────────────────────────────────────────────────────</text><text class="terminal-63872827-r4" x="1439.6" y="752" textLength="24.4" clip-path="url(#terminal-63872827-line- [...]
+</text><text class="terminal-63872827-r4" x="0" y="776.4" textLength="12.2" clip-path="url(#terminal-63872827-line-31)">│</text><text class="terminal-63872827-r5" x="24.4" y="776.4" textLength="12.2" clip-path="url(#terminal-63872827-line-31)">-</text><text class="terminal-63872827-r5" x="36.6" y="776.4" textLength="48.8" clip-path="url(#terminal-63872827-line-31)">-dry</text><text class="terminal-63872827-r5" x="85.4" y="776.4" textLength="48.8" clip-path="url(#terminal-63872827-line-31 [...]
+</text><text class="terminal-63872827-r4" x="0" y="800.8" textLength="12.2" clip-path="url(#terminal-63872827-line-32)">│</text><text class="terminal-63872827-r5" x="24.4" y="800.8" textLength="12.2" clip-path="url(#terminal-63872827-line-32)">-</text><text class="terminal-63872827-r5" x="36.6" y="800.8" textLength="97.6" clip-path="url(#terminal-63872827-line-32)">-verbose</text><text class="terminal-63872827-r7" x="158.6" y="800.8" textLength="24.4" clip-path="url(#terminal-63872827-li [...]
+</text><text class="terminal-63872827-r4" x="0" y="825.2" textLength="12.2" clip-path="url(#terminal-63872827-line-33)">│</text><text class="terminal-63872827-r5" x="24.4" y="825.2" textLength="12.2" clip-path="url(#terminal-63872827-line-33)">-</text><text class="terminal-63872827-r5" x="36.6" y="825.2" textLength="61" clip-path="url(#terminal-63872827-line-33)">-help</text><text class="terminal-63872827-r7" x="158.6" y="825.2" textLength="24.4" clip-path="url(#terminal-63872827-line-33 [...]
+</text><text class="terminal-63872827-r4" x="0" y="849.6" textLength="1464" clip-path="url(#terminal-63872827-line-34)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text class="terminal-63872827-r2" x="1464" y="849.6" textLength="12.2" clip-path="url(#terminal-63872827-line-34)">
 </text>
     </g>
     </g>
diff --git a/scripts/ci/docker-compose/_docker.env b/scripts/ci/docker-compose/_docker.env
index 97fbe8e288..88c7f4cd77 100644
--- a/scripts/ci/docker-compose/_docker.env
+++ b/scripts/ci/docker-compose/_docker.env
@@ -63,6 +63,7 @@ START_AIRFLOW
 SKIP_CONSTRAINTS
 SKIP_ENVIRONMENT_INITIALIZATION
 SKIP_SSH_SETUP
+TEST_TIMEOUT
 TEST_TYPE
 UPGRADE_TO_NEWER_DEPENDENCIES
 VERBOSE
diff --git a/scripts/ci/docker-compose/base.yml b/scripts/ci/docker-compose/base.yml
index 156b4061b5..7e96c4dd4c 100644
--- a/scripts/ci/docker-compose/base.yml
+++ b/scripts/ci/docker-compose/base.yml
@@ -77,6 +77,7 @@ services:
       - SKIP_ENVIRONMENT_INITIALIZATION=${SKIP_ENVIRONMENT_INITIALIZATION}
       - SKIP_SSH_SETUP=${SKIP_SSH_SETUP}
       - TEST_TYPE=${TEST_TYPE}
+      - TEST_TIMEOUT=${TEST_TIMEOUT}
       - UPGRADE_TO_NEWER_DEPENDENCIES=${UPGRADE_TO_NEWER_DEPENDENCIES}
       - VERBOSE=${VERBOSE}
       - VERBOSE_COMMANDS=${VERBOSE_COMMANDS}
diff --git a/scripts/docker/entrypoint_ci.sh b/scripts/docker/entrypoint_ci.sh
index 8284920a46..c0da2e0aae 100755
--- a/scripts/docker/entrypoint_ci.sh
+++ b/scripts/docker/entrypoint_ci.sh
@@ -65,6 +65,7 @@ if [[ ${SKIP_ENVIRONMENT_INITIALIZATION=} != "true" ]]; then
     RUN_TESTS=${RUN_TESTS:="false"}
     CI=${CI:="false"}
     USE_AIRFLOW_VERSION="${USE_AIRFLOW_VERSION:=""}"
+    TEST_TIMEOUT=${TEST_TIMEOUT:="60"}
 
     if [[ ${USE_AIRFLOW_VERSION} == "" ]]; then
         export PYTHONPATH=${AIRFLOW_SOURCES}
@@ -256,9 +257,9 @@ EXTRA_PYTEST_ARGS=(
     # timeouts in seconds for individual tests
     "--timeouts-order"
     "moi"
-    "--setup-timeout=60"
-    "--execution-timeout=60"
-    "--teardown-timeout=60"
+    "--setup-timeout=${TEST_TIMEOUT}"
+    "--execution-timeout=${TEST_TIMEOUT}"
+    "--teardown-timeout=${TEST_TIMEOUT}"
     # Only display summary for non-expected case
     # f - failed
     # E - error