Exemple #1
0
    def test_stepdown_permitted_if_permitted_file_exists(self, mock_os_path):
        lifecycle = _stepdown.FileBasedStepdownLifecycle(self.STEPDOWN_FILES)
        lifecycle.mark_test_started()

        def mock_does_permitted_file_exists(filename):
            if filename == "permitted":
                return permitted_file_exists

            return os.path.isfile(filename)

        mock_os_path.isfile = mock_does_permitted_file_exists

        permitted_file_exists = True
        self.assertTrue(lifecycle.wait_for_stepdown_permitted())
Exemple #2
0
    def test_files_cleaned_up_after_test_finishes(self, mock_os_remove):
        lifecycle = _stepdown.FileBasedStepdownLifecycle(self.STEPDOWN_FILES)
        lifecycle.mark_test_started()

        lifecycle.mark_test_finished()
        mock_os_remove.assert_any_call("permitted")
        mock_os_remove.assert_any_call("idle_request")
        mock_os_remove.assert_any_call("idle_ack")

        mock_os_remove.reset_mock()
        mock_os_remove.side_effect = OSError(
            "Pretend that the file wasn't found")

        lifecycle.mark_test_finished()
        mock_os_remove.assert_any_call("permitted")
        mock_os_remove.assert_any_call("idle_request")
        mock_os_remove.assert_any_call("idle_ack")
Exemple #3
0
    def test_waiting_for_stepdown_permitted_is_interruptible(
            self, mock_os_path, MockCondition):  # pylint: disable=invalid-name
        lifecycle = _stepdown.FileBasedStepdownLifecycle(self.STEPDOWN_FILES)
        lifecycle.mark_test_started()

        mock_os_path.isfile.return_value = False

        def call_stop_while_waiting(_timeout):
            lock = _get_threading_lock(self, MockCondition)
            lock.release()
            lifecycle.stop()
            lock.acquire()

        cond = MockCondition.return_value
        cond.wait.side_effect = call_stop_while_waiting

        self.assertFalse(lifecycle.wait_for_stepdown_permitted())
        self.assertTrue(cond.wait.called)
Exemple #4
0
    def test_stepdown_waits_until_permitted_file_exists(
            self, mock_os_path, MockCondition):  # pylint: disable=invalid-name
        lifecycle = _stepdown.FileBasedStepdownLifecycle(self.STEPDOWN_FILES)
        lifecycle.mark_test_started()

        def mock_does_permitted_file_exists(filename):  # pylint: disable=inconsistent-return-statements
            if filename == "permitted":
                return permitted_file_exists[0]

            self.fail("Mock called with unexpected filename: %s" %
                      (filename, ))

        mock_os_path.isfile = mock_does_permitted_file_exists

        def create_permitted_file_while_waiting(_timeout):
            permitted_file_exists[0] = True

        cond = MockCondition.return_value
        cond.wait.side_effect = create_permitted_file_while_waiting

        permitted_file_exists = [False]
        self.assertTrue(lifecycle.wait_for_stepdown_permitted())
        self.assertTrue(cond.wait.called)
Exemple #5
0
 def test_still_idle_after_test_starts(self):
     lifecycle = _stepdown.FileBasedStepdownLifecycle(self.STEPDOWN_FILES)
     lifecycle.mark_test_started()
     self.assertFalse(lifecycle.poll_for_idle_request())