Patcher-ized test_socket_ssl and test_socketserver. Also patcher-ized SocketServer, which allows it to successfullly pass its unit tests, which it failed previously because it was making a call to non-greened select.select().
This commit is contained in:
@@ -1,59 +1,12 @@
|
||||
__import_lst = ['__all__', '__version__', 'BaseServer', 'TCPServer', 'UDPServer', 'ForkingMixIn',
|
||||
'ThreadingMixIn', 'BaseRequestHandler', 'StreamRequestHandler', 'DatagramRequestHandler']
|
||||
__SocketServer = __import__('SocketServer')
|
||||
for var in __import_lst:
|
||||
exec "%s = __SocketServer.%s" % (var, var)
|
||||
|
||||
|
||||
# QQQ ForkingMixIn should be fixed to use green waitpid?
|
||||
from eventlet import patcher
|
||||
|
||||
from eventlet.green import socket
|
||||
from eventlet.green import select
|
||||
from eventlet.green import threading
|
||||
patcher.inject('SocketServer',
|
||||
globals(),
|
||||
('socket', socket),
|
||||
('select', select),
|
||||
('threading', threading))
|
||||
|
||||
class TCPServer(TCPServer):
|
||||
|
||||
def __init__(self, server_address, RequestHandlerClass):
|
||||
"""Constructor. May be extended, do not override."""
|
||||
BaseServer.__init__(self, server_address, RequestHandlerClass)
|
||||
self.socket = socket.socket(self.address_family,
|
||||
self.socket_type)
|
||||
self.server_bind()
|
||||
self.server_activate()
|
||||
|
||||
class UDPServer(UDPServer):
|
||||
|
||||
def __init__(self, server_address, RequestHandlerClass):
|
||||
"""Constructor. May be extended, do not override."""
|
||||
BaseServer.__init__(self, server_address, RequestHandlerClass)
|
||||
self.socket = socket.socket(self.address_family,
|
||||
self.socket_type)
|
||||
self.server_bind()
|
||||
self.server_activate()
|
||||
|
||||
class ThreadingMixIn(ThreadingMixIn):
|
||||
|
||||
def process_request(self, request, client_address):
|
||||
"""Start a new thread to process the request."""
|
||||
from eventlet.green import threading
|
||||
t = threading.Thread(target = self.process_request_thread,
|
||||
args = (request, client_address))
|
||||
if self.daemon_threads:
|
||||
t.setDaemon (1)
|
||||
t.start()
|
||||
|
||||
class ForkingUDPServer(ForkingMixIn, UDPServer): pass
|
||||
class ForkingTCPServer(ForkingMixIn, TCPServer): pass
|
||||
|
||||
class ThreadingUDPServer(ThreadingMixIn, UDPServer): pass
|
||||
class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass
|
||||
|
||||
if hasattr(socket, 'AF_UNIX'):
|
||||
|
||||
class UnixStreamServer(TCPServer):
|
||||
address_family = socket.AF_UNIX
|
||||
|
||||
class UnixDatagramServer(UDPServer):
|
||||
address_family = socket.AF_UNIX
|
||||
|
||||
class ThreadingUnixStreamServer(ThreadingMixIn, UnixStreamServer): pass
|
||||
class ThreadingUnixDatagramServer(ThreadingMixIn, UnixDatagramServer): pass
|
||||
|
||||
# QQQ ForkingMixIn should be fixed to use green waitpid?
|
||||
|
@@ -1,20 +1,15 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from test import test_socket_ssl
|
||||
|
||||
from eventlet import patcher
|
||||
from eventlet.green import socket
|
||||
from eventlet.green import urllib
|
||||
from eventlet.green import threading
|
||||
|
||||
test_socket_ssl.socket = socket
|
||||
# bwahaha
|
||||
import sys
|
||||
sys.modules['urllib'] = urllib
|
||||
sys.modules['threading'] = threading
|
||||
# to get past the silly 'requires' check
|
||||
test_socket_ssl.__name__ = '__main__'
|
||||
|
||||
from test.test_socket_ssl import *
|
||||
patcher.inject('test.test_socket_ssl',
|
||||
globals(),
|
||||
('socket', socket),
|
||||
('urllib', urllib),
|
||||
('threading', threading))
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
||||
test_main()
|
||||
|
@@ -1,30 +1,23 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# to get past the silly 'requires' check
|
||||
from test import test_support
|
||||
test_support.use_resources = ['network']
|
||||
|
||||
from eventlet import patcher
|
||||
from eventlet.green import SocketServer
|
||||
from eventlet.green import socket
|
||||
from eventlet.green import select
|
||||
from eventlet.green import time
|
||||
from eventlet.green import threading
|
||||
|
||||
# need to override these modules before import so
|
||||
# that classes inheriting from threading.Thread refer
|
||||
# to the correct module
|
||||
import sys
|
||||
sys.modules['threading'] = threading
|
||||
sys.modules['SocketServer'] = SocketServer
|
||||
# to get past the silly 'requires' check
|
||||
from test import test_support
|
||||
test_support.use_resources = ['network']
|
||||
|
||||
from test import test_socketserver
|
||||
|
||||
test_socketserver.socket = socket
|
||||
test_socketserver.select = select
|
||||
test_socketserver.time = time
|
||||
|
||||
# skipping these tests for now
|
||||
#from test.test_socketserver import *
|
||||
patcher.inject('test.test_socketserver',
|
||||
globals(),
|
||||
('SocketServer', SocketServer),
|
||||
('socket', socket),
|
||||
('select', select),
|
||||
('time', time),
|
||||
('threading', threading))
|
||||
|
||||
if __name__ == "__main__":
|
||||
pass#test_main()
|
||||
test_main()
|
Reference in New Issue
Block a user