Converted test_socket to use the patcher, fixed minor divergence from standard library's behavior (which honestly looks to me like a stdlib unit test that isn't testing what it's supposed to, but what can ya do).
This commit is contained in:
@@ -6,6 +6,7 @@ import errno
|
||||
import os
|
||||
import socket
|
||||
from socket import socket as _original_socket
|
||||
import sys
|
||||
import time
|
||||
|
||||
|
||||
@@ -88,13 +89,20 @@ def socket_send(descriptor, data, flags=0):
|
||||
return 0
|
||||
raise
|
||||
|
||||
if sys.platform[:3]=="win":
|
||||
# winsock sometimes throws ENOTCONN
|
||||
SOCKET_BLOCKING = (errno.EWOULDBLOCK,)
|
||||
SOCKET_CLOSED = (errno.ECONNRESET, errno.ENOTCONN, errno.ESHUTDOWN)
|
||||
else:
|
||||
# oddly, on linux/darwin, an unconnected socket is expected to block,
|
||||
# so we treat ENOTCONN the same as EWOULDBLOCK
|
||||
SOCKET_BLOCKING = (errno.EWOULDBLOCK, errno.ENOTCONN)
|
||||
SOCKET_CLOSED = (errno.ECONNRESET, errno.ESHUTDOWN)
|
||||
def socket_recv(descriptor, buflen, flags=0):
|
||||
try:
|
||||
return descriptor.recv(buflen, flags)
|
||||
except socket.error, e:
|
||||
if e[0] == errno.EWOULDBLOCK:
|
||||
if e[0] in SOCKET_BLOCKING:
|
||||
return None
|
||||
if e[0] in SOCKET_CLOSED:
|
||||
return ''
|
||||
|
@@ -1,20 +1,19 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from test import test_socket
|
||||
|
||||
from eventlet import patcher
|
||||
from eventlet.green import socket
|
||||
from eventlet.green import select
|
||||
from eventlet.green import time
|
||||
from eventlet.green import thread
|
||||
from eventlet.green import threading
|
||||
|
||||
test_socket.socket = socket
|
||||
test_socket.select = select
|
||||
test_socket.time = time
|
||||
test_socket.thread = thread
|
||||
test_socket.threading = threading
|
||||
|
||||
from test.test_socket import *
|
||||
patcher.inject('test.test_socket',
|
||||
globals(),
|
||||
('socket', socket),
|
||||
('select', select),
|
||||
('time', time),
|
||||
('thread', thread),
|
||||
('threading', threading))
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
Reference in New Issue
Block a user