[pypy-svn] r26221 - in pypy/dist/pypy/rpython/rctypes/socketmodule: . test

dialtone at codespeak.net dialtone at codespeak.net
Mon Apr 24 06:14:07 CEST 2006


Author: dialtone
Date: Mon Apr 24 06:14:02 2006
New Revision: 26221

Modified:
   pypy/dist/pypy/rpython/rctypes/socketmodule/_socket.py
   pypy/dist/pypy/rpython/rctypes/socketmodule/ctypes_socket.py
   pypy/dist/pypy/rpython/rctypes/socketmodule/test/test__socket.py
Log:
(ericvrp, dialtone)
Added an awful lot of constants

Warning: testing takes some time because of the platform check.

Modified: pypy/dist/pypy/rpython/rctypes/socketmodule/_socket.py
==============================================================================
--- pypy/dist/pypy/rpython/rctypes/socketmodule/_socket.py	(original)
+++ pypy/dist/pypy/rpython/rctypes/socketmodule/_socket.py	Mon Apr 24 06:14:02 2006
@@ -151,6 +151,8 @@
         if err:
             raise error(err)
         
+SocketType = socket
+
 def makeipaddr(caddr, caddrlen):
     buf = create_string_buffer(NI_MAXHOST)
     error = _c.getnameinfo(caddr, caddrlen, buf, NI_MAXHOST,

Modified: pypy/dist/pypy/rpython/rctypes/socketmodule/ctypes_socket.py
==============================================================================
--- pypy/dist/pypy/rpython/rctypes/socketmodule/ctypes_socket.py	(original)
+++ pypy/dist/pypy/rpython/rctypes/socketmodule/ctypes_socket.py	Mon Apr 24 06:14:02 2006
@@ -1,4 +1,5 @@
 import os
+import distutils
 from pypy.rpython.rctypes.tool import ctypes_platform
 from pypy.rpython.rctypes.tool import util      # ctypes.util from 0.9.9.6
 from ctypes import *
@@ -6,23 +7,76 @@
 includes = ('sys/types.h',
             'sys/socket.h',
             'netinet/in.h',
+            'netinet/tcp.h',
             'unistd.h',
             'stdio.h',
             'netdb.h',
-            'arpa/inet.h',
+            'arpa/inet.h'
             )
 HEADER = ''.join(['#include <%s>\n' % filename for filename in includes])
 constants = {}
 
 # constants
-for name in ['AF_INET',
-             'AF_UNSPEC',
-             'SOCK_STREAM',
-             'SOCK_DGRAM',
-             'NI_MAXHOST',
-             'NI_NUMERICHOST',
-             ]:
-    constants[name] = ctypes_platform.getconstantinteger(name, HEADER)
+for name in ['AF_APPLETALK', 'AF_INET', 'AF_INET6', 'AF_IPX','AF_ROUTE', 
+'AF_SNA', 'AF_UNIX', 'AF_UNSPEC', 'AI_ADDRCONFIG', 'AI_ALL', 'AI_CANONNAME',
+'AI_DEFAULT', 'AI_MASK', 'AI_NUMERICHOST', 'AI_PASSIVE', 'AI_V4MAPPED',
+'AI_V4MAPPED_CFG', 'EAI_ADDRFAMILY', 'EAI_AGAIN', 'EAI_BADFLAGS',
+'EAI_BADHINTS', 'EAI_FAIL', 'EAI_FAMILY', 'EAI_MAX', 'EAI_MEMORY',
+'EAI_NODATA', 'EAI_NONAME', 'EAI_PROTOCOL', 'EAI_SERVICE', 'EAI_SOCKTYPE',
+'EAI_SYSTEM', 'INADDR_UNSPEC_GROUP', 'IPPROTO_AH',
+'IPPROTO_DSTOPTS', 'IPPROTO_EGP', 'IPPROTO_EON', 'IPPROTO_ESP',
+'IPPROTO_FRAGMENT', 'IPPROTO_GGP', 'IPPROTO_GRE', 'IPPROTO_HELLO',
+'IPPROTO_HOPOPTS', 'IPPROTO_ICMP', 'IPPROTO_ICMPV6', 'IPPROTO_IDP',
+'IPPROTO_IGMP', 'IPPROTO_IPCOMP', 'IPPROTO_IPIP',
+'IPPROTO_IPV4', 'IPPROTO_IPV6', 'IPPROTO_MAX', 'IPPROTO_ND', 'IPPROTO_NONE',
+'IPPROTO_PIM', 'IPPROTO_PUP', 'IPPROTO_ROUTING',
+'IPPROTO_RSVP', 'IPPROTO_TCP', 'IPPROTO_TP', 'IPPROTO_XTP',
+'IPV6_CHECKSUM', 'IPV6_DSTOPTS', 'IPV6_HOPLIMIT', 'IPV6_HOPOPTS',
+'IPV6_JOIN_GROUP', 'IPV6_LEAVE_GROUP', 'IPV6_MULTICAST_HOPS',
+'IPV6_MULTICAST_IF', 'IPV6_MULTICAST_LOOP', 'IPV6_NEXTHOP', 'IPV6_PKTINFO',
+'IPV6_RTHDR', 'IPV6_RTHDR_TYPE_0', 'IPV6_UNICAST_HOPS', 'IPV6_V6ONLY',
+'IP_ADD_MEMBERSHIP', 'IP_DEFAULT_MULTICAST_LOOP', 'IP_DEFAULT_MULTICAST_TTL',
+'IP_DROP_MEMBERSHIP', 'IP_HDRINCL', 'IP_MAX_MEMBERSHIPS', 'IP_MULTICAST_IF',
+'IP_MULTICAST_LOOP', 'IP_MULTICAST_TTL', 'IP_OPTIONS', 'IP_RECVDSTADDR',
+'IP_RECVOPTS', 'IP_RECVRETOPTS', 'IP_RETOPTS', 'IP_TOS', 'IP_TTL',
+'MSG_CTRUNC', 'MSG_DONTROUTE', 'MSG_DONTWAIT', 'MSG_EOR', 'MSG_OOB',
+'MSG_PEEK', 'MSG_TRUNC', 'MSG_WAITALL', 'NI_DGRAM', 'NI_MAXHOST',
+'NI_MAXSERV', 'NI_NAMEREQD', 'NI_NOFQDN', 'NI_NUMERICHOST', 'NI_NUMERICSERV',
+'SOCK_DGRAM', 'SOCK_RAW', 'SOCK_RDM',
+'SOCK_SEQPACKET', 'SOCK_STREAM',  'SOL_SOCKET',
+'SO_ACCEPTCONN', 'SO_BROADCAST', 'SO_DEBUG', 'SO_DONTROUTE',
+'SO_ERROR', 'SO_KEEPALIVE', 'SO_LINGER', 'SO_OOBINLINE', 'SO_RCVBUF',
+'SO_RCVLOWAT', 'SO_RCVTIMEO', 'SO_REUSEADDR', 'SO_REUSEPORT', 'SO_SNDBUF',
+'SO_SNDLOWAT', 'SO_SNDTIMEO', 'SO_TYPE', 'SO_USELOOPBACK', 'TCP_MAXSEG',
+'TCP_NODELAY', 'AF_DECnet']:
+    try:
+        constants[name] = ctypes_platform.getconstantinteger(name, HEADER)
+    except distutils.errors.CompileError:
+        pass
+
+for special, default in [('SOL_IP', 0),
+                         ('SOL_TCP', 6),
+                         ('SOL_UDP', 17),
+                         ('SOMAXCONN', 5),
+                         ('IPPROTO_IP', 6),
+                         ('IPPROTO_UDP', 17),
+                         ('IPPROTO_RAW', 255),
+                         ('IPPORT_RESERVED', 1024),
+                         ('IPPORT_USERRESERVED', 5000),
+                         ('INADDR_ANY', 0x00000000),
+                         ('INADDR_BROADCAST', 0xffffffff),
+                         ('INADDR_LOOPBACK', 0x7F000001),
+                         ('INADDR_UNSPEC_GROUP', 0xe0000000),
+                         ('INADDR_ALLHOSTS_GROUP', 0xe0000001),
+                         ('INADDR_MAX_LOCAL_GROUP', 0xe00000ff),
+                         ('INADDR_NONE', 0xffffffff),
+                         ('SHUT_RD', 0),
+                         ('SHUT_WR', 1),
+                         ('SHUT_RDWR', 2)]:
+    try:
+        constants[special] = ctypes_platform.getconstantinteger(special, HEADER)
+    except distutils.errors.CompileError:
+        constants[special] = default
 
 # types
 uint16_t = ctypes_platform.getsimpletype('uint16_t', HEADER, c_ushort)
@@ -57,6 +111,7 @@
 
 FILE_ptr = ctypes_platform.getstruct('FILE *', HEADER,
                                      [])
+
 # functions
 dllname = util.find_library('c')
 assert dllname is not None

Modified: pypy/dist/pypy/rpython/rctypes/socketmodule/test/test__socket.py
==============================================================================
--- pypy/dist/pypy/rpython/rctypes/socketmodule/test/test__socket.py	(original)
+++ pypy/dist/pypy/rpython/rctypes/socketmodule/test/test__socket.py	Mon Apr 24 06:14:02 2006
@@ -4,13 +4,14 @@
 
 def interface_matcher(interface1, interface2):
     members = [member for member in dir(interface1) if not member.startswith('_')]
+    members.remove('CAPI')
     verifying_set = dir(interface2)
     for member in members:
         assert member in verifying_set
 
 def test_interfaces():
-    #interface_matcher(_socket, _rsocket)
-    #interface_matcher(_rsocket, _socket)
+    interface_matcher(_socket, _rsocket)
+    interface_matcher(_rsocket, _socket)
     interface_matcher(_socket.socket, _rsocket.socket)
     interface_matcher(_rsocket.socket, _socket.socket)
 



More information about the Pypy-commit mailing list