[pypy-svn] r20995 - in pypy/dist/pypy: module/_socket/test translator/c/test
nik at codespeak.net
nik at codespeak.net
Sat Dec 10 13:37:09 CET 2005
Author: nik
Date: Sat Dec 10 13:37:06 2005
New Revision: 20995
Modified:
pypy/dist/pypy/module/_socket/test/echoserver.py
pypy/dist/pypy/translator/c/test/test_ext__socket_conn.py
Log:
(ale, nik)
our test echo server works, but we still don't manage to shutdown the server process
properly ... the combination of the subprocess module with python's telnetlib or
socket seems to be a problem.
Modified: pypy/dist/pypy/module/_socket/test/echoserver.py
==============================================================================
--- pypy/dist/pypy/module/_socket/test/echoserver.py (original)
+++ pypy/dist/pypy/module/_socket/test/echoserver.py Sat Dec 10 13:37:06 2005
@@ -4,6 +4,19 @@
# user-accessible port
PORT = 8037
+class EchoServer(SocketServer.TCPServer):
+
+ def __init__(self, *args, **kwargs):
+ SocketServer.TCPServer.__init__(self, *args, **kwargs)
+ self.stop = False
+
+ def handle_error(self, request, client_address):
+ self.stop = True
+
+ def serve(self):
+ while not self.stop:
+ self.handle_request()
+
class EchoRequestHandler(SocketServer.StreamRequestHandler):
def handle(self):
@@ -14,9 +27,9 @@
char = self.rfile.read(1)
client_string += char
if client_string.startswith("shutdown"):
- sys.exit(1)
+ raise RuntimeError()
self.wfile.write(client_string)
if __name__ == "__main__":
- server = SocketServer.TCPServer(("", PORT), EchoRequestHandler)
- server.serve_forever()
+ server = EchoServer(("", PORT), EchoRequestHandler)
+ server.serve()
Modified: pypy/dist/pypy/translator/c/test/test_ext__socket_conn.py
==============================================================================
--- pypy/dist/pypy/translator/c/test/test_ext__socket_conn.py (original)
+++ pypy/dist/pypy/translator/c/test/test_ext__socket_conn.py Sat Dec 10 13:37:06 2005
@@ -11,20 +11,21 @@
def setup_module(mod):
import pypy.module._socket.rpython.exttable # for declare()/declaretype()
serverpath = os.path.join(autopath.pypydir, "module/_socket/test/echoserver.py")
- mod.server_pid = subprocess.Popen([sys.executable, serverpath]).pid
+ mod.process = subprocess.Popen([sys.executable, serverpath])
def teardown_module(mod):
import telnetlib
tn = telnetlib.Telnet(HOST, PORT)
tn.write("shutdown\n")
tn.close()
+ del tn
+ del mod.process
-def DONOT_test_connect():
+def test_connect():
import os
from pypy.module._socket.rpython import rsocket
def does_stuff():
fd = rsocket.newsocket(_socket.AF_INET, _socket.SOCK_STREAM, 0)
- # XXX need to think of a test without connecting to outside servers
rsocket.connect(fd, (HOST, PORT, 0, 0))
sockname = rsocket.getpeername(fd)
os.close(fd)
More information about the Pypy-commit
mailing list