Some of the end-to-end integration tests flake under ASAN/TSAN.
Pasting an example [1]:
It is hard to get the end-to-end tests stable when execution is slowed down to
an order of magnitude, as we cannot rely on simulated time like we do in the c++
tests.
Options that I can come up with to resolve:
- Loosen expectations for sanitizer-enabled runs of the integration tests. This would
allow the sanitizers to still catch issues for the code that these tests hit.
- Allow tests to be retried a certain amount of time in santitizer-enabled runs
- Disable tests in sanitizer runs. This seems like a bad option: even though expectations
aren't met, there is still value in the sanitizers observation of the code that gets hit (and
any issues they observe).
[gw3] [ 41%] FAILED ../../../../../../../../../../../../../../../root/project/test/integration/test_integration_basics.py::test_https_h1_tls_context_configuration[IpVersion.IPV4]
=================================== FAILURES ===================================
___________ test_https_h1_tls_context_configuration[IpVersion.IPV4] ____________
[gw3] linux -- Python 3.5.2 /usr/bin/python3
https_test_server_fixture = <test.integration.integration_test_fixtures.HttpsIntegrationTestBase object at 0x7fe1ccca6908>
def test_https_h1_tls_context_configuration(https_test_server_fixture):
"""
Verifies specifying tls cipher suites works with the h1 pool
"""
> _do_tls_configuration_test(https_test_server_fixture, "--tls-context", use_h2=False)
https_test_server_fixture = <test.integration.integration_test_fixtures.HttpsIntegrationTestBase object at 0x7fe1ccca6908>
/root/project/test/integration/test_integration_basics.py:314:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/root/project/test/integration/test_integration_basics.py:307: in _do_tls_configuration_test
assertCounterEqual(counters, "ssl.ciphers.%s" % cipher, 1)
test/integration/utility.py:35: in assertCounterEqual
assertEqual(counters[name], value)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = 2, b = 1
def assertEqual(a, b):
> assert a == b
E AssertionError
a = 2
b = 1
Some of the end-to-end integration tests flake under ASAN/TSAN.
Pasting an example [1]:
It is hard to get the end-to-end tests stable when execution is slowed down to
an order of magnitude, as we cannot rely on simulated time like we do in the c++
tests.
Options that I can come up with to resolve:
allow the sanitizers to still catch issues for the code that these tests hit.
aren't met, there is still value in the sanitizers observation of the code that gets hit (and
any issues they observe).