You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@aurora.apache.org by "Stephan Erb (JIRA)" <ji...@apache.org> on 2018/02/09 14:26:00 UTC

[jira] [Created] (AURORA-1972) Flapping Excutor HealthChecker Test

Stephan Erb created AURORA-1972:
-----------------------------------

             Summary: Flapping Excutor HealthChecker Test
                 Key: AURORA-1972
                 URL: https://issues.apache.org/jira/browse/AURORA-1972
             Project: Aurora
          Issue Type: Bug
          Components: Executor
            Reporter: Stephan Erb


We currently have a set of flapping HealthChecking test that prevent our builds from passing (e.g. see https://reviews.apache.org/r/65565/).

{code}
                     ==================== FAILURES ====================
                      TestThreadedHealthCheckerWithDefaults.test_run_unhealthy_after_callback

                     self = <apache.aurora.executor.common.test_health_checker.TestThreadedHealthCheckerWithDefaults testMethod=test_run_unhealthy_after_callback>
                     mock_sleep = <MagicMock name='sleep' spec='builtin_function_or_method' id='4598488912'>

                         @mock.patch('apache.aurora.executor.common.health_checker.time.sleep', spec=time.sleep)
                         def test_run_unhealthy_after_callback(self, mock_sleep):
                           mock_sleep.return_value = None
                           health_status = [(True, None), (True, None), (False, 'failure-4'), (False, 'failure-5')]
                           self.health.side_effect = lambda: health_status.pop(0)
                           mock_is_set = mock.Mock(spec=threading._Event.is_set)
                           liveness = [False, False, False, False, True]
                           mock_is_set.side_effect = lambda: liveness.pop(0)
                           self.health_checker.threaded_health_checker.dead.is_set = mock_is_set
                           self.health_checker.threaded_health_checker.run()
                     >     assert mock_sleep.call_count == 4
                     E     AssertionError: assert 9403 == 4
                     E      +  where 9403 = <MagicMock name='sleep' spec='builtin_function_or_method' id='4598488912'>.call_count

                     .pants.d/pyprep/sources/365105c9a0472d6a1d7576426d316fe2aa7dcc77/apache/aurora/executor/common/test_health_checker.py:1292: AssertionError
{code}
Please notice the huge difference between actual and expected calls.



This works as expected:
{code}
./pants --cache-ignore --no-test-pytest-fast test.pytest  src/test/python::
{code}

This triggers the problem with traces as the one posted above:
{code}
./pants --cache-ignore --no-test-pytest-fast test.pytest  src/test/python::
{code}

The flapping seems to be dependent on how pants executes the tests. This seems to have a side effect on how {{time.sleep}} mocking is performed.  

The relevant [test class|https://github.com/apache/aurora/blob/c85bffdd6f68312261697eee868d57069adda434/src/test/python/apache/aurora/executor/common/test_health_checker.py#L1033] and the [failing tests|https://github.com/apache/aurora/blob/c85bffdd6f68312261697eee868d57069adda434/src/test/python/apache/aurora/executor/common/test_health_checker.py#L1265-L1280] in particular are somewhat low-quality as they make heavy use of mocking.

How do we want to proceed here? 




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)