pytest: quiche flakiness

Let nghttpx only use http/1.1 to backend. This reproduces the bug in
quiche with higher frequency. Allow test_14_05 to now return a 400 in
addition to the 431 we get from a h2 backend to nghttpx.

Skip test_05_02 in h3 on quiche not newer than version 0.24.4 in which
its bug is fixed: https://github.com/cloudflare/quiche/pull/2278

Ref: https://github.com/cloudflare/quiche/issues/2277
Closes #19770 (original Issue)
Closes #19916
This commit is contained in:
Stefan Eissing 2025-12-10 11:17:49 +01:00 committed by Viktor Szakats
parent 0b96f7573f
commit 14478429e7
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201
3 changed files with 6 additions and 3 deletions

View file

@ -60,6 +60,9 @@ class TestErrors:
def test_05_02_partial_20(self, env: Env, httpd, nghttpx, proto):
if proto == 'h3' and env.curl_uses_ossl_quic():
pytest.skip("openssl-quic is flaky in yielding proper error codes")
if proto == 'h3' and env.curl_uses_lib('quiche') and \
not env.curl_lib_version_at_least('quiche', '0.24.5'):
pytest.skip("quiche issue #2277 not fixed")
count = 20
curl = CurlClient(env=env)
urln = f'https://{env.authority_for(env.domain1, proto)}' \

View file

@ -107,8 +107,9 @@ class TestAuth:
'--basic', '--user', f'test:{password}',
'--trace-config', 'http/2,http/3'
])
# but apache denies on length limit
r.check_response(http_status=431)
# but apache either denies on length limit or gives a 400
r.check_exit_code(0)
assert r.stats[0]['http_code'] in [400, 431]
# PUT data, basic auth with very large pw
@pytest.mark.parametrize("proto", Env.http_mplx_protos())

View file

@ -247,7 +247,6 @@ class NghttpxQuic(Nghttpx):
'--frontend-quic-early-data',
])
args.extend([
f'--backend=127.0.0.1,{self.env.https_port};{self._domain};sni={self._domain};proto=h2;tls',
f'--backend=127.0.0.1,{self.env.http_port}',
'--log-level=ERROR',
f'--pid-file={self._pid_file}',