Another patch from Bill Janssen that:

1)  Fixes the bug that two class names are initial-lower-case.
2)  Replaces the poll waiting for the server to become ready with
    a threading.Event signal.
This commit is contained in:
Neal Norwitz 2007-08-26 22:20:03 +00:00
parent 1b2f62d139
commit d6a51e64d7
1 changed files with 16 additions and 6 deletions

View File

@ -153,9 +153,9 @@ class ConnectedTests(unittest.TestCase):
c2.close() c2.close()
class threadedEchoServer(threading.Thread): class ThreadedEchoServer(threading.Thread):
class connectionHandler(threading.Thread): class ConnectionHandler(threading.Thread):
def __init__(self, server, connsock): def __init__(self, server, connsock):
self.server = server self.server = server
@ -219,6 +219,7 @@ class threadedEchoServer(threading.Thread):
self.certreqs = certreqs self.certreqs = certreqs
self.cacerts = cacerts self.cacerts = cacerts
self.sock = socket.socket() self.sock = socket.socket()
self.flag = None
if hasattr(socket, 'SO_REUSEADDR'): if hasattr(socket, 'SO_REUSEADDR'):
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if hasattr(socket, 'SO_REUSEPORT'): if hasattr(socket, 'SO_REUSEPORT'):
@ -228,15 +229,22 @@ class threadedEchoServer(threading.Thread):
threading.Thread.__init__(self) threading.Thread.__init__(self)
self.setDaemon(False) self.setDaemon(False)
def start (self, flag=None):
self.flag = flag
threading.Thread.start(self)
def run (self): def run (self):
self.sock.settimeout(0.5) self.sock.settimeout(0.5)
self.sock.listen(5) self.sock.listen(5)
self.active = True self.active = True
if self.flag:
# signal an event
self.flag.set()
while self.active: while self.active:
try: try:
newconn, connaddr = self.sock.accept() newconn, connaddr = self.sock.accept()
#sys.stdout.write('\nserver: new connection from ' + str(connaddr) + '\n') #sys.stdout.write('\nserver: new connection from ' + str(connaddr) + '\n')
handler = self.connectionHandler(self, newconn) handler = self.ConnectionHandler(self, newconn)
handler.start() handler.start()
except socket.timeout: except socket.timeout:
pass pass
@ -337,9 +345,11 @@ def test_main():
server = None server = None
if test_support.is_resource_enabled('network'): if test_support.is_resource_enabled('network'):
server = threadedEchoServer(10024, CERTFILE) server = ThreadedEchoServer(10024, CERTFILE)
server.start() flag = threading.Event()
time.sleep(1) server.start(flag)
# wait for it to start
flag.wait()
tests.append(ConnectedTests) tests.append(ConnectedTests)
thread_info = test_support.threading_setup() thread_info = test_support.threading_setup()