Beispiel #1
0
def test_retryable__once_but_different():
    real_method = mock.Mock(side_effect=[NotImplementedError, 42])
    f = util.retryable(real_method, ValueError)

    with assert_raises(NotImplementedError):
        f(202, '03')

    real_method.assert_called_once_with(202, '03')
Beispiel #2
0
def test_retryable__once():
    real_method = mock.Mock(side_effect=[ValueError, 42])
    f = util.retryable(real_method, ValueError)

    assert f(202, '03') == 42

    assert real_method.call_count == 2
    real_method.assert_called_with(202, '03')
Beispiel #3
0
def test_retryable__twice_error():
    real_method = mock.Mock(side_effect=[ValueError, ValueError, 42])
    f = util.retryable(real_method, ValueError)

    with assert_raises(ValueError):
        f(202, '03')

    assert real_method.call_count == 2
    real_method.assert_called_with(202, '03')
Beispiel #4
0
def test_retryable__different_errors_still_working():
    real_method = mock.Mock(side_effect=[NotImplementedError, ValueError, 42])
    f = util.retryable(real_method, (ValueError, NotImplementedError),
                       retry_count=2)

    assert f(202, '03') == 42

    assert real_method.call_count == 3
    real_method.assert_called_with(202, '03')
Beispiel #5
0
def test_retryable__twice_error_still_working():
    callback_method = mock.Mock()
    real_method = mock.Mock(side_effect=[ValueError, ValueError, 42])
    f = util.retryable(real_method,
                       ValueError,
                       retry_count=2,
                       callback=callback_method)

    assert f(202, '03') == 42

    assert real_method.call_count == 3
    assert callback_method.call_count == 2
    real_method.assert_called_with(202, '03')
Beispiel #6
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field_name in self.FAILABLE_SYNC_METHODS:
            setattr(
                self,
                field_name,
                retryable(
                    getattr(super(), field_name),
                    expected_exception=Exception,
                    callback=self._retry_callback
                )
            )

        for field_name in self.FAILABLE_GENERATOR_METHODS:
            setattr(
                self,
                field_name,
                retryable_generator(
                    getattr(super(), field_name),
                    expected_exception=Exception,
                    callback=self._retry_callback
                )
            )