Skip to content

tsan integration test flakes #332

@oschaaf

Description

@oschaaf

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

Metadata

Metadata

Assignees

Labels

P0Highest priority

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions