Procházet zdrojové kódy

Stress tests: Adds some debugging when join times out

Ask Solem před 11 roky
rodič
revize
82eaf90759
1 změnil soubory, kde provedl 10 přidání a 3 odebrání
  1. 10 3
      funtests/stress/stress/suite.py

+ 10 - 3
funtests/stress/stress/suite.py

@@ -2,6 +2,7 @@ from __future__ import absolute_import, print_function, unicode_literals
 
 
 import platform
 import platform
 import random
 import random
+import socket
 
 
 from collections import namedtuple
 from collections import namedtuple
 from itertools import count
 from itertools import count
@@ -130,7 +131,7 @@ class Suite(object):
         )
         )
 
 
     def manyshort(self):
     def manyshort(self):
-        self.join(group(add.s(i, i) for i in range(1000))(), propagate=True)
+        self.join(group(add.s(i, i) for i in range(1000))(), timeout=10, propagate=True)
 
 
     def runtest(self, fun, n=50, index=0, repeats=1):
     def runtest(self, fun, n=50, index=0, repeats=1):
         with blockdetection(self.block_timeout):
         with blockdetection(self.block_timeout):
@@ -217,10 +218,16 @@ class Suite(object):
         return [res.id for res in r if res.id not in res.backend._cache]
         return [res.id for res in r if res.id not in res.backend._cache]
 
 
     def join(self, r, propagate=False, **kwargs):
     def join(self, r, propagate=False, **kwargs):
+        received = [0]
+
+        def on_result(task_id, value):
+            received[0] += 1
+
         while 1:
         while 1:
             try:
             try:
-                return r.get(propagate=propagate, **kwargs)
-            except TimeoutError as exc:
+                return r.get(callback=on_result, propagate=propagate, **kwargs)
+            except (socket.timeout, TimeoutError) as exc:
+                print('RECEIVED {0}/{0}'.format(received[0], len(r)))
                 marker(
                 marker(
                     'Still waiting for {0!r}: {1!r}'.format(
                     'Still waiting for {0!r}: {1!r}'.format(
                         self.missing_results(r), exc), '!')
                         self.missing_results(r), exc), '!')