[pypy-svn] r20980 - in pypy/dist/pypy: module/_socket/test translator/c/test

nik at codespeak.net nik at codespeak.net
Fri Dec 9 23:19:33 CET 2005


Author: nik
Date: Fri Dec  9 23:19:32 2005
New Revision: 20980

Added:
   pypy/dist/pypy/module/_socket/test/echoserver.py   (contents, props changed)
   pypy/dist/pypy/translator/c/test/test_ext__socket_conn.py   (contents, props changed)
Log:
(ale, nik)
start of a trivial tcp server to use in socket tests. we can't terminate it
gracefully, yet.


Added: pypy/dist/pypy/module/_socket/test/echoserver.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/module/_socket/test/echoserver.py	Fri Dec  9 23:19:32 2005
@@ -0,0 +1,22 @@
+import SocketServer
+import sys, time
+
+# user-accessible port
+PORT = 8037
+
+class EchoRequestHandler(SocketServer.StreamRequestHandler):
+
+    def handle(self):
+        while True:
+            client_string = ""
+            char = ""
+            while char != "\n":
+                char = self.rfile.read(1)
+                client_string += char
+            if client_string.startswith("shutdown"):
+                sys.exit(1)
+            self.wfile.write(client_string)
+
+if __name__ == "__main__":
+    server = SocketServer.TCPServer(("", PORT), EchoRequestHandler)
+    server.serve_forever()

Added: pypy/dist/pypy/translator/c/test/test_ext__socket_conn.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/translator/c/test/test_ext__socket_conn.py	Fri Dec  9 23:19:32 2005
@@ -0,0 +1,34 @@
+import autopath
+import py
+import os.path, subprocess, sys
+import _socket
+from pypy.translator.c.test.test_genc import compile
+from pypy.translator.translator import Translator
+
+HOST = "localhost"
+PORT = 8037
+
+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
+
+def teardown_module(mod):
+    import telnetlib
+    tn = telnetlib.Telnet(HOST, PORT)
+    tn.write("shutdown\n")
+    tn.close()
+
+def DONOT_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)
+        return sockname[1]
+    f1 = compile(does_stuff, [])
+    res = f1()
+    assert res == PORT



More information about the Pypy-commit mailing list