summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Bernard <tbernard@go-engineering.de>2020-08-26 20:05:21 (GMT)
committerBrad King <brad.king@kitware.com>2020-08-27 16:09:32 (GMT)
commitbeab8bc29aa9938df3bf90fe5a50f926080765ed (patch)
treece9081e26800c82b29c46401f51179c79ea5f7d6
parentefdd143459dcd5c3bdf873e377e546bafb972cad (diff)
downloadCMake-beab8bc29aa9938df3bf90fe5a50f926080765ed.zip
CMake-beab8bc29aa9938df3bf90fe5a50f926080765ed.tar.gz
CMake-beab8bc29aa9938df3bf90fe5a50f926080765ed.tar.bz2
Tests: Add timeout on the RunCMake.ExternalProject download server
Fixes: #21132
-rw-r--r--Tests/RunCMake/ExternalProject/DownloadServer.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/Tests/RunCMake/ExternalProject/DownloadServer.py b/Tests/RunCMake/ExternalProject/DownloadServer.py
index ac0769f..3738317 100644
--- a/Tests/RunCMake/ExternalProject/DownloadServer.py
+++ b/Tests/RunCMake/ExternalProject/DownloadServer.py
@@ -4,6 +4,7 @@ import time
import subprocess
import sys
import os
+import threading
args = None
outerthread = None
@@ -25,6 +26,13 @@ class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
self.wfile.write(data)
self.close_connection = True
+def runServer(fileName):
+ httpd = HTTPServer(('localhost', 0), SimpleHTTPRequestHandler)
+ with open(fileName,"w") as f:
+ f.write('http://localhost:{}/test'.format(httpd.socket.getsockname()[1]))
+ httpd.handle_request()
+ os.remove(fileName)
+
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--speed_limit', help='transfer rate limitation', action='store_true',default=False)
@@ -35,8 +43,7 @@ if __name__ == "__main__":
if not args.subprocess:
subprocess.Popen([sys.executable]+sys.argv+['--subprocess'],stdin=subprocess.DEVNULL, stderr=subprocess.DEVNULL,stdout=subprocess.DEVNULL)
else:
- httpd = HTTPServer(('localhost', 0), SimpleHTTPRequestHandler)
- with open(args.file,"w") as f:
- f.write('http://localhost:{}/test'.format(httpd.socket.getsockname()[1]))
- httpd.handle_request()
- os.remove(args.file)
+ serverThread = threading.Thread(target=runServer,args=(args.file,))
+ serverThread.daemon = True
+ serverThread.start()
+ serverThread.join(15)