From 22d8ce1970f067e4c33138942cae3917dd0aa1b0 Mon Sep 17 00:00:00 2001 From: Stefan Eissing Date: Tue, 14 May 2024 12:32:09 +0200 Subject: [PATCH] http tests: in CI skip test_02_23* for quiche For unknown reasons, these tests fail in CI often, but run fine locally. Skip them in CI to avoid unrelated PRs to have failures. Closes #13638 --- tests/http/test_02_download.py | 6 ++++++ tests/http/testenv/curl.py | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/http/test_02_download.py b/tests/http/test_02_download.py index 74f2e1e20f..da652eabd4 100644 --- a/tests/http/test_02_download.py +++ b/tests/http/test_02_download.py @@ -360,6 +360,8 @@ class TestDownload: def test_02_23a_lib_abort_paused(self, env: Env, httpd, nghttpx, proto, repeat): if proto == 'h3' and env.curl_uses_ossl_quic(): pytest.skip('OpenSSL QUIC fails here') + if proto == 'h3' and env.ci_run and env.curl_uses_lib('quiche'): + pytest.skip("fails in CI, but works locally for unknown reasons") if proto in ['h2', 'h3']: count = 200 max_parallel = 100 @@ -387,6 +389,8 @@ class TestDownload: def test_02_23b_lib_abort_offset(self, env: Env, httpd, nghttpx, proto, repeat): if proto == 'h3' and env.curl_uses_ossl_quic(): pytest.skip('OpenSSL QUIC fails here') + if proto == 'h3' and env.ci_run and env.curl_uses_lib('quiche'): + pytest.skip("fails in CI, but works locally for unknown reasons") if proto in ['h2', 'h3']: count = 200 max_parallel = 100 @@ -414,6 +418,8 @@ class TestDownload: def test_02_23c_lib_fail_offset(self, env: Env, httpd, nghttpx, proto, repeat): if proto == 'h3' and env.curl_uses_ossl_quic(): pytest.skip('OpenSSL QUIC fails here') + if proto == 'h3' and env.ci_run and env.curl_uses_lib('quiche'): + pytest.skip("fails in CI, but works locally for unknown reasons") if proto in ['h2', 'h3']: count = 200 max_parallel = 100 diff --git a/tests/http/testenv/curl.py b/tests/http/testenv/curl.py index ad529934ae..2a8dbe09f4 100644 --- a/tests/http/testenv/curl.py +++ b/tests/http/testenv/curl.py @@ -541,11 +541,11 @@ class CurlClient: started_at = datetime.now() exception = None profile = None + started_at = datetime.now() try: with open(self._stdoutfile, 'w') as cout: with open(self._stderrfile, 'w') as cerr: if with_profile: - started_at = datetime.now() end_at = started_at + timedelta(seconds=self._timeout) \ if self._timeout else None log.info(f'starting: {args}') @@ -575,7 +575,10 @@ class CurlClient: timeout=self._timeout) exitcode = p.returncode except subprocess.TimeoutExpired: - log.warning(f'Timeout after {self._timeout}s: {args}') + now = datetime.now() + duration = now - started_at + log.warning(f'Timeout at {now} after {duration.total_seconds()}s ' + f'(configured {self._timeout}s): {args}') exitcode = -1 exception = 'TimeoutExpired' coutput = open(self._stdoutfile).readlines()