'The timeout is measured from the time the effect is performed (not from
the time it is created).'

def test_timeout_measured_from_perform(self):

    timeout = 3.0
    time = self.get_time(([0.0] + list(((timeout + i) for i in range(10)))))
    exceptions = [Exception('One    problem')]
    result = object()
    def tester():
        if exceptions:
            raise exceptions.pop()
        return result
    retrier = retry_effect_with_timeout(Effect(Func(tester)), timeout=3, time=time)
    time()
    expected_intents = [(Delay(1), (lambda ignore: None))]
    self.assertThat(perform_sequence(expected_intents, retrier), Is(result))
