]> granicus.if.org Git - esp-idf/commitdiff
tiny-test-fw: fix incorrect wait timeout in expect
authorHe Yin Ling <heyinling@espressif.com>
Thu, 21 Jun 2018 08:38:46 +0000 (16:38 +0800)
committerbot <bot@espressif.com>
Fri, 13 Jul 2018 07:04:05 +0000 (07:04 +0000)
tools/tiny-test-fw/DUT.py

index 652a6247d2934bbb82f30cfbcb5a6c60aa1d9f2f..32210f409083e4a1eb0221377cc70b3eb4a143d5 100644 (file)
@@ -444,11 +444,14 @@ class BaseDUT(object):
         start_time = time.time()
         while True:
             ret, index = method(data, pattern)
-            if ret is not None or time.time() - start_time > timeout:
+            if ret is not None:
                 self.data_cache.flush(index)
                 break
+            time_remaining = start_time + timeout - time.time()
+            if time_remaining < 0:
+                break
             # wait for new data from cache
-            data = self.data_cache.get_data(time.time() + timeout - start_time)
+            data = self.data_cache.get_data(time_remaining)
 
         if ret is None:
             pattern = _pattern_to_string(pattern)
@@ -501,10 +504,11 @@ class BaseDUT(object):
             else:
                 match_succeed = True if matched_expect_items else False
 
-            if time.time() - start_time > timeout or match_succeed:
+            time_remaining = start_time + timeout - time.time()
+            if time_remaining < 0 or match_succeed:
                 break
             else:
-                data = self.data_cache.get_data(time.time() + timeout - start_time)
+                data = self.data_cache.get_data(time_remaining)
 
         if match_succeed:
             # do callback and flush matched data cache