Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion graalpython/com.oracle.graal.python.test/src/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -1310,7 +1310,7 @@ def _recv(self, size):
while len(data) < size:
read = self.socket.recv(size - len(data))
if not read:
return data
raise ConnectionClosed
data += read
return data

Expand Down
10 changes: 9 additions & 1 deletion graalpython/lib-python/3/test/test_docxmlrpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

support.requires_working_socket(module=True)

# Begin: GraalPy change
SERVER_TIMEOUT = support.LOOPBACK_TIMEOUT
# End: GraalPy Change

def make_request_and_skipIf(condition, reason):
# If we skip the test, we have to make a request because
# the server created in setUp blocks expecting one to come in.
Expand Down Expand Up @@ -85,7 +89,11 @@ def tearDown(self):
# Disable server feedback
DocXMLRPCServer._send_traceback_header = False
self.serv.shutdown()
self.thread.join()
# Begin: GraalPy change
# self.thread.join()
self.thread.join(SERVER_TIMEOUT)
self.assertFalse(self.thread.is_alive(), "DocXMLRPC server thread did not stop")
# End: GraalPy Change
self.serv.server_close()

def test_valid_get_response(self):
Expand Down
22 changes: 20 additions & 2 deletions graalpython/lib-python/3/test/test_httpservers.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@

support.requires_working_socket(module=True)

# Begin: GraalPy change
SERVER_TIMEOUT = support.LOOPBACK_TIMEOUT
# End: GraalPy Change

class NoLogRequestHandler:
def log_message(self, *args):
# don't write log messages to stderr
Expand Down Expand Up @@ -63,7 +67,12 @@ def run(self):

def stop(self):
self.server.shutdown()
self.join()
# Begin: GraalPy change
# self.join()
self.join(SERVER_TIMEOUT)
if self.is_alive():
raise AssertionError("HTTP server thread did not stop")
# End: GraalPy Change


class BaseTestCase(unittest.TestCase):
Expand All @@ -73,7 +82,10 @@ def setUp(self):
self.server_started = threading.Event()
self.thread = TestServerThread(self, self.request_handler)
self.thread.start()
self.server_started.wait()
# Begin: GraalPy change
# self.server_started.wait()
self.assertTrue(self.server_started.wait(SERVER_TIMEOUT), "HTTP server did not start")
# End: GraalPy Change

def tearDown(self):
self.thread.stop()
Expand Down Expand Up @@ -322,7 +334,13 @@ class request_handler(BaseHTTPRequestHandler):

def do_GET(self):
self.send_response(HTTPStatus.OK)
# Begin: GraalPy change
# self.end_headers()
self.send_header('Content-Length', '0')
self.send_header('Connection', 'close')
self.end_headers()
self.close_connection = True
# End: GraalPy Change

def do_ERROR(self):
self.send_error(HTTPStatus.NOT_FOUND, 'File not found')
Expand Down
62 changes: 56 additions & 6 deletions graalpython/lib-python/3/test/test_xmlrpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -313,12 +313,19 @@ def test_ssl_presence(self):
has_ssl = False
else:
has_ssl = True
# Begin: GraalPy change
old_timeout = socket.getdefaulttimeout()
try:
# xmlrpc.client.ServerProxy('https://localhost:9999').bad_function()
socket.setdefaulttimeout(SSL_PROBE_TIMEOUT)
xmlrpc.client.ServerProxy('https://localhost:9999').bad_function()
except NotImplementedError:
self.assertFalse(has_ssl, "xmlrpc client's error with SSL support")
except OSError:
self.assertTrue(has_ssl)
finally:
socket.setdefaulttimeout(old_timeout)
# End: GraalPy Change

def test_keepalive_disconnect(self):
class RequestHandler(http.server.BaseHTTPRequestHandler):
Expand Down Expand Up @@ -599,6 +606,10 @@ def test_decode(self):


ADDR = PORT = URL = None
# Begin: GraalPy change
SERVER_TIMEOUT = support.LOOPBACK_TIMEOUT
SSL_PROBE_TIMEOUT = 1.0
# End: GraalPy Change

# The evt is set twice. First when the server is ready to serve.
# Second when the server has been shutdown. The user must clear
Expand Down Expand Up @@ -630,6 +641,9 @@ def get_request(self):
serv = MyXMLRPCServer(("localhost", 0), requestHandler,
encoding=encoding,
logRequests=False, bind_and_activate=False)
# Begin: GraalPy change
serv.socket.settimeout(SERVER_TIMEOUT)
# End: GraalPy Change
try:
serv.server_bind()
global ADDR, PORT, URL
Expand Down Expand Up @@ -785,16 +799,34 @@ def setUp(self):
# start server thread to handle requests
serv_args = (self.evt, self.request_count, self.requestHandler)
thread = threading.Thread(target=self.threadFunc, args=serv_args)
# Begin: GraalPy change
self.thread = thread
# End: GraalPy Change
thread.start()
self.addCleanup(thread.join)
# Begin: GraalPy change
# self.addCleanup(thread.join)
self.addCleanup(self._join_server_thread)
# End: GraalPy Change

# wait for the server to be ready
self.evt.wait()
# Begin: GraalPy change
# self.evt.wait()
self.assertTrue(self.evt.wait(SERVER_TIMEOUT), "XML-RPC server did not start")
# End: GraalPy Change
self.evt.clear()

# Begin: GraalPy change
def _join_server_thread(self):
self.thread.join(SERVER_TIMEOUT)
self.assertFalse(self.thread.is_alive(), "XML-RPC server thread did not stop")
# End: GraalPy Change

def tearDown(self):
# wait on the server thread to terminate
self.evt.wait()
# Begin: GraalPy change
# self.evt.wait()
self.assertTrue(self.evt.wait(SERVER_TIMEOUT), "XML-RPC server did not stop")
# End: GraalPy Change

# disable traceback reporting
xmlrpc.server.SimpleXMLRPCServer._send_traceback_header = False
Expand Down Expand Up @@ -1339,16 +1371,34 @@ def setUp(self):
# start server thread to handle requests
serv_args = (self.evt, 1)
thread = threading.Thread(target=http_server, args=serv_args)
# Begin: GraalPy change
self.thread = thread
# End: GraalPy Change
thread.start()
self.addCleanup(thread.join)
# Begin: GraalPy change
# self.addCleanup(thread.join)
self.addCleanup(self._join_server_thread)
# End: GraalPy Change

# wait for the server to be ready
self.evt.wait()
# Begin: GraalPy change
# self.evt.wait()
self.assertTrue(self.evt.wait(SERVER_TIMEOUT), "XML-RPC server did not start")
# End: GraalPy Change
self.evt.clear()

# Begin: GraalPy change
def _join_server_thread(self):
self.thread.join(SERVER_TIMEOUT)
self.assertFalse(self.thread.is_alive(), "XML-RPC server thread did not stop")
# End: GraalPy Change

def tearDown(self):
# wait on the server thread to terminate
self.evt.wait()
# Begin: GraalPy change
# self.evt.wait()
self.assertTrue(self.evt.wait(SERVER_TIMEOUT), "XML-RPC server did not stop")
# End: GraalPy Change
# reset flag
xmlrpc.server.SimpleXMLRPCServer._send_traceback_header = False
# reset message class
Expand Down
Loading