浏览代码

Avoid waiting too long for a response after the build completes (#3698)

curl can wait for a long time for a response, potentially forever, so
there was no upper bound on how long each test.is_accepting_requests()
call could take.  Now each call is being limited to 5 seconds.

Also, our "while not accepting requests" loop was intended to wait up to
60 seconds for the app server to start accepting requests, but it was
actually giving it 60 chances to respond to a request, which might take
much longer than 60 seconds.  Now it's really waiting 60 seconds,
approximately.
Michael Hixson 7 年之前
父节点
当前提交
a2e53fdcd2
共有 2 个文件被更改,包括 7 次插入9 次删除
  1. 6 8
      toolset/benchmark/benchmarker.py
  2. 1 1
      toolset/utils/docker_helper.py

+ 6 - 8
toolset/benchmark/benchmarker.py

@@ -145,16 +145,14 @@ class Benchmarker:
                     prefix=log_prefix,
                     file=benchmark_log)
 
-            slept = 0
-            max_sleep = 60
-            accepting_requests = False
-            while not accepting_requests and slept < max_sleep:
-                if not self.docker_helper.server_container_exists(
-                        container.id):
-                    break
+            max_time = time.time() + 60
+            while True:
                 accepting_requests = test.is_accepting_requests()
+                if accepting_requests \
+                        or time.time() >= max_time \
+                        or not self.docker_helper.server_container_exists(container.id):
+                    break
                 time.sleep(1)
-                slept += 1
 
             if not accepting_requests:
                 self.docker_helper.stop([container, database_container])

+ 1 - 1
toolset/utils/docker_helper.py

@@ -339,7 +339,7 @@ class DockerHelper:
         try:
             self.client.containers.run(
                 'techempower/tfb.wrk',
-                'curl %s' % url,
+                'curl --max-time 5 %s' % url,
                 remove=True,
                 log_config={'type': None},
                 network=self.benchmarker.config.network,