aboutsummaryrefslogtreecommitdiff
path: root/tests/runner.py
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-03-25 18:03:02 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-03-25 18:03:02 -0700
commit926a1f21a06442dbcabfce97fef2257641b5c13c (patch)
treef257237389f7052518dfb6229058a43eac2d716d /tests/runner.py
parent5cedd415bd1b379f96af4e2487b75fecc407759a (diff)
parent1fecc4b3072c6a0cfef5c629f50cbaa647ea98b1 (diff)
Merge pull request #898 from MichaelRiss/selectFix
select function: return error condition when network connection fails
Diffstat (limited to 'tests/runner.py')
-rwxr-xr-xtests/runner.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/runner.py b/tests/runner.py
index b0338855..a3c74f03 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -11862,6 +11862,71 @@ elif 'browser' in str(sys.argv):
finally:
self.clean_pids()
+ def test_websockets_select_server_down(self):
+ def closedServer(q):
+ import socket
+
+ q.put(None) # No sub-process to start
+ ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ ssock.bind(("127.0.0.1", 8994))
+ try:
+ with self.WebsockHarness(8994, closedServer):
+ self.btest('websockets_select.c', expected='266')
+ finally:
+ self.clean_pids()
+
+ def test_websockets_select_server_closes_connection(self):
+ def closingServer(q):
+ import socket
+
+ q.put(None) # No sub-process to start
+ ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ ssock.bind(("127.0.0.1", 8994))
+ ssock.listen(2)
+ while True:
+ csock, addr = ssock.accept()
+ print "Connection from %s" % repr(addr)
+ csock.send("1234567")
+ csock.close()
+
+ try:
+ with self.WebsockHarness(8994, closingServer):
+ self.btest('websockets_select_server_closes_connection.c', expected='266')
+ finally:
+ self.clean_pids()
+
+ def test_websockets_select_server_closes_connection_rw(self):
+ def closingServer_rw(q):
+ import socket
+
+ q.put(None) # No sub-process to start
+ ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ ssock.bind(("127.0.0.1", 8998))
+ ssock.listen(2)
+ while True:
+ csock, addr = ssock.accept()
+ print "Connection from %s" % repr(addr)
+ readArray = bytearray(10)
+ #readBuffer = buffer(readArray)
+ bytesRead = 0
+ # Let the client start to write data
+ while (bytesRead < 10):
+ (readBytes, address) = csock.recvfrom_into( readArray, 10 )
+ bytesRead += readBytes
+ print "server: 10 bytes read"
+ # Now we write a message on our own ...
+ csock.send("0123456789")
+ print "server: 10 bytes written"
+ # And immediately close the connection
+ csock.close()
+ print "server: connection closed"
+
+ try:
+ with self.WebsockHarness(8998, closingServer_rw):
+ self.btest('websockets_select_server_closes_connection_rw.c', expected='266')
+ finally:
+ self.clean_pids()
+
def test_enet(self):
try_delete(self.in_dir('enet'))
shutil.copytree(path_from_root('tests', 'enet'), self.in_dir('enet'))