def testTransmitIntentRetryTiming(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) now = datetime.now() if patch: with patch('thespian.system.transport.datetime') as p_datetime: p_datetime.now.return_value = now ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) assert not ti.timeToRetry() p_datetime.datetime.now.return_value = now + period assert not ti.timeToRetry() assert ti.retry() assert not ti.timeToRetry() p_datetime.now.return_value = now + period + period assert ti.timeToRetry() assert ti.retry() assert not ti.timeToRetry() p_datetime.now.return_value = now + (3 * period) assert not ti.timeToRetry() # Each retry increases p_datetime.now.return_value = now + (4 * period) assert ti.timeToRetry() assert not ti.retry() # Exceeds maximum time
def testTransmitIntentRetryTiming(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) now = 0.01 timepad = timedelta(microseconds=10) # avoid float imprecision with update_elapsed_time(now, timedelta(0)): ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) assert not ti.timeToRetry() with update_elapsed_time(now, period + timepad): assert not ti.timeToRetry() assert ti.retry() assert not ti.timeToRetry() with update_elapsed_time(now, period + period + timepad): assert ti.timeToRetry() assert ti.retry() assert not ti.timeToRetry() with update_elapsed_time(now, period * 3 + timepad): assert not ti.timeToRetry() # Each retry increases with update_elapsed_time(now, period * 4 + timepad): assert ti.timeToRetry() assert not ti.retry() # Exceeds maximum time
def testTransmitIntentRetryTimingExceedsLimit(self): maxPeriod = timedelta(seconds=90) period = timedelta(microseconds=1) now = 1.23 timepad = timedelta(microseconds=10) # avoid float imprecision with update_elapsed_time(now, timedelta(0)): ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) assert not ti.timeToRetry() timeoffset = timedelta(0) for N in range(MAX_TRANSMIT_RETRIES + 1): # Indicate "failure" and the need to retry with update_elapsed_time(now, timeoffset + timepad): assert ti.retry() # Wait for the indication that it is time to retry time_to_retry = False for x in range(90): with update_elapsed_time(now, timeoffset + timepad): # Only call timeToRetry once, because it auto-resets time_to_retry = ti.timeToRetry() if time_to_retry: break timeoffset += (period + (period / 2)) # = period * 1.5, but python2 cannot multiply # timedelta by fractions. assert time_to_retry with update_elapsed_time(now, timeoffset + timepad): assert not ti.retry()
def testTransmitIntentRetryTimingExceedsLimit(self): maxPeriod = timedelta(seconds=90) period = timedelta(microseconds=1) now = datetime.now() if patch: with patch('thespian.system.transport.datetime') as p_datetime: p_datetime.now.return_value = now ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) assert not ti.timeToRetry() for N in range(MAX_TRANSMIT_RETRIES + 1): # Indicate "failure" and the need to retry assert ti.retry() # Wait for the indication that it is time to retry time_to_retry = False for x in range(90): # Only call timeToRetry once, because it auto-resets time_to_retry = ti.timeToRetry() if time_to_retry: break p_datetime.now.return_value += period * 1.5 assert time_to_retry assert not ti.retry()
def testTransmitIntentRetryTiming(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) now = 0.01 timepad = timedelta(microseconds=10) # avoid float imprecision with update_elapsed_time(now, timedelta(0)): ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) assert not ti.timeToRetry() with update_elapsed_time(now, period + timepad): assert not ti.timeToRetry() assert ti.retry() assert not ti.timeToRetry() with update_elapsed_time(now, period + period + timepad): assert ti.timeToRetry() assert ti.retry() assert not ti.timeToRetry() with update_elapsed_time(now, period * 3 + timepad): assert not ti.timeToRetry() # Each retry increases with update_elapsed_time(now, period * 4 + timepad): assert ti.timeToRetry() assert not ti.retry() # Exceeds maximum time
def testTransmitIntentRetryTimingExceedsLimit(self): maxPeriod = timedelta(seconds=90) period = timedelta(microseconds=1) now = 1.23 timepad = timedelta(microseconds=10) # avoid float imprecision with update_elapsed_time(now, timedelta(0)): ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) assert not ti.timeToRetry() timeoffset = timedelta(0) for N in range(MAX_TRANSMIT_RETRIES+1): # Indicate "failure" and the need to retry with update_elapsed_time(now, timeoffset + timepad): assert ti.retry() # Wait for the indication that it is time to retry time_to_retry = False for x in range(90): with update_elapsed_time(now, timeoffset + timepad): # Only call timeToRetry once, because it auto-resets time_to_retry = ti.timeToRetry() if time_to_retry: break timeoffset += (period + (period / 2)) # = period * 1.5, but python2 cannot multiply # timedelta by fractions. assert time_to_retry with update_elapsed_time(now, timeoffset + timepad): assert not ti.retry()
def testTransmitIntentRetryDelay(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) ti.retry() delay = ti.delay() self.assertGreater(delay, timedelta(milliseconds=28)) self.assertLess(delay, timedelta(milliseconds=31))
def testTransmitIntentRetryDelay(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) ti.retry() delay = ti.delay() assert delay > timedelta(milliseconds=28) assert delay < timedelta(milliseconds=31)
def testTransmitIntentRetryDelay(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) ti.retry() delay = ti.delay() assert delay > timedelta(milliseconds=28) assert delay < timedelta(milliseconds=31)
def testTransmitIntentRetryDelay(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) ti.retry() delay = ti.delay() self.assertGreater(delay, timedelta(milliseconds=28)) self.assertLess(delay, timedelta(milliseconds=31))
def testTransmitIntentRetryTimingExceedsLimit(self): maxPeriod = timedelta(seconds=90) period = timedelta(microseconds=1) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) self.assertFalse(ti.timeToRetry()) for N in range(MAX_TRANSMIT_RETRIES+1): self.assertTrue(ti.retry()) for x in range(90): if ti.timeToRetry(): break sleep(timePeriodSeconds(period)) self.assertTrue(ti.timeToRetry()) self.assertFalse(ti.retry())
def testTransmitIntentRetryTimingExceedsLimit(self): maxPeriod = timedelta(seconds=90) period = timedelta(microseconds=1) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) self.assertFalse(ti.timeToRetry()) for N in range(MAX_TRANSMIT_RETRIES + 1): self.assertTrue(ti.retry()) for x in range(90): if ti.timeToRetry(): break sleep(timePeriodSeconds(period)) self.assertTrue(ti.timeToRetry()) self.assertFalse(ti.retry())
def testTransmitIntentRetryTimingExceedsLimit(self): maxPeriod = timedelta(seconds=90) period = timedelta(microseconds=1) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) self.assertFalse(ti.timeToRetry()) for N in range(MAX_TRANSMIT_RETRIES+1): # Indicate "failure" and the need to retry self.assertTrue(ti.retry()) # Wait for the indication that it is time to retry time_to_retry = False for x in range(90): # Only call timeToRetry once, because it auto-resets time_to_retry = ti.timeToRetry() if time_to_retry: break sleep(timePeriodSeconds(period) * 1.5) self.assertTrue(time_to_retry) self.assertFalse(ti.retry())
def testTransmitIntentRetryTiming(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) self.assertFalse(ti.timeToRetry()) sleep(timePeriodSeconds(period)) self.assertFalse(ti.timeToRetry()) self.assertTrue(ti.retry()) self.assertFalse(ti.timeToRetry()) sleep(timePeriodSeconds(period)) self.assertTrue(ti.timeToRetry()) self.assertTrue(ti.retry()) self.assertFalse(ti.timeToRetry()) sleep(timePeriodSeconds(period)) self.assertFalse(ti.timeToRetry()) # Each retry increases sleep(timePeriodSeconds(period)) self.assertTrue(ti.timeToRetry()) self.assertFalse(ti.retry()) # Exceeds maximum time
def testTransmitIntentRetryTiming(self): maxPeriod = timedelta(milliseconds=90) period = timedelta(milliseconds=30) ti = TransmitIntent('addr', 'msg', maxPeriod=maxPeriod, retryPeriod=period) self.assertFalse(ti.timeToRetry()) sleep(timePeriodSeconds(period)) self.assertFalse(ti.timeToRetry()) self.assertTrue(ti.retry()) self.assertFalse(ti.timeToRetry()) sleep(timePeriodSeconds(period)) self.assertTrue(ti.timeToRetry()) self.assertTrue(ti.retry()) self.assertFalse(ti.timeToRetry()) sleep(timePeriodSeconds(period)) self.assertFalse(ti.timeToRetry()) # Each retry increases sleep(timePeriodSeconds(period)) self.assertTrue(ti.timeToRetry()) self.assertFalse(ti.retry()) # Exceeds maximum time
def testTransmitIntentRetry(self): ti = TransmitIntent('addr', 'msg') for x in range(MAX_TRANSMIT_RETRIES+1): self.assertTrue(ti.retry()) self.assertFalse(ti.retry())
def testTransmitIntentRetry(self): ti = TransmitIntent('addr', 'msg') for x in range(MAX_TRANSMIT_RETRIES + 1): self.assertTrue(ti.retry()) self.assertFalse(ti.retry())
def testTransmitIntentRetry(self): ti = TransmitIntent('addr', 'msg') for x in range(MAX_TRANSMIT_RETRIES + 1): assert ti.retry() assert not ti.retry()
def testTransmitIntentRetry(self): ti = TransmitIntent('addr', 'msg') for x in range(MAX_TRANSMIT_RETRIES+1): assert ti.retry() assert not ti.retry()