Skip to content
Snippets Groups Projects
Commit ddc8a824 authored by Craig Tiller's avatar Craig Tiller
Browse files

Fix port server on Windows

parent 20f2c431
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python
#!/usr/bin/env python2.7
# Copyright 2015, Google Inc.
# All rights reserved.
#
......@@ -30,8 +30,6 @@
"""Manage TCP ports for unit tests; started by run_tests.py"""
from __future__ import print_function
import argparse
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
import hashlib
......@@ -42,6 +40,7 @@ import time
import random
from SocketServer import ThreadingMixIn
import threading
import platform
# increment this number whenever making a change to ensure that
......@@ -51,7 +50,7 @@ _MY_VERSION = 19
if len(sys.argv) == 2 and sys.argv[1] == 'dump_version':
print(_MY_VERSION)
print _MY_VERSION
sys.exit(0)
......@@ -67,13 +66,16 @@ if args.logfile is not None:
sys.stderr = open(args.logfile, 'w')
sys.stdout = sys.stderr
print('port server running on port %d' % args.port)
print 'port server running on port %d' % args.port
pool = []
in_use = {}
mu = threading.Lock()
def can_connect(port):
# this test is only really useful on unices where SO_REUSE_PORT is available
# so on Windows, where this test is expensive, skip it
if platform.system() == 'Windows': return False
s = socket.socket()
try:
s.connect(('localhost', port))
......@@ -137,7 +139,7 @@ keep_running = True
class Handler(BaseHTTPRequestHandler):
def setup(self):
# If the client is unreachable for 5 seconds, close the connection
self.timeout = 5
......@@ -195,6 +197,4 @@ class Handler(BaseHTTPRequestHandler):
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
"""Handle requests in a separate thread"""
ThreadedHTTPServer(('', args.port), Handler).serve_forever()
......@@ -27,9 +27,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from __future__ import print_function
from six.moves import urllib
import urllib
import jobset
import logging
import os
......@@ -50,9 +48,9 @@ def start_port_server():
# otherwise, leave it up
try:
version = int(
urllib.request.urlopen(
'http://localhost:%d/version_number' % _PORT_SERVER_PORT,
timeout=10).read())
urllib.urlopen(
'http://localhost:%d/version_number' %
_PORT_SERVER_PORT).read())
logging.info('detected port server running version %d', version)
running = True
except Exception as e:
......@@ -69,8 +67,8 @@ def start_port_server():
running = (version >= current_version)
if not running:
logging.info('port_server version mismatch: killing the old one')
urllib.request.urlopen('http://localhost:%d/quitquitquit' %
_PORT_SERVER_PORT).read()
urllib.urlopen('http://localhost:%d/quitquitquit' %
_PORT_SERVER_PORT).read()
time.sleep(1)
if not running:
fd, logfile = tempfile.mkstemp()
......@@ -109,9 +107,8 @@ def start_port_server():
# try one final time: maybe another build managed to start one
time.sleep(1)
try:
urllib.request.urlopen(
'http://localhost:%d/get' % _PORT_SERVER_PORT,
timeout=1).read()
urllib.urlopen(
'http://localhost:%d/get' % _PORT_SERVER_PORT).read()
logging.info(
'last ditch attempt to contact port server succeeded')
break
......@@ -119,18 +116,18 @@ def start_port_server():
logging.exception(
'final attempt to contact port server failed')
port_log = open(logfile, 'r').read()
print(port_log)
print port_log
sys.exit(1)
try:
port_server_url = 'http://localhost:%d/get' % _PORT_SERVER_PORT
urllib.request.urlopen(port_server_url, timeout=1).read()
urllib.urlopen(port_server_url).read()
logging.info('port server is up and ready')
break
except socket.timeout:
logging.exception('while waiting for port_server')
time.sleep(1)
waits += 1
except urllib.error.URLError:
except IOError:
logging.exception('while waiting for port_server')
time.sleep(1)
waits += 1
......
#!/usr/bin/env python
#!/usr/bin/env python2.7
# Copyright 2017, Google Inc.
# All rights reserved.
......@@ -39,10 +39,8 @@ The path to this file is called out in test/core/util/port.c, and printed as
an error message to users.
"""
from __future__ import print_function
import python_utils.start_port_server as start_port_server
start_port_server.start_port_server()
print("Port server started successfully")
print "Port server started successfully"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment