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

nik at codespeak.net nik at codespeak.net
Sun Dec 11 11:36:07 CET 2005


Author: nik
Date: Sun Dec 11 11:36:05 2005
New Revision: 21021

Removed:
   pypy/dist/pypy/translator/c/test/test_ext__socket_conn.py
Modified:
   pypy/dist/pypy/module/_socket/test/echoserver.py
   pypy/dist/pypy/translator/c/test/test_ext__socket.py
Log:
(ale, nik)
test reorganisation. merged the two test files, we can now reuse the ipv4 tests for
ipv6 and unix sockets.


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	Sun Dec 11 11:36:05 2005
@@ -1,4 +1,4 @@
-import SocketServer
+import socket, SocketServer
 import sys, time
 
 # user-accessible port
@@ -7,6 +7,8 @@
 class EchoServer(SocketServer.TCPServer):
 
     def __init__(self, *args, **kwargs):
+        self.address_family = kwargs["address_family"]
+        del kwargs["address_family"]
         SocketServer.TCPServer.__init__(self, *args, **kwargs)
         self.stop = False
         
@@ -30,8 +32,8 @@
                 raise RuntimeError()
             self.wfile.write(client_string)
 
-def start_server():
-    server = EchoServer(("", PORT), EchoRequestHandler)
+def start_server(address_family=socket.AF_INET):
+    server = EchoServer(("", PORT), EchoRequestHandler, address_family=address_family)
     server.serve()    
 
 if __name__ == "__main__":

Modified: pypy/dist/pypy/translator/c/test/test_ext__socket.py
==============================================================================
--- pypy/dist/pypy/translator/c/test/test_ext__socket.py	(original)
+++ pypy/dist/pypy/translator/c/test/test_ext__socket.py	Sun Dec 11 11:36:05 2005
@@ -1,8 +1,12 @@
 import autopath
 import py
-import _socket
+import _socket, thread
 from pypy.translator.c.test.test_genc import compile
 from pypy.translator.translator import Translator
+from pypy.module._socket.test import echoserver
+
+HOST = "localhost"
+PORT = 8037
 
 def setup_module(mod):
     import pypy.module._socket.rpython.exttable   # for declare()/declaretype()
@@ -105,3 +109,36 @@
     f1 = compile(does_stuff, [str, int])
     for args in tests:
         py.test.raises(OSError, f1, *args)
+
+
+class TestConnectedIPv4:
+
+    family = _socket.AF_INET
+    
+    def setup_class(cls):    
+        thread.start_new_thread(echoserver.start_server, (),
+                                            {"address_family": cls.family})
+
+    def teardown_class(cls):
+        import telnetlib
+        tn = telnetlib.Telnet(HOST, PORT)
+        tn.write("shutdown\n")
+        tn.close()
+
+    def test_connect(self):
+        import os
+        from pypy.module._socket.rpython import rsocket
+        def does_stuff():
+            fd = rsocket.newsocket(self.family, _socket.SOCK_STREAM, 0)
+            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
+
+class DONOT_TestConnectedIPv6(TestConnectedIPv4):
+    
+    disabled = not _socket.has_ipv6
+    family = _socket.AF_INET6



More information about the Pypy-commit mailing list