diff options
Diffstat (limited to 'Lib/dos_8x3/test_soc.py')
-rw-r--r-- | Lib/dos_8x3/test_soc.py | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/Lib/dos_8x3/test_soc.py b/Lib/dos_8x3/test_soc.py new file mode 100644 index 0000000..1e157b9 --- /dev/null +++ b/Lib/dos_8x3/test_soc.py @@ -0,0 +1,142 @@ +# Not tested: +# socket.fromfd() +# sktobj.getsockopt() +# sktobj.recvfrom() +# sktobj.sendto() +# sktobj.setblocking() +# sktobj.setsockopt() +# sktobj.shutdown() + + +from test_support import verbose +import socket +import os +import time +import string + +def missing_ok(str): + try: + getattr(socket, str) + except AttributeError: + pass + +print socket.error + +print socket.AF_INET + +print socket.SOCK_STREAM +print socket.SOCK_DGRAM +print socket.SOCK_RAW +print socket.SOCK_RDM +print socket.SOCK_SEQPACKET + +for optional in ("AF_UNIX", + + "SO_DEBUG", "SO_ACCEPTCONN", "SO_REUSEADDR", "SO_KEEPALIVE", + "SO_DONTROUTE", "SO_BROADCAST", "SO_USELOOPBACK", "SO_LINGER", + "SO_OOBINLINE", "SO_REUSEPORT", "SO_SNDBUF", "SO_RCVBUF", + "SO_SNDLOWAT", "SO_RCVLOWAT", "SO_SNDTIMEO", "SO_RCVTIMEO", + "SO_ERROR", "SO_TYPE", "SOMAXCONN", + + "MSG_OOB", "MSG_PEEK", "MSG_DONTROUTE", "MSG_EOR", + "MSG_TRUNC", "MSG_CTRUNC", "MSG_WAITALL", "MSG_BTAG", + "MSG_ETAG", + + "SOL_SOCKET", + + "IPPROTO_IP", "IPPROTO_ICMP", "IPPROTO_IGMP", + "IPPROTO_GGP", "IPPROTO_TCP", "IPPROTO_EGP", + "IPPROTO_PUP", "IPPROTO_UDP", "IPPROTO_IDP", + "IPPROTO_HELLO", "IPPROTO_ND", "IPPROTO_TP", + "IPPROTO_XTP", "IPPROTO_EON", "IPPROTO_BIP", + "IPPROTO_RAW", "IPPROTO_MAX", + + "IPPORT_RESERVED", "IPPORT_USERRESERVED", + + "INADDR_ANY", "INADDR_BROADCAST", "INADDR_LOOPBACK", + "INADDR_UNSPEC_GROUP", "INADDR_ALLHOSTS_GROUP", + "INADDR_MAX_LOCAL_GROUP", "INADDR_NONE", + + "IP_OPTIONS", "IP_HDRINCL", "IP_TOS", "IP_TTL", + "IP_RECVOPTS", "IP_RECVRETOPTS", "IP_RECVDSTADDR", + "IP_RETOPTS", "IP_MULTICAST_IF", "IP_MULTICAST_TTL", + "IP_MULTICAST_LOOP", "IP_ADD_MEMBERSHIP", + "IP_DROP_MEMBERSHIP", + ): + missing_ok(optional) + +hostname = socket.gethostname() +ip = socket.gethostbyname(hostname) +hname, aliases, ipaddrs = socket.gethostbyaddr(ip) +all_host_names = [hname] + aliases + +if verbose: + print hostname + print ip + print hname, aliases, ipaddrs + print all_host_names + +for name in all_host_names: + if string.find(name, '.'): + break +else: + print 'FQDN not found' + +print socket.getservbyname('telnet', 'tcp') +try: + socket.getservbyname('telnet', 'udp') +except socket.error: + pass + + +try: + PORT = 50007 + if os.fork(): + # parent is server + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.bind(hostname, PORT) + s.listen(1) + if verbose: + print 'parent accepting' + conn, addr = s.accept() + if verbose: + print 'connected by', addr + # couple of interesting tests while we've got a live socket + f = conn.fileno() + if verbose: + print 'fileno:', f + p = conn.getpeername() + if verbose: + print 'peer:', p + n = conn.getsockname() + if verbose: + print 'sockname:', n + f = conn.makefile() + if verbose: + print 'file obj:', f + while 1: + data = conn.recv(1024) + if not data: + break + if verbose: + print 'received:', data + conn.send(data) + conn.close() + else: + try: + # child is client + time.sleep(1) + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + if verbose: + print 'child connecting' + s.connect(hostname, PORT) + msg = 'socket test' + s.send(msg) + data = s.recv(1024) + if msg <> data: + print 'parent/client mismatch' + s.close() + finally: + os._exit(1) +except socket.error: + pass |