This is an automated email from the ASF dual-hosted git repository.

kamilbregula pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 4f9b097  Patch `utcnow` in retry delay test (#18343)
4f9b097 is described below

commit 4f9b09729169c9fdf59efd78de68025a49fa2ac6
Author: Edward Wang <40527812+edwardwang...@users.noreply.github.com>
AuthorDate: Fri Oct 1 01:57:39 2021 -0700

    Patch `utcnow` in retry delay test (#18343)
    
    * Remove sleep from retry delay test
    
    * Change to use freezegun
    
    * Approximate smallest timedelta without numpy
    
    * Use pre-defined smallest timedelta
    
    It turns out `datetime.datetime.resolution` is already defined as the 
smallest possible timedelta (one microsecond). Attempting to create a timedelta 
with microseconds in the interval (0.5, 1) simply results in microseconds being 
rounded up to 1.
---
 tests/models/test_taskinstance.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/tests/models/test_taskinstance.py 
b/tests/models/test_taskinstance.py
index 313cfd0..4f7d3f9 100644
--- a/tests/models/test_taskinstance.py
+++ b/tests/models/test_taskinstance.py
@@ -19,7 +19,6 @@
 import datetime
 import os
 import signal
-import time
 import urllib
 from tempfile import NamedTemporaryFile
 from typing import List, Optional, Union, cast
@@ -489,7 +488,8 @@ class TestTaskInstance:
         assert ti.next_kwargs is None
         assert ti.state == State.UP_FOR_RETRY
 
-    def test_retry_delay(self, dag_maker):
+    @freeze_time('2021-09-19 04:56:35', as_kwarg='frozen_time')
+    def test_retry_delay(self, dag_maker, frozen_time=None):
         """
         Test that retry delays are respected
         """
@@ -517,11 +517,12 @@ class TestTaskInstance:
         assert ti.try_number == 2
 
         # second run -- still up for retry because retry_delay hasn't expired
+        frozen_time.tick(delta=datetime.timedelta(seconds=3))
         run_with_error(ti)
         assert ti.state == State.UP_FOR_RETRY
 
         # third run -- failed
-        time.sleep(3)
+        frozen_time.tick(delta=datetime.datetime.resolution)
         run_with_error(ti)
         assert ti.state == State.FAILED
 

Reply via email to