fix test_connect_timeout and test_connect_ex_timeout so they ignore errno.EHOSTUNREACH *and* errno.ENETUNREACH
This commit is contained in:
@@ -13,7 +13,7 @@ import array
|
||||
def bufsized(sock, size=1):
|
||||
""" Resize both send and receive buffers on a socket.
|
||||
Useful for testing trampoline. Returns the socket.
|
||||
|
||||
|
||||
>>> import socket
|
||||
>>> sock = bufsized(socket.socket(socket.AF_INET, socket.SOCK_STREAM))
|
||||
"""
|
||||
@@ -40,7 +40,7 @@ class TestGreenIo(LimitedTestCase):
|
||||
self.assertEqual(e.args[0], 'timed out')
|
||||
except socket.error, e:
|
||||
# unreachable is also a valid outcome
|
||||
if e[0] != errno.EHOSTUNREACH:
|
||||
if not e[0] in (errno.EHOSTUNREACH, errno.ENETUNREACH):
|
||||
raise
|
||||
|
||||
def test_accept_timeout(self):
|
||||
@@ -62,7 +62,8 @@ class TestGreenIo(LimitedTestCase):
|
||||
s.settimeout(0.1)
|
||||
gs = greenio.GreenSocket(s)
|
||||
e = gs.connect_ex(('192.0.2.1', 80))
|
||||
self.assertEquals(e, errno.EAGAIN)
|
||||
if not e in (errno.EHOSTUNREACH, errno.ENETUNREACH):
|
||||
self.assertEquals(e, errno.EAGAIN)
|
||||
|
||||
def test_recv_timeout(self):
|
||||
listener = greenio.GreenSocket(socket.socket())
|
||||
@@ -249,16 +250,16 @@ class TestGreenIo(LimitedTestCase):
|
||||
self.assertRaises(socket.error, conn.send, 'b')
|
||||
finally:
|
||||
listener.close()
|
||||
|
||||
|
||||
def did_it_work(server):
|
||||
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
client.connect(('127.0.0.1', server.getsockname()[1]))
|
||||
fd = client.makefile()
|
||||
client.close()
|
||||
assert fd.readline() == 'hello\n'
|
||||
assert fd.readline() == 'hello\n'
|
||||
assert fd.read() == ''
|
||||
fd.close()
|
||||
|
||||
|
||||
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1)
|
||||
server.bind(('0.0.0.0', 0))
|
||||
@@ -266,7 +267,7 @@ class TestGreenIo(LimitedTestCase):
|
||||
killer = eventlet.spawn(accept_close_early, server)
|
||||
did_it_work(server)
|
||||
killer.wait()
|
||||
|
||||
|
||||
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1)
|
||||
server.bind(('0.0.0.0', 0))
|
||||
@@ -274,7 +275,7 @@ class TestGreenIo(LimitedTestCase):
|
||||
killer = eventlet.spawn(accept_close_late, server)
|
||||
did_it_work(server)
|
||||
killer.wait()
|
||||
|
||||
|
||||
def test_del_closes_socket(self):
|
||||
def accept_once(listener):
|
||||
# delete/overwrite the original conn
|
||||
@@ -298,11 +299,11 @@ class TestGreenIo(LimitedTestCase):
|
||||
client.connect(('127.0.0.1', server.getsockname()[1]))
|
||||
fd = client.makefile()
|
||||
client.close()
|
||||
assert fd.read() == 'hello\n'
|
||||
assert fd.read() == 'hello\n'
|
||||
assert fd.read() == ''
|
||||
|
||||
|
||||
killer.wait()
|
||||
|
||||
|
||||
def test_full_duplex(self):
|
||||
large_data = '*' * 10 * min_buf_size()
|
||||
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
@@ -313,7 +314,7 @@ class TestGreenIo(LimitedTestCase):
|
||||
|
||||
def send_large(sock):
|
||||
sock.sendall(large_data)
|
||||
|
||||
|
||||
def read_large(sock):
|
||||
result = sock.recv(len(large_data))
|
||||
expected = 'hello world'
|
||||
@@ -332,7 +333,7 @@ class TestGreenIo(LimitedTestCase):
|
||||
result += sock.recv(10)
|
||||
self.assertEquals(result, expected)
|
||||
send_large_coro.wait()
|
||||
|
||||
|
||||
server_evt = eventlet.spawn(server)
|
||||
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
client.connect(('127.0.0.1', listener.getsockname()[1]))
|
||||
@@ -343,7 +344,7 @@ class TestGreenIo(LimitedTestCase):
|
||||
server_evt.wait()
|
||||
large_evt.wait()
|
||||
client.close()
|
||||
|
||||
|
||||
def test_sendall(self):
|
||||
# test adapted from Marcus Cavanaugh's email
|
||||
# it may legitimately take a while, but will eventually complete
|
||||
@@ -356,7 +357,7 @@ class TestGreenIo(LimitedTestCase):
|
||||
sock = bufsized(sock, size=bufsize)
|
||||
sock.sendall('x'*many_bytes)
|
||||
sock.sendall('y'*second_bytes)
|
||||
|
||||
|
||||
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
listener.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1)
|
||||
listener.bind(("", 0))
|
||||
@@ -371,20 +372,20 @@ class TestGreenIo(LimitedTestCase):
|
||||
if data == '':
|
||||
break
|
||||
total += len(data)
|
||||
|
||||
|
||||
total2 = 0
|
||||
while total < second_bytes:
|
||||
data = client.recv(second_bytes)
|
||||
if data == '':
|
||||
break
|
||||
total2 += len(data)
|
||||
|
||||
|
||||
sender_coro.wait()
|
||||
client.close()
|
||||
|
||||
|
||||
for bytes in (1000, 10000, 100000, 1000000):
|
||||
test_sendall_impl(bytes)
|
||||
|
||||
|
||||
def test_wrap_socket(self):
|
||||
try:
|
||||
import ssl
|
||||
@@ -396,7 +397,7 @@ class TestGreenIo(LimitedTestCase):
|
||||
sock.bind(('127.0.0.1', 0))
|
||||
sock.listen(50)
|
||||
ssl_sock = ssl.wrap_socket(sock)
|
||||
|
||||
|
||||
def test_timeout_and_final_write(self):
|
||||
# This test verifies that a write on a socket that we've
|
||||
# stopped listening for doesn't result in an incorrect switch
|
||||
@@ -405,11 +406,11 @@ class TestGreenIo(LimitedTestCase):
|
||||
server.bind(('127.0.0.1', 0))
|
||||
server.listen(50)
|
||||
bound_port = server.getsockname()[1]
|
||||
|
||||
|
||||
def sender(evt):
|
||||
s2, addr = server.accept()
|
||||
wrap_wfile = s2.makefile()
|
||||
|
||||
|
||||
eventlet.sleep(0.02)
|
||||
wrap_wfile.write('hi')
|
||||
s2.close()
|
||||
@@ -476,7 +477,7 @@ class TestGreenIoLong(LimitedTestCase):
|
||||
@skip_with_pyevent
|
||||
def test_multiple_readers(self):
|
||||
recvsize = 2 * min_buf_size()
|
||||
sendsize = 10 * recvsize
|
||||
sendsize = 10 * recvsize
|
||||
# test that we can have multiple coroutines reading
|
||||
# from the same fd. We make no guarantees about which one gets which
|
||||
# bytes, but they should both get at least some
|
||||
@@ -486,7 +487,7 @@ class TestGreenIoLong(LimitedTestCase):
|
||||
if data == '':
|
||||
break
|
||||
results.append(data)
|
||||
|
||||
|
||||
results1 = []
|
||||
results2 = []
|
||||
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
@@ -516,7 +517,7 @@ class TestGreenIoLong(LimitedTestCase):
|
||||
listener.close()
|
||||
self.assert_(len(results1) > 0)
|
||||
self.assert_(len(results2) > 0)
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
Reference in New Issue
Block a user