Browse Source

[trac420] Try not to timeout on slow machines

Some of our built machines time out, for two possible reasons:
* They have long buffer before they start blocking. Therefore the amount
  of data sent is increased.
* They have clock with low precision, so if now - last_sent > 0.1:
  happens after a long time. So the timeout waiting for that was
  increased.
Michal 'vorner' Vaner 14 years ago
parent
commit
acc6a3ab37
1 changed files with 10 additions and 4 deletions
  1. 10 4
      src/bin/msgq/tests/msgq_test.py

+ 10 - 4
src/bin/msgq/tests/msgq_test.py

@@ -117,7 +117,7 @@ class SendNonblock(unittest.TestCase):
     Tests that the whole thing will not get blocked if someone does not read.
     Tests that the whole thing will not get blocked if someone does not read.
     """
     """
 
 
-    def terminate_check(self, task, timeout = 1):
+    def terminate_check(self, task, timeout = 10):
         """
         """
         Runs task in separate process (task is a function) and checks
         Runs task in separate process (task is a function) and checks
         it terminates sooner than timeout.
         it terminates sooner than timeout.
@@ -161,16 +161,22 @@ class SendNonblock(unittest.TestCase):
         Tries sending messages (and not reading them) until it either times
         Tries sending messages (and not reading them) until it either times
         out (in blocking call, wrong) or closes it (correct).
         out (in blocking call, wrong) or closes it (correct).
         """
         """
+        data = "data"
+        for i in range(1, 10):
+            data += data
         self.terminate_check(lambda: self.infinite_sender(
         self.terminate_check(lambda: self.infinite_sender(
-            lambda msgq, socket: msgq.sendmsg(socket, {}, {"message" : "x"})))
+            lambda msgq, socket: msgq.sendmsg(socket, {}, {"message" : data})))
 
 
     def test_infinite_sendprepared(self):
     def test_infinite_sendprepared(self):
         """
         """
         Tries sending data (and not reading them) until it either times
         Tries sending data (and not reading them) until it either times
         out (in blocking call, wrong) or closes it (correct).
         out (in blocking call, wrong) or closes it (correct).
         """
         """
+        data = b"data"
+        for i in range(1, 10):
+            data += data
         self.terminate_check(lambda: self.infinite_sender(
         self.terminate_check(lambda: self.infinite_sender(
-            lambda msgq, socket: msgq.send_prepared_msg(socket, b"data")))
+            lambda msgq, socket: msgq.send_prepared_msg(socket, data)))
 
 
     def send_many(self, data):
     def send_many(self, data):
         """
         """
@@ -189,7 +195,7 @@ class SendNonblock(unittest.TestCase):
             length = len(data)
             length = len(data)
             queue_pid = os.fork()
             queue_pid = os.fork()
             if queue_pid == 0:
             if queue_pid == 0:
-                signal.alarm(10)
+                signal.alarm(30)
                 msgq.register_socket(queue)
                 msgq.register_socket(queue)
                 msgq.run()
                 msgq.run()
             else:
             else: