Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_socket.py @ 83191:0437c19cdad0
gibibytes (Arfrever)
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Sun, 07 Apr 2013 23:46:52 +0200 |
| parents | 5c09e1c57200 |
| children | 1410b7790de6 |
| rev | line source |
|---|---|
|
59522
fcfe324663a6
convert shebang lines: python -> python3
Benjamin Peterson <benjamin@python.org>
parents:
58415
diff
changeset
|
1 #!/usr/bin/env python3 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
2 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
4 from test import support |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
5 |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
6 import errno |
|
58146
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
7 import io |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
8 import socket |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
9 import select |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
10 import tempfile |
|
81587
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
11 import _testcapi |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
12 import time |
|
46161
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
13 import traceback |
|
46899
bd2c95c165ea
Rename Queue module to queue.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
14 import queue |
|
25152
0c9dfd5a06d4
Skip UDP testing for MacPython (for now), it hangs. This may be due to
Jack Jansen <jack.jansen@cwi.nl>
parents:
24772
diff
changeset
|
15 import sys |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43954
diff
changeset
|
16 import os |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43954
diff
changeset
|
17 import array |
|
65604
8d7f18332db7
Fix SOCK_CLOEXEC and SOCK_NONBLOCK tests on recent glibcs with old Linux kernels.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65416
diff
changeset
|
18 import platform |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
19 import contextlib |
|
32160
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
20 from weakref import proxy |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
21 import signal |
|
64961
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
22 import math |
|
68774
5e13e5e6df30
Issue #11127: Raise a TypeError when trying to pickle a socket object.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68258
diff
changeset
|
23 import pickle |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
24 import struct |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
25 try: |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
26 import fcntl |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
27 except ImportError: |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
28 fcntl = False |
|
76150
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
29 try: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
30 import multiprocessing |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
31 except ImportError: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
32 multiprocessing = False |
|
65606
a30e75820b8d
Also guard other SOCK_NONBLOCK test
Antoine Pitrou <solipsis@pitrou.net>
parents:
65604
diff
changeset
|
33 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
34 HOST = support.HOST |
|
68142
be6c38d1817b
Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents:
67382
diff
changeset
|
35 MSG = 'Michael Gilfix was here\u1234\r\n'.encode('utf-8') ## test unicode string and carriage return |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
36 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
37 try: |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
38 import _thread as thread |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
39 import threading |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
40 except ImportError: |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
41 thread = None |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
42 threading = None |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
43 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
44 def _have_socket_can(): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
45 """Check whether CAN sockets are supported on this host.""" |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
46 try: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
47 s = socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
48 except (AttributeError, OSError): |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
49 return False |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
50 else: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
51 s.close() |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
52 return True |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
53 |
|
73478
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
54 def _have_socket_rds(): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
55 """Check whether RDS sockets are supported on this host.""" |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
56 try: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
57 s = socket.socket(socket.PF_RDS, socket.SOCK_SEQPACKET, 0) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
58 except (AttributeError, OSError): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
59 return False |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
60 else: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
61 s.close() |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
62 return True |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
63 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
64 HAVE_SOCKET_CAN = _have_socket_can() |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
65 |
|
73478
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
66 HAVE_SOCKET_RDS = _have_socket_rds() |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
67 |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
68 # Size in bytes of the int type |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
69 SIZEOF_INT = array.array("i").itemsize |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
70 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
71 class SocketTCPTest(unittest.TestCase): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
72 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
73 def setUp(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
74 self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
75 self.port = support.bind_port(self.serv) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
76 self.serv.listen(1) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
77 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
78 def tearDown(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
79 self.serv.close() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
80 self.serv = None |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
81 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
82 class SocketUDPTest(unittest.TestCase): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
83 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
84 def setUp(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
85 self.serv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
86 self.port = support.bind_port(self.serv) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
87 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
88 def tearDown(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
89 self.serv.close() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
90 self.serv = None |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
91 |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
92 class ThreadSafeCleanupTestCase(unittest.TestCase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
93 """Subclass of unittest.TestCase with thread-safe cleanup methods. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
94 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
95 This subclass protects the addCleanup() and doCleanups() methods |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
96 with a recursive lock. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
97 """ |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
98 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
99 if threading: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
100 def __init__(self, *args, **kwargs): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
101 super().__init__(*args, **kwargs) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
102 self._cleanup_lock = threading.RLock() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
103 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
104 def addCleanup(self, *args, **kwargs): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
105 with self._cleanup_lock: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
106 return super().addCleanup(*args, **kwargs) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
107 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
108 def doCleanups(self, *args, **kwargs): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
109 with self._cleanup_lock: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
110 return super().doCleanups(*args, **kwargs) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
111 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
112 class SocketCANTest(unittest.TestCase): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
113 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
114 """To be able to run this test, a `vcan0` CAN interface can be created with |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
115 the following commands: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
116 # modprobe vcan |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
117 # ip link add dev vcan0 type vcan |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
118 # ifconfig vcan0 up |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
119 """ |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
120 interface = 'vcan0' |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
121 bufsize = 128 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
122 |
|
82024
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
123 """The CAN frame structure is defined in <linux/can.h>: |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
124 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
125 struct can_frame { |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
126 canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
127 __u8 can_dlc; /* data length code: 0 .. 8 */ |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
128 __u8 data[8] __attribute__((aligned(8))); |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
129 }; |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
130 """ |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
131 can_frame_fmt = "=IB3x8s" |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
132 can_frame_size = struct.calcsize(can_frame_fmt) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
133 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
134 """The Broadcast Management Command frame structure is defined |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
135 in <linux/can/bcm.h>: |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
136 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
137 struct bcm_msg_head { |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
138 __u32 opcode; |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
139 __u32 flags; |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
140 __u32 count; |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
141 struct timeval ival1, ival2; |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
142 canid_t can_id; |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
143 __u32 nframes; |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
144 struct can_frame frames[0]; |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
145 } |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
146 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
147 `bcm_msg_head` must be 8 bytes aligned because of the `frames` member (see |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
148 `struct can_frame` definition). Must use native not standard types for packing. |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
149 """ |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
150 bcm_cmd_msg_fmt = "@3I4l2I" |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
151 bcm_cmd_msg_fmt += "x" * (struct.calcsize(bcm_cmd_msg_fmt) % 8) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
152 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
153 def setUp(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
154 self.s = socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) |
|
72849
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
155 self.addCleanup(self.s.close) |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
156 try: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
157 self.s.bind((self.interface,)) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
158 except OSError: |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
159 self.skipTest('network interface `%s` does not exist' % |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
160 self.interface) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
161 |
|
73478
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
162 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
163 class SocketRDSTest(unittest.TestCase): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
164 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
165 """To be able to run this test, the `rds` kernel module must be loaded: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
166 # modprobe rds |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
167 """ |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
168 bufsize = 8192 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
169 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
170 def setUp(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
171 self.serv = socket.socket(socket.PF_RDS, socket.SOCK_SEQPACKET, 0) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
172 self.addCleanup(self.serv.close) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
173 try: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
174 self.port = support.bind_port(self.serv) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
175 except OSError: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
176 self.skipTest('unable to bind RDS socket') |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
177 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
178 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
179 class ThreadableTest: |
|
23909
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
180 """Threadable Test class |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
181 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
182 The ThreadableTest class makes it easy to create a threaded |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
183 client/server pair from an existing unit test. To create a |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
184 new threaded class from an existing unit test, use multiple |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
185 inheritance: |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
186 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
187 class NewClass (OldClass, ThreadableTest): |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
188 pass |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
189 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
190 This class defines two new fixture functions with obvious |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
191 purposes for overriding: |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
192 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
193 clientSetUp () |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
194 clientTearDown () |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
195 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
196 Any new test functions within the class must then define |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
197 tests in pairs, where the test name is preceeded with a |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
198 '_' to indicate the client portion of the test. Ex: |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
199 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
200 def testFoo(self): |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
201 # Server portion |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
202 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
203 def _testFoo(self): |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
204 # Client portion |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
205 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
206 Any exceptions raised by the clients during their tests |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
207 are caught and transferred to the main thread to alert |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
208 the testing framework. |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
209 |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
210 Note, the server setup function cannot call any blocking |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
211 functions that rely on the client thread during setup, |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
212 unless serverExplicitReady() is called just before |
|
23909
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
213 the blocking call (such as in setting up a client/server |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
214 connection and performing the accept() in setUp(). |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
215 """ |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
216 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
217 def __init__(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
218 # Swap the true setup function |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
219 self.__setUp = self.setUp |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
220 self.__tearDown = self.tearDown |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
221 self.setUp = self._setUp |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
222 self.tearDown = self._tearDown |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
223 |
|
23909
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
224 def serverExplicitReady(self): |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
225 """This method allows the server to explicitly indicate that |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
226 it wants the client thread to proceed. This is useful if the |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
227 server is about to execute a blocking routine that is |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
228 dependent upon the client thread during its setup routine.""" |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
229 self.server_ready.set() |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
230 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
231 def _setUp(self): |
|
23909
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
232 self.server_ready = threading.Event() |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
233 self.client_ready = threading.Event() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
234 self.done = threading.Event() |
|
46899
bd2c95c165ea
Rename Queue module to queue.
Alexandre Vassalotti <alexandre@peadrop.com>
parents:
46370
diff
changeset
|
235 self.queue = queue.Queue(1) |
|
72849
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
236 self.server_crashed = False |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
237 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
238 # Do some munging to start the client test. |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23814
diff
changeset
|
239 methodname = self.id() |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23814
diff
changeset
|
240 i = methodname.rfind('.') |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23814
diff
changeset
|
241 methodname = methodname[i+1:] |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23814
diff
changeset
|
242 test_method = getattr(self, '_' + methodname) |
|
23800
bf1555a92711
Remove some overly complicated ways to concatenate and repeat strings
Guido van Rossum <guido@python.org>
parents:
23799
diff
changeset
|
243 self.client_thread = thread.start_new_thread( |
|
bf1555a92711
Remove some overly complicated ways to concatenate and repeat strings
Guido van Rossum <guido@python.org>
parents:
23799
diff
changeset
|
244 self.clientRun, (test_method,)) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
245 |
|
72849
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
246 try: |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
247 self.__setUp() |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
248 except: |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
249 self.server_crashed = True |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
250 raise |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
251 finally: |
|
23909
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
252 self.server_ready.set() |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
253 self.client_ready.wait() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
254 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
255 def _tearDown(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
256 self.__tearDown() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
257 self.done.wait() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
258 |
|
44675
627f2e2273b9
Remove Queue.empty() and Queue.full() in favor of using qsize() or trapping the Empty and Full exceptions.
Raymond Hettinger <python@rcn.com>
parents:
44604
diff
changeset
|
259 if self.queue.qsize(): |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
260 exc = self.queue.get() |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
261 raise exc |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
262 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
263 def clientRun(self, test_func): |
|
23909
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
264 self.server_ready.wait() |
|
72448
aa4b9ed71538
Fix a race condition in test_socket.ThreadableTest: the client is reported as
Charles-François Natali <neologix@free.fr>
parents:
70016
diff
changeset
|
265 self.clientSetUp() |
|
23909
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
266 self.client_ready.set() |
|
72849
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
267 if self.server_crashed: |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
268 self.clientTearDown() |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
269 return |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41809
diff
changeset
|
270 if not hasattr(test_func, '__call__'): |
|
43014
9834301a2fd3
Raise statement normalization in Lib/test/.
Collin Winter <collinw@gmail.com>
parents:
42637
diff
changeset
|
271 raise TypeError("test_func must be a callable function") |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
272 try: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
273 test_func() |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
274 except BaseException as e: |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
275 self.queue.put(e) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
276 finally: |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
277 self.clientTearDown() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
278 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
279 def clientSetUp(self): |
|
43014
9834301a2fd3
Raise statement normalization in Lib/test/.
Collin Winter <collinw@gmail.com>
parents:
42637
diff
changeset
|
280 raise NotImplementedError("clientSetUp must be implemented.") |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
281 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
282 def clientTearDown(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
283 self.done.set() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
284 thread.exit() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
285 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
286 class ThreadedTCPSocketTest(SocketTCPTest, ThreadableTest): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
287 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
288 def __init__(self, methodName='runTest'): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
289 SocketTCPTest.__init__(self, methodName=methodName) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
290 ThreadableTest.__init__(self) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
291 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
292 def clientSetUp(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
293 self.cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
294 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
295 def clientTearDown(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
296 self.cli.close() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
297 self.cli = None |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
298 ThreadableTest.clientTearDown(self) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
299 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
300 class ThreadedUDPSocketTest(SocketUDPTest, ThreadableTest): |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
301 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
302 def __init__(self, methodName='runTest'): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
303 SocketUDPTest.__init__(self, methodName=methodName) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
304 ThreadableTest.__init__(self) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
305 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
306 def clientSetUp(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
307 self.cli = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
308 |
|
65926
8d659a5479ca
Merged revisions 86151 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
65429
diff
changeset
|
309 def clientTearDown(self): |
|
8d659a5479ca
Merged revisions 86151 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
65429
diff
changeset
|
310 self.cli.close() |
|
8d659a5479ca
Merged revisions 86151 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
65429
diff
changeset
|
311 self.cli = None |
|
8d659a5479ca
Merged revisions 86151 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
65429
diff
changeset
|
312 ThreadableTest.clientTearDown(self) |
|
8d659a5479ca
Merged revisions 86151 via svnmerge from
Brian Curtin <brian.curtin@gmail.com>
parents:
65429
diff
changeset
|
313 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
314 class ThreadedCANSocketTest(SocketCANTest, ThreadableTest): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
315 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
316 def __init__(self, methodName='runTest'): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
317 SocketCANTest.__init__(self, methodName=methodName) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
318 ThreadableTest.__init__(self) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
319 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
320 def clientSetUp(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
321 self.cli = socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
322 try: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
323 self.cli.bind((self.interface,)) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
324 except OSError: |
|
72849
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
325 # skipTest should not be called here, and will be called in the |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
326 # server instead |
|
f7f9d5ac6d60
Fix the threading infrastructure in test_socket to support skipping
Antoine Pitrou <solipsis@pitrou.net>
parents:
72758
diff
changeset
|
327 pass |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
328 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
329 def clientTearDown(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
330 self.cli.close() |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
331 self.cli = None |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
332 ThreadableTest.clientTearDown(self) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
333 |
|
73478
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
334 class ThreadedRDSSocketTest(SocketRDSTest, ThreadableTest): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
335 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
336 def __init__(self, methodName='runTest'): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
337 SocketRDSTest.__init__(self, methodName=methodName) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
338 ThreadableTest.__init__(self) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
339 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
340 def clientSetUp(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
341 self.cli = socket.socket(socket.PF_RDS, socket.SOCK_SEQPACKET, 0) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
342 try: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
343 # RDS sockets must be bound explicitly to send or receive data |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
344 self.cli.bind((HOST, 0)) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
345 self.cli_addr = self.cli.getsockname() |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
346 except OSError: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
347 # skipTest should not be called here, and will be called in the |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
348 # server instead |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
349 pass |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
350 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
351 def clientTearDown(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
352 self.cli.close() |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
353 self.cli = None |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
354 ThreadableTest.clientTearDown(self) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
355 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
356 class SocketConnectedTest(ThreadedTCPSocketTest): |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
357 """Socket tests for client-server connection. |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
358 |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
359 self.cli_conn is a client socket connected to the server. The |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
360 setUp() method guarantees that it is connected to the server. |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
361 """ |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
362 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
363 def __init__(self, methodName='runTest'): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
364 ThreadedTCPSocketTest.__init__(self, methodName=methodName) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
365 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
366 def setUp(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
367 ThreadedTCPSocketTest.setUp(self) |
|
23909
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
368 # Indicate explicitly we're ready for the client thread to |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
369 # proceed and then perform the blocking call to accept |
|
b16d4be6a232
Michael fixed the race conditions and removed the sleeps.
Guido van Rossum <guido@python.org>
parents:
23831
diff
changeset
|
370 self.serverExplicitReady() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
371 conn, addr = self.serv.accept() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
372 self.cli_conn = conn |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
373 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
374 def tearDown(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
375 self.cli_conn.close() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
376 self.cli_conn = None |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
377 ThreadedTCPSocketTest.tearDown(self) |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
378 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
379 def clientSetUp(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
380 ThreadedTCPSocketTest.clientSetUp(self) |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
381 self.cli.connect((HOST, self.port)) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
382 self.serv_conn = self.cli |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
383 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
384 def clientTearDown(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
385 self.serv_conn.close() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
386 self.serv_conn = None |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
387 ThreadedTCPSocketTest.clientTearDown(self) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
388 |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
389 class SocketPairTest(unittest.TestCase, ThreadableTest): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
390 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
391 def __init__(self, methodName='runTest'): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
392 unittest.TestCase.__init__(self, methodName=methodName) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
393 ThreadableTest.__init__(self) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
394 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
395 def setUp(self): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
396 self.serv, self.cli = socket.socketpair() |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
397 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
398 def tearDown(self): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
399 self.serv.close() |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
400 self.serv = None |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
401 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
402 def clientSetUp(self): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
403 pass |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
404 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
405 def clientTearDown(self): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
406 self.cli.close() |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
407 self.cli = None |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
408 ThreadableTest.clientTearDown(self) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
409 |
|
33076
836e77266f97
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
33063
diff
changeset
|
410 |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
411 # The following classes are used by the sendmsg()/recvmsg() tests. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
412 # Combining, for instance, ConnectedStreamTestMixin and TCPTestBase |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
413 # gives a drop-in replacement for SocketConnectedTest, but different |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
414 # address families can be used, and the attributes serv_addr and |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
415 # cli_addr will be set to the addresses of the endpoints. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
416 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
417 class SocketTestBase(unittest.TestCase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
418 """A base class for socket tests. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
419 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
420 Subclasses must provide methods newSocket() to return a new socket |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
421 and bindSock(sock) to bind it to an unused address. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
422 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
423 Creates a socket self.serv and sets self.serv_addr to its address. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
424 """ |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
425 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
426 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
427 self.serv = self.newSocket() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
428 self.bindServer() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
429 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
430 def bindServer(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
431 """Bind server socket and set self.serv_addr to its address.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
432 self.bindSock(self.serv) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
433 self.serv_addr = self.serv.getsockname() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
434 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
435 def tearDown(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
436 self.serv.close() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
437 self.serv = None |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
438 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
439 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
440 class SocketListeningTestMixin(SocketTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
441 """Mixin to listen on the server socket.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
442 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
443 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
444 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
445 self.serv.listen(1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
446 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
447 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
448 class ThreadedSocketTestMixin(ThreadSafeCleanupTestCase, SocketTestBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
449 ThreadableTest): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
450 """Mixin to add client socket and allow client/server tests. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
451 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
452 Client socket is self.cli and its address is self.cli_addr. See |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
453 ThreadableTest for usage information. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
454 """ |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
455 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
456 def __init__(self, *args, **kwargs): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
457 super().__init__(*args, **kwargs) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
458 ThreadableTest.__init__(self) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
459 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
460 def clientSetUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
461 self.cli = self.newClientSocket() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
462 self.bindClient() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
463 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
464 def newClientSocket(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
465 """Return a new socket for use as client.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
466 return self.newSocket() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
467 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
468 def bindClient(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
469 """Bind client socket and set self.cli_addr to its address.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
470 self.bindSock(self.cli) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
471 self.cli_addr = self.cli.getsockname() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
472 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
473 def clientTearDown(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
474 self.cli.close() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
475 self.cli = None |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
476 ThreadableTest.clientTearDown(self) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
477 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
478 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
479 class ConnectedStreamTestMixin(SocketListeningTestMixin, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
480 ThreadedSocketTestMixin): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
481 """Mixin to allow client/server stream tests with connected client. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
482 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
483 Server's socket representing connection to client is self.cli_conn |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
484 and client's connection to server is self.serv_conn. (Based on |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
485 SocketConnectedTest.) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
486 """ |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
487 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
488 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
489 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
490 # Indicate explicitly we're ready for the client thread to |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
491 # proceed and then perform the blocking call to accept |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
492 self.serverExplicitReady() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
493 conn, addr = self.serv.accept() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
494 self.cli_conn = conn |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
495 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
496 def tearDown(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
497 self.cli_conn.close() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
498 self.cli_conn = None |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
499 super().tearDown() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
500 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
501 def clientSetUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
502 super().clientSetUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
503 self.cli.connect(self.serv_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
504 self.serv_conn = self.cli |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
505 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
506 def clientTearDown(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
507 self.serv_conn.close() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
508 self.serv_conn = None |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
509 super().clientTearDown() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
510 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
511 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
512 class UnixSocketTestBase(SocketTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
513 """Base class for Unix-domain socket tests.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
514 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
515 # This class is used for file descriptor passing tests, so we |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
516 # create the sockets in a private directory so that other users |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
517 # can't send anything that might be problematic for a privileged |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
518 # user running the tests. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
519 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
520 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
521 self.dir_path = tempfile.mkdtemp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
522 self.addCleanup(os.rmdir, self.dir_path) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
523 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
524 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
525 def bindSock(self, sock): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
526 path = tempfile.mktemp(dir=self.dir_path) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
527 sock.bind(path) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
528 self.addCleanup(support.unlink, path) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
529 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
530 class UnixStreamBase(UnixSocketTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
531 """Base class for Unix-domain SOCK_STREAM tests.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
532 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
533 def newSocket(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
534 return socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
535 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
536 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
537 class InetTestBase(SocketTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
538 """Base class for IPv4 socket tests.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
539 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
540 host = HOST |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
541 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
542 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
543 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
544 self.port = self.serv_addr[1] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
545 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
546 def bindSock(self, sock): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
547 support.bind_port(sock, host=self.host) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
548 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
549 class TCPTestBase(InetTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
550 """Base class for TCP-over-IPv4 tests.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
551 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
552 def newSocket(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
553 return socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
554 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
555 class UDPTestBase(InetTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
556 """Base class for UDP-over-IPv4 tests.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
557 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
558 def newSocket(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
559 return socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
560 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
561 class SCTPStreamBase(InetTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
562 """Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
563 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
564 def newSocket(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
565 return socket.socket(socket.AF_INET, socket.SOCK_STREAM, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
566 socket.IPPROTO_SCTP) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
567 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
568 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
569 class Inet6TestBase(InetTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
570 """Base class for IPv6 socket tests.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
571 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
572 # Don't use "localhost" here - it may not have an IPv6 address |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
573 # assigned to it by default (e.g. in /etc/hosts), and if someone |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
574 # has assigned it an IPv4-mapped address, then it's unlikely to |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
575 # work with the full IPv6 API. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
576 host = "::1" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
577 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
578 class UDP6TestBase(Inet6TestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
579 """Base class for UDP-over-IPv6 tests.""" |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
580 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
581 def newSocket(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
582 return socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
583 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
584 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
585 # Test-skipping decorators for use with ThreadableTest. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
586 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
587 def skipWithClientIf(condition, reason): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
588 """Skip decorated test if condition is true, add client_skip decorator. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
589 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
590 If the decorated object is not a class, sets its attribute |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
591 "client_skip" to a decorator which will return an empty function |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
592 if the test is to be skipped, or the original function if it is |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
593 not. This can be used to avoid running the client part of a |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
594 skipped test when using ThreadableTest. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
595 """ |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
596 def client_pass(*args, **kwargs): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
597 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
598 def skipdec(obj): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
599 retval = unittest.skip(reason)(obj) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
600 if not isinstance(obj, type): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
601 retval.client_skip = lambda f: client_pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
602 return retval |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
603 def noskipdec(obj): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
604 if not (isinstance(obj, type) or hasattr(obj, "client_skip")): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
605 obj.client_skip = lambda f: f |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
606 return obj |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
607 return skipdec if condition else noskipdec |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
608 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
609 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
610 def requireAttrs(obj, *attributes): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
611 """Skip decorated test if obj is missing any of the given attributes. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
612 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
613 Sets client_skip attribute as skipWithClientIf() does. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
614 """ |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
615 missing = [name for name in attributes if not hasattr(obj, name)] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
616 return skipWithClientIf( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
617 missing, "don't have " + ", ".join(name for name in missing)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
618 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
619 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
620 def requireSocket(*args): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
621 """Skip decorated test if a socket cannot be created with given arguments. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
622 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
623 When an argument is given as a string, will use the value of that |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
624 attribute of the socket module, or skip the test if it doesn't |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
625 exist. Sets client_skip attribute as skipWithClientIf() does. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
626 """ |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
627 err = None |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
628 missing = [obj for obj in args if |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
629 isinstance(obj, str) and not hasattr(socket, obj)] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
630 if missing: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
631 err = "don't have " + ", ".join(name for name in missing) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
632 else: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
633 callargs = [getattr(socket, obj) if isinstance(obj, str) else obj |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
634 for obj in args] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
635 try: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
636 s = socket.socket(*callargs) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
637 except OSError as e: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
638 # XXX: check errno? |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
639 err = str(e) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
640 else: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
641 s.close() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
642 return skipWithClientIf( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
643 err is not None, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
644 "can't create socket({0}): {1}".format( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
645 ", ".join(str(o) for o in args), err)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
646 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
647 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
648 ####################################################################### |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
649 ## Begin Tests |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
650 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
651 class GeneralModuleTests(unittest.TestCase): |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
652 |
|
41941
e4ab08039c75
Simplify socket_repr() by using PyUnicode_FromFormat()
Walter Dörwald <walter@livinglogic.de>
parents:
41824
diff
changeset
|
653 def test_repr(self): |
|
e4ab08039c75
Simplify socket_repr() by using PyUnicode_FromFormat()
Walter Dörwald <walter@livinglogic.de>
parents:
41824
diff
changeset
|
654 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
655 self.addCleanup(s.close) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
656 self.assertTrue(repr(s).startswith("<socket.socket object")) |
|
41941
e4ab08039c75
Simplify socket_repr() by using PyUnicode_FromFormat()
Walter Dörwald <walter@livinglogic.de>
parents:
41824
diff
changeset
|
657 |
|
32160
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
658 def test_weakref(self): |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
659 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
660 p = proxy(s) |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
661 self.assertEqual(p.fileno(), s.fileno()) |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
662 s.close() |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
663 s = None |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
664 try: |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
665 p.fileno() |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
666 except ReferenceError: |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
667 pass |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
668 else: |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
669 self.fail('Socket proxy still exists') |
|
aec9c98a47d2
Add weakref support to sockets and re pattern objects.
Raymond Hettinger <python@rcn.com>
parents:
31833
diff
changeset
|
670 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
671 def testSocketError(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
672 # Testing socket module exceptions |
|
69940
9af64d83c217
Refactor buggy test to correctly use the msg argument of assertRaises.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
69918
diff
changeset
|
673 msg = "Error raising socket exception (%s)." |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
674 with self.assertRaises(OSError, msg=msg % 'OSError'): |
|
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
675 raise OSError |
|
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
676 with self.assertRaises(OSError, msg=msg % 'socket.herror'): |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
677 raise socket.herror |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
678 with self.assertRaises(OSError, msg=msg % 'socket.gaierror'): |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
679 raise socket.gaierror |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
680 |
| 69916 | 681 def testSendtoErrors(self): |
| 682 # Testing that sendto doens't masks failures. See #10169. | |
| 683 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
| 684 self.addCleanup(s.close) | |
| 685 s.bind(('', 0)) | |
| 686 sockname = s.getsockname() | |
| 687 # 2 args | |
| 69917 | 688 with self.assertRaises(TypeError) as cm: |
| 69916 | 689 s.sendto('\u2620', sockname) |
| 69917 | 690 self.assertEqual(str(cm.exception), |
| 691 "'str' does not support the buffer interface") | |
| 692 with self.assertRaises(TypeError) as cm: | |
| 69916 | 693 s.sendto(5j, sockname) |
| 69917 | 694 self.assertEqual(str(cm.exception), |
| 695 "'complex' does not support the buffer interface") | |
| 696 with self.assertRaises(TypeError) as cm: | |
| 69916 | 697 s.sendto(b'foo', None) |
| 69917 | 698 self.assertIn('not NoneType',str(cm.exception)) |
| 69916 | 699 # 3 args |
| 69917 | 700 with self.assertRaises(TypeError) as cm: |
| 69916 | 701 s.sendto('\u2620', 0, sockname) |
| 69917 | 702 self.assertEqual(str(cm.exception), |
| 703 "'str' does not support the buffer interface") | |
| 704 with self.assertRaises(TypeError) as cm: | |
| 69916 | 705 s.sendto(5j, 0, sockname) |
| 69917 | 706 self.assertEqual(str(cm.exception), |
| 707 "'complex' does not support the buffer interface") | |
| 708 with self.assertRaises(TypeError) as cm: | |
| 69916 | 709 s.sendto(b'foo', 0, None) |
| 69917 | 710 self.assertIn('not NoneType', str(cm.exception)) |
| 711 with self.assertRaises(TypeError) as cm: | |
| 69916 | 712 s.sendto(b'foo', 'bar', sockname) |
| 69917 | 713 self.assertIn('an integer is required', str(cm.exception)) |
| 714 with self.assertRaises(TypeError) as cm: | |
| 69916 | 715 s.sendto(b'foo', None, None) |
| 69917 | 716 self.assertIn('an integer is required', str(cm.exception)) |
| 69916 | 717 # wrong number of args |
| 69917 | 718 with self.assertRaises(TypeError) as cm: |
| 69916 | 719 s.sendto(b'foo') |
| 69917 | 720 self.assertIn('(1 given)', str(cm.exception)) |
| 721 with self.assertRaises(TypeError) as cm: | |
| 69916 | 722 s.sendto(b'foo', 0, sockname, 4) |
| 69917 | 723 self.assertIn('(4 given)', str(cm.exception)) |
| 69916 | 724 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
725 def testCrucialConstants(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
726 # Testing for mission critical constants |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
727 socket.AF_INET |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
728 socket.SOCK_STREAM |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
729 socket.SOCK_DGRAM |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
730 socket.SOCK_RAW |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
731 socket.SOCK_RDM |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
732 socket.SOCK_SEQPACKET |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
733 socket.SOL_SOCKET |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
734 socket.SO_REUSEADDR |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
735 |
|
23831
f7306ae8662d
Temporarily disable the timeout and socket tests.
Guido van Rossum <guido@python.org>
parents:
23819
diff
changeset
|
736 def testHostnameRes(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
737 # Testing hostname resolution mechanisms |
|
23831
f7306ae8662d
Temporarily disable the timeout and socket tests.
Guido van Rossum <guido@python.org>
parents:
23819
diff
changeset
|
738 hostname = socket.gethostname() |
|
26799
507aa96a128f
Skip testHostnameRes() if gethostbyname() raises an exception.
Guido van Rossum <guido@python.org>
parents:
25285
diff
changeset
|
739 try: |
|
507aa96a128f
Skip testHostnameRes() if gethostbyname() raises an exception.
Guido van Rossum <guido@python.org>
parents:
25285
diff
changeset
|
740 ip = socket.gethostbyname(hostname) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
741 except OSError: |
|
26799
507aa96a128f
Skip testHostnameRes() if gethostbyname() raises an exception.
Guido van Rossum <guido@python.org>
parents:
25285
diff
changeset
|
742 # Probably name lookup wasn't set up right; skip this test |
|
507aa96a128f
Skip testHostnameRes() if gethostbyname() raises an exception.
Guido van Rossum <guido@python.org>
parents:
25285
diff
changeset
|
743 return |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
744 self.assertTrue(ip.find('.') >= 0, "Error resolving host to ip.") |
|
26800
b2b4797052c6
Also skip testHostnameRes() if gethostbyaddr() raises an exception.
Guido van Rossum <guido@python.org>
parents:
26799
diff
changeset
|
745 try: |
|
b2b4797052c6
Also skip testHostnameRes() if gethostbyaddr() raises an exception.
Guido van Rossum <guido@python.org>
parents:
26799
diff
changeset
|
746 hname, aliases, ipaddrs = socket.gethostbyaddr(ip) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
747 except OSError: |
|
26800
b2b4797052c6
Also skip testHostnameRes() if gethostbyaddr() raises an exception.
Guido van Rossum <guido@python.org>
parents:
26799
diff
changeset
|
748 # Probably a similar problem as above; skip this test |
|
b2b4797052c6
Also skip testHostnameRes() if gethostbyaddr() raises an exception.
Guido van Rossum <guido@python.org>
parents:
26799
diff
changeset
|
749 return |
|
34739
0c82a7ef9554
Fix test_socket's test for socket.getfqdn() to also accept the result from
Brett Cannon <bcannon@gmail.com>
parents:
34014
diff
changeset
|
750 all_host_names = [hostname, hname] + aliases |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
751 fqhn = socket.getfqdn(ip) |
|
23831
f7306ae8662d
Temporarily disable the timeout and socket tests.
Guido van Rossum <guido@python.org>
parents:
23819
diff
changeset
|
752 if not fqhn in all_host_names: |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
753 self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names))) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
754 |
|
68194
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
755 @unittest.skipUnless(hasattr(socket, 'sethostname'), "test needs socket.sethostname()") |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
756 @unittest.skipUnless(hasattr(socket, 'gethostname'), "test needs socket.gethostname()") |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
757 def test_sethostname(self): |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
758 oldhn = socket.gethostname() |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
759 try: |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
760 socket.sethostname('new') |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
761 except OSError as e: |
|
68194
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
762 if e.errno == errno.EPERM: |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
763 self.skipTest("test should be run as root") |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
764 else: |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
765 raise |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
766 try: |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
767 # running test as root! |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
768 self.assertEqual(socket.gethostname(), 'new') |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
769 # Should work with bytes objects too |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
770 socket.sethostname(b'bar') |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
771 self.assertEqual(socket.gethostname(), 'bar') |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
772 finally: |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
773 socket.sethostname(oldhn) |
|
a2d61117c2d2
Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68159
diff
changeset
|
774 |
|
70136
c2515cb23d9b
Issue #1746656: Add if_nameindex, if_nametoindex, if_indextoname
Gregory P. Smith <greg@krypto.org>
parents:
70017
diff
changeset
|
775 @unittest.skipUnless(hasattr(socket, 'if_nameindex'), |
|
c2515cb23d9b
Issue #1746656: Add if_nameindex, if_nametoindex, if_indextoname
Gregory P. Smith <greg@krypto.org>
parents:
70017
diff
changeset
|
776 'socket.if_nameindex() not available.') |
|
c2515cb23d9b
Issue #1746656: Add if_nameindex, if_nametoindex, if_indextoname
Gregory P. Smith <greg@krypto.org>
parents:
70017
diff
changeset
|
777 def testInterfaceNameIndex(self): |
|
c2515cb23d9b
Issue #1746656: Add if_nameindex, if_nametoindex, if_indextoname
Gregory P. Smith <greg@krypto.org>
parents:
70017
diff
changeset
|
778 interfaces = socket.if_nameindex() |
|
c2515cb23d9b
Issue #1746656: Add if_nameindex, if_nametoindex, if_indextoname
Gregory P. Smith <greg@krypto.org>
parents:
70017
diff
changeset
|
779 for index, name in interfaces: |
|
70226
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
780 self.assertIsInstance(index, int) |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
781 self.assertIsInstance(name, str) |
|
70136
c2515cb23d9b
Issue #1746656: Add if_nameindex, if_nametoindex, if_indextoname
Gregory P. Smith <greg@krypto.org>
parents:
70017
diff
changeset
|
782 # interface indices are non-zero integers |
|
c2515cb23d9b
Issue #1746656: Add if_nameindex, if_nametoindex, if_indextoname
Gregory P. Smith <greg@krypto.org>
parents:
70017
diff
changeset
|
783 self.assertGreater(index, 0) |
|
70226
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
784 _index = socket.if_nametoindex(name) |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
785 self.assertIsInstance(_index, int) |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
786 self.assertEqual(index, _index) |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
787 _name = socket.if_indextoname(index) |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
788 self.assertIsInstance(_name, str) |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
789 self.assertEqual(name, _name) |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
790 |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
791 @unittest.skipUnless(hasattr(socket, 'if_nameindex'), |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
792 'socket.if_nameindex() not available.') |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
793 def testInvalidInterfaceNameIndex(self): |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
794 # test nonexistent interface index/name |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
795 self.assertRaises(OSError, socket.if_indextoname, 0) |
|
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
796 self.assertRaises(OSError, socket.if_nametoindex, '_DEADBEEF') |
|
70226
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
797 # test with invalid values |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
798 self.assertRaises(TypeError, socket.if_nametoindex, 0) |
|
cc60d0283fad
Issue #1746656: make if_nameindex(), if_indextoname() and if_nametoindex()
Charles-François Natali <neologix@free.fr>
parents:
70136
diff
changeset
|
799 self.assertRaises(TypeError, socket.if_indextoname, '_DEADBEEF') |
|
70136
c2515cb23d9b
Issue #1746656: Add if_nameindex, if_nametoindex, if_indextoname
Gregory P. Smith <greg@krypto.org>
parents:
70017
diff
changeset
|
800 |
|
23799
2ad13ee6d850
Don't test for Java, test for sys.getrefcount.
Guido van Rossum <guido@python.org>
parents:
23798
diff
changeset
|
801 def testRefCountGetNameInfo(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
802 # Testing reference count for getnameinfo |
|
23799
2ad13ee6d850
Don't test for Java, test for sys.getrefcount.
Guido van Rossum <guido@python.org>
parents:
23798
diff
changeset
|
803 if hasattr(sys, "getrefcount"): |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
804 try: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
805 # On some versions, this loses a reference |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
806 orig = sys.getrefcount(__name__) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
807 socket.getnameinfo(__name__,0) |
|
56368
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
55593
diff
changeset
|
808 except TypeError: |
|
39648
efe3f2c0da5e
Killed the <> operator. You must now use !=.
Guido van Rossum <guido@python.org>
parents:
39442
diff
changeset
|
809 if sys.getrefcount(__name__) != orig: |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
810 self.fail("socket.getnameinfo loses a reference") |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
811 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
812 def testInterpreterCrash(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
813 # Making sure getnameinfo doesn't crash the interpreter |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
814 try: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
815 # On some versions, this crashes the interpreter. |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
816 socket.getnameinfo(('x', 0, 0, 0), 0) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
817 except OSError: |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
818 pass |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
819 |
|
25285
4d6f8204234a
Since it tests both ntohl and ntohs, the test should not be called
Guido van Rossum <guido@python.org>
parents:
25256
diff
changeset
|
820 def testNtoH(self): |
|
25256
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
821 # This just checks that htons etc. are their own inverse, |
|
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
822 # when looking at the lower 16 or 32 bits. |
|
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
823 sizes = {socket.htonl: 32, socket.ntohl: 32, |
|
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
824 socket.htons: 16, socket.ntohs: 16} |
|
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
825 for func, size in sizes.items(): |
|
40644
1c26505c1de6
Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents:
40638
diff
changeset
|
826 mask = (1<<size) - 1 |
|
25256
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
827 for i in (0, 1, 0xffff, ~0xffff, 2, 0x01234567, 0x76543210): |
|
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
828 self.assertEqual(i & mask, func(func(i&mask)) & mask) |
|
24450
747fa65a9b47
Repair testNtoH for large long arguments.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
829 |
|
25256
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
830 swapped = func(mask) |
|
04a541e68964
Maybe this fixes test_socket on 64-bit Linux.
Guido van Rossum <guido@python.org>
parents:
25152
diff
changeset
|
831 self.assertEqual(swapped & mask, mask) |
|
40644
1c26505c1de6
Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents:
40638
diff
changeset
|
832 self.assertRaises(OverflowError, func, 1<<34) |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24374
diff
changeset
|
833 |
|
40638
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
834 def testNtoHErrors(self): |
|
40644
1c26505c1de6
Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents:
40638
diff
changeset
|
835 good_values = [ 1, 2, 3, 1, 2, 3 ] |
|
1c26505c1de6
Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents:
40638
diff
changeset
|
836 bad_values = [ -1, -2, -3, -1, -2, -3 ] |
|
40638
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
837 for k in good_values: |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
838 socket.ntohl(k) |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
839 socket.ntohs(k) |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
840 socket.htonl(k) |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
841 socket.htons(k) |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
842 for k in bad_values: |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
843 self.assertRaises(OverflowError, socket.ntohl, k) |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
844 self.assertRaises(OverflowError, socket.ntohs, k) |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
845 self.assertRaises(OverflowError, socket.htonl, k) |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
846 self.assertRaises(OverflowError, socket.htons, k) |
|
86ce1df6a88e
Merged revisions 53434 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40587
diff
changeset
|
847 |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
848 def testGetServBy(self): |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
849 eq = self.assertEqual |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
850 # Find one service that exists, then check all the related interfaces. |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
851 # I've ordered this by protocols that have both a tcp and udp |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
852 # protocol, at least for modern Linuxes. |
|
72011
b5ccdf7c032a
Issue #12326: refactor usage of sys.platform
Victor Stinner <victor.stinner@haypocalc.com>
parents:
71897
diff
changeset
|
853 if (sys.platform.startswith(('freebsd', 'netbsd')) |
|
b5ccdf7c032a
Issue #12326: refactor usage of sys.platform
Victor Stinner <victor.stinner@haypocalc.com>
parents:
71897
diff
changeset
|
854 or sys.platform in ('linux', 'darwin')): |
|
32630
059dae06585b
FreeBSD's services file contains an additional echo service entry, with
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
32508
diff
changeset
|
855 # avoid the 'echo' service on this platform, as there is an |
|
059dae06585b
FreeBSD's services file contains an additional echo service entry, with
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
32508
diff
changeset
|
856 # assumption breaking non-standard port/protocol entry |
|
059dae06585b
FreeBSD's services file contains an additional echo service entry, with
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
32508
diff
changeset
|
857 services = ('daytime', 'qotd', 'domain') |
|
059dae06585b
FreeBSD's services file contains an additional echo service entry, with
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
32508
diff
changeset
|
858 else: |
|
059dae06585b
FreeBSD's services file contains an additional echo service entry, with
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
32508
diff
changeset
|
859 services = ('echo', 'daytime', 'domain') |
|
059dae06585b
FreeBSD's services file contains an additional echo service entry, with
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
32508
diff
changeset
|
860 for service in services: |
|
24485
f05a311d7988
testGetServByName shouldn't check for getservbyname - the socket module
Skip Montanaro <skip@pobox.com>
parents:
24470
diff
changeset
|
861 try: |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
862 port = socket.getservbyname(service, 'tcp') |
|
24485
f05a311d7988
testGetServByName shouldn't check for getservbyname - the socket module
Skip Montanaro <skip@pobox.com>
parents:
24470
diff
changeset
|
863 break |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
864 except OSError: |
|
24485
f05a311d7988
testGetServByName shouldn't check for getservbyname - the socket module
Skip Montanaro <skip@pobox.com>
parents:
24470
diff
changeset
|
865 pass |
|
31503
eb48b2503f20
Fix indentation error in testGetServByName and rewrite loop to avoid clumsy
Skip Montanaro <skip@pobox.com>
parents:
29662
diff
changeset
|
866 else: |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
867 raise OSError |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
868 # Try same call with optional protocol omitted |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
869 port2 = socket.getservbyname(service) |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
870 eq(port, port2) |
|
82618
3f5f961262ec
Issue #17047: remove doubled words found in 2.7 to 3.4 Lib/*,
Terry Jan Reedy <tjreedy@udel.edu>
parents:
81587
diff
changeset
|
871 # Try udp, but don't barf if it doesn't exist |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
872 try: |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
873 udpport = socket.getservbyname(service, 'udp') |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
874 except OSError: |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
875 udpport = None |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
876 else: |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
877 eq(udpport, port) |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
878 # Now make sure the lookup by port returns the same service name |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
879 eq(socket.getservbyport(port2), service) |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
880 eq(socket.getservbyport(port, 'tcp'), service) |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
881 if udpport is not None: |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32160
diff
changeset
|
882 eq(socket.getservbyport(udpport, 'udp'), service) |
|
51382
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
883 # Make sure getservbyport does not accept out of range ports. |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
884 self.assertRaises(OverflowError, socket.getservbyport, -1) |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
885 self.assertRaises(OverflowError, socket.getservbyport, 65536) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
886 |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
887 def testDefaultTimeout(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
888 # Testing default timeout |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
889 # The default timeout should initially be None |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
890 self.assertEqual(socket.getdefaulttimeout(), None) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
891 s = socket.socket() |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
892 self.assertEqual(s.gettimeout(), None) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
893 s.close() |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
894 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
895 # Set the default timeout to 10, and see if it propagates |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
896 socket.setdefaulttimeout(10) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
897 self.assertEqual(socket.getdefaulttimeout(), 10) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
898 s = socket.socket() |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
899 self.assertEqual(s.gettimeout(), 10) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
900 s.close() |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
901 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
902 # Reset the default timeout to None, and see if it propagates |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
903 socket.setdefaulttimeout(None) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
904 self.assertEqual(socket.getdefaulttimeout(), None) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
905 s = socket.socket() |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
906 self.assertEqual(s.gettimeout(), None) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
907 s.close() |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
908 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
909 # Check that setting it to an invalid value raises ValueError |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
910 self.assertRaises(ValueError, socket.setdefaulttimeout, -1) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
911 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
912 # Check that setting it to an invalid type raises TypeError |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
913 self.assertRaises(TypeError, socket.setdefaulttimeout, "spam") |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
914 |
|
51579
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51382
diff
changeset
|
915 def testIPv4_inet_aton_fourbytes(self): |
|
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51382
diff
changeset
|
916 if not hasattr(socket, 'inet_aton'): |
|
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51382
diff
changeset
|
917 return # No inet_aton, nothing to check |
|
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51382
diff
changeset
|
918 # Test that issue1008086 and issue767150 are fixed. |
|
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51382
diff
changeset
|
919 # It must return 4 bytes. |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
920 self.assertEqual(b'\x00'*4, socket.inet_aton('0.0.0.0')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
921 self.assertEqual(b'\xff'*4, socket.inet_aton('255.255.255.255')) |
|
51579
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51382
diff
changeset
|
922 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
923 def testIPv4toString(self): |
|
28833
fa159fef2730
Skip testing inet_ntop() an inet_pton() if they aren't defined.
Guido van Rossum <guido@python.org>
parents:
28818
diff
changeset
|
924 if not hasattr(socket, 'inet_pton'): |
|
fa159fef2730
Skip testing inet_ntop() an inet_pton() if they aren't defined.
Guido van Rossum <guido@python.org>
parents:
28818
diff
changeset
|
925 return # No inet_pton() on this platform |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
926 from socket import inet_aton as f, inet_pton, AF_INET |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
927 g = lambda a: inet_pton(AF_INET, a) |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
928 |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
929 assertInvalid = lambda func,a: self.assertRaises( |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
930 (OSError, ValueError), func, a |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
931 ) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
932 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
933 self.assertEqual(b'\x00\x00\x00\x00', f('0.0.0.0')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
934 self.assertEqual(b'\xff\x00\xff\x00', f('255.0.255.0')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
935 self.assertEqual(b'\xaa\xaa\xaa\xaa', f('170.170.170.170')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
936 self.assertEqual(b'\x01\x02\x03\x04', f('1.2.3.4')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
937 self.assertEqual(b'\xff\xff\xff\xff', f('255.255.255.255')) |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
938 assertInvalid(f, '0.0.0.') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
939 assertInvalid(f, '300.0.0.0') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
940 assertInvalid(f, 'a.0.0.0') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
941 assertInvalid(f, '1.2.3.4.5') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
942 assertInvalid(f, '::1') |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
943 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
944 self.assertEqual(b'\x00\x00\x00\x00', g('0.0.0.0')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
945 self.assertEqual(b'\xff\x00\xff\x00', g('255.0.255.0')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
946 self.assertEqual(b'\xaa\xaa\xaa\xaa', g('170.170.170.170')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
947 self.assertEqual(b'\xff\xff\xff\xff', g('255.255.255.255')) |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
948 assertInvalid(g, '0.0.0.') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
949 assertInvalid(g, '300.0.0.0') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
950 assertInvalid(g, 'a.0.0.0') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
951 assertInvalid(g, '1.2.3.4.5') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
952 assertInvalid(g, '::1') |
|
29087
526f37fb380d
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
28917
diff
changeset
|
953 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
954 def testIPv6toString(self): |
|
28833
fa159fef2730
Skip testing inet_ntop() an inet_pton() if they aren't defined.
Guido van Rossum <guido@python.org>
parents:
28818
diff
changeset
|
955 if not hasattr(socket, 'inet_pton'): |
|
fa159fef2730
Skip testing inet_ntop() an inet_pton() if they aren't defined.
Guido van Rossum <guido@python.org>
parents:
28818
diff
changeset
|
956 return # No inet_pton() on this platform |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
957 try: |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
958 from socket import inet_pton, AF_INET6, has_ipv6 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
959 if not has_ipv6: |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
960 return |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
961 except ImportError: |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
962 return |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
963 f = lambda a: inet_pton(AF_INET6, a) |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
964 assertInvalid = lambda a: self.assertRaises( |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
965 (OSError, ValueError), f, a |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
966 ) |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
967 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
968 self.assertEqual(b'\x00' * 16, f('::')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
969 self.assertEqual(b'\x00' * 16, f('0::0')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
970 self.assertEqual(b'\x00\x01' + b'\x00' * 14, f('1::')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
971 self.assertEqual( |
|
42169
e38047550383
Fix test_socket.py. Simple str/bytes issue with IPV6 addresse.
Guido van Rossum <guido@python.org>
parents:
41941
diff
changeset
|
972 b'\x45\xef\x76\xcb\x00\x1a\x56\xef\xaf\xeb\x0b\xac\x19\x24\xae\xae', |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
973 f('45ef:76cb:1a:56ef:afeb:bac:1924:aeae') |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
974 ) |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
975 self.assertEqual( |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
976 b'\xad\x42\x0a\xbc' + b'\x00' * 4 + b'\x01\x27\x00\x00\x02\x54\x00\x02', |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
977 f('ad42:abc::127:0:254:2') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
978 ) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
979 self.assertEqual(b'\x00\x12\x00\x0a' + b'\x00' * 12, f('12:a::')) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
980 assertInvalid('0x20::') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
981 assertInvalid(':::') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
982 assertInvalid('::0::') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
983 assertInvalid('1::abc::') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
984 assertInvalid('1::abc::def') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
985 assertInvalid('1:2:3:4:5:6:') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
986 assertInvalid('1:2:3:4:5:6') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
987 assertInvalid('1:2:3:4:5:6:7:8:') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
988 assertInvalid('1:2:3:4:5:6:7:8:0') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
989 |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
990 self.assertEqual(b'\x00' * 12 + b'\xfe\x2a\x17\x40', |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
991 f('::254.42.23.64') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
992 ) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
993 self.assertEqual( |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
994 b'\x00\x42' + b'\x00' * 8 + b'\xa2\x9b\xfe\x2a\x17\x40', |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
995 f('42::a29b:254.42.23.64') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
996 ) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
997 self.assertEqual( |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
998 b'\x00\x42\xa8\xb9\x00\x00\x00\x02\xff\xff\xa2\x9b\xfe\x2a\x17\x40', |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
999 f('42:a8b9:0:2:ffff:a29b:254.42.23.64') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1000 ) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1001 assertInvalid('255.254.253.252') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1002 assertInvalid('1::260.2.3.0') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1003 assertInvalid('1::0.be.e.0') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1004 assertInvalid('1:2:3:4:5:6:7:1.2.3.4') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1005 assertInvalid('::1.2.3.4:0') |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1006 assertInvalid('0.100.200.0:3:4:5:6:7:8') |
|
29087
526f37fb380d
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
28917
diff
changeset
|
1007 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1008 def testStringToIPv4(self): |
|
28833
fa159fef2730
Skip testing inet_ntop() an inet_pton() if they aren't defined.
Guido van Rossum <guido@python.org>
parents:
28818
diff
changeset
|
1009 if not hasattr(socket, 'inet_ntop'): |
|
fa159fef2730
Skip testing inet_ntop() an inet_pton() if they aren't defined.
Guido van Rossum <guido@python.org>
parents:
28818
diff
changeset
|
1010 return # No inet_ntop() on this platform |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1011 from socket import inet_ntoa as f, inet_ntop, AF_INET |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1012 g = lambda a: inet_ntop(AF_INET, a) |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1013 assertInvalid = lambda func,a: self.assertRaises( |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
1014 (OSError, ValueError), func, a |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1015 ) |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1016 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1017 self.assertEqual('1.0.1.0', f(b'\x01\x00\x01\x00')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1018 self.assertEqual('170.85.170.85', f(b'\xaa\x55\xaa\x55')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1019 self.assertEqual('255.255.255.255', f(b'\xff\xff\xff\xff')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1020 self.assertEqual('1.2.3.4', f(b'\x01\x02\x03\x04')) |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1021 assertInvalid(f, b'\x00' * 3) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1022 assertInvalid(f, b'\x00' * 5) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1023 assertInvalid(f, b'\x00' * 16) |
|
29087
526f37fb380d
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
28917
diff
changeset
|
1024 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1025 self.assertEqual('1.0.1.0', g(b'\x01\x00\x01\x00')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1026 self.assertEqual('170.85.170.85', g(b'\xaa\x55\xaa\x55')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1027 self.assertEqual('255.255.255.255', g(b'\xff\xff\xff\xff')) |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1028 assertInvalid(g, b'\x00' * 3) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1029 assertInvalid(g, b'\x00' * 5) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1030 assertInvalid(g, b'\x00' * 16) |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1031 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1032 def testStringToIPv6(self): |
|
28833
fa159fef2730
Skip testing inet_ntop() an inet_pton() if they aren't defined.
Guido van Rossum <guido@python.org>
parents:
28818
diff
changeset
|
1033 if not hasattr(socket, 'inet_ntop'): |
|
fa159fef2730
Skip testing inet_ntop() an inet_pton() if they aren't defined.
Guido van Rossum <guido@python.org>
parents:
28818
diff
changeset
|
1034 return # No inet_ntop() on this platform |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1035 try: |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1036 from socket import inet_ntop, AF_INET6, has_ipv6 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1037 if not has_ipv6: |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1038 return |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1039 except ImportError: |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1040 return |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1041 f = lambda a: inet_ntop(AF_INET6, a) |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1042 assertInvalid = lambda a: self.assertRaises( |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
1043 (OSError, ValueError), f, a |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1044 ) |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1045 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1046 self.assertEqual('::', f(b'\x00' * 16)) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1047 self.assertEqual('::1', f(b'\x00' * 15 + b'\x01')) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
1048 self.assertEqual( |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1049 'aef:b01:506:1001:ffff:9997:55:170', |
|
42169
e38047550383
Fix test_socket.py. Simple str/bytes issue with IPV6 addresse.
Guido van Rossum <guido@python.org>
parents:
41941
diff
changeset
|
1050 f(b'\x0a\xef\x0b\x01\x05\x06\x10\x01\xff\xff\x99\x97\x00\x55\x01\x70') |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1051 ) |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
26800
diff
changeset
|
1052 |
|
74082
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1053 assertInvalid(b'\x12' * 15) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1054 assertInvalid(b'\x12' * 17) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1055 assertInvalid(b'\x12' * 4) |
|
71e5a083f9b1
Issue #5424: add tests for inet_ntoa, inet_ntop, inet_aton and inet_pton.
Antoine Pitrou <solipsis@pitrou.net>
parents:
73612
diff
changeset
|
1056 |
|
24318
12815d05080c
Add test for previous core dump when sending on closed socket with
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
1057 # XXX The following don't test module-level functionality... |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
23931
diff
changeset
|
1058 |
|
51382
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1059 def testSockName(self): |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1060 # Testing getsockname() |
|
70016
695a7acae392
Issue #12054: use support.find_unused_port() instead of reinventing the wheel
Antoine Pitrou <solipsis@pitrou.net>
parents:
70012
diff
changeset
|
1061 port = support.find_unused_port() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1062 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
1063 self.addCleanup(sock.close) |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
1064 sock.bind(("0.0.0.0", port)) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1065 name = sock.getsockname() |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
1066 # XXX(nnorwitz): http://tinyurl.com/os5jz seems to indicate |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
1067 # it reasonable to get the host's addr in addition to 0.0.0.0. |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
1068 # At least for eCos. This is required for the S/390 to pass. |
|
66478
7281937b2d65
Merged revisions 86134,86315-86316,86390,86424-86425,86428,86550,86561-86562,86564-86565,86705,86708,86713 via svnmerge from
Georg Brandl <georg@python.org>
parents:
66340
diff
changeset
|
1069 try: |
|
7281937b2d65
Merged revisions 86134,86315-86316,86390,86424-86425,86428,86550,86561-86562,86564-86565,86705,86708,86713 via svnmerge from
Georg Brandl <georg@python.org>
parents:
66340
diff
changeset
|
1070 my_ip_addr = socket.gethostbyname(socket.gethostname()) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
1071 except OSError: |
|
66478
7281937b2d65
Merged revisions 86134,86315-86316,86390,86424-86425,86428,86550,86561-86562,86564-86565,86705,86708,86713 via svnmerge from
Georg Brandl <georg@python.org>
parents:
66340
diff
changeset
|
1072 # Probably name lookup wasn't set up right; skip this test |
|
7281937b2d65
Merged revisions 86134,86315-86316,86390,86424-86425,86428,86550,86561-86562,86564-86565,86705,86708,86713 via svnmerge from
Georg Brandl <georg@python.org>
parents:
66340
diff
changeset
|
1073 return |
|
58415
f6a626f34840
use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents:
58146
diff
changeset
|
1074 self.assertIn(name[0], ("0.0.0.0", my_ip_addr), '%s invalid' % name[0]) |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
1075 self.assertEqual(name[1], port) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1076 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1077 def testGetSockOpt(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1078 # Testing getsockopt() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1079 # We know a socket should start without reuse==0 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1080 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
1081 self.addCleanup(sock.close) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1082 reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
1083 self.assertFalse(reuse != 0, "initial mode is reuse") |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1084 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1085 def testSetSockOpt(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1086 # Testing setsockopt() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1087 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
1088 self.addCleanup(sock.close) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1089 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1090 reuse = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
1091 self.assertFalse(reuse == 0, "failed to set reuse mode") |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1092 |
|
24318
12815d05080c
Add test for previous core dump when sending on closed socket with
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
1093 def testSendAfterClose(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1094 # testing send() after close() with timeout |
|
24318
12815d05080c
Add test for previous core dump when sending on closed socket with
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
1095 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
12815d05080c
Add test for previous core dump when sending on closed socket with
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
1096 sock.settimeout(1) |
|
12815d05080c
Add test for previous core dump when sending on closed socket with
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
1097 sock.close() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
1098 self.assertRaises(OSError, sock.send, b"spam") |
|
24318
12815d05080c
Add test for previous core dump when sending on closed socket with
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
1099 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
1100 def testNewAttributes(self): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
1101 # testing .family, .type and .protocol |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
1102 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
1103 self.assertEqual(sock.family, socket.AF_INET) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
1104 self.assertEqual(sock.type, socket.SOCK_STREAM) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
1105 self.assertEqual(sock.proto, 0) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
1106 sock.close() |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
1107 |
|
51382
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1108 def test_getsockaddrarg(self): |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1109 host = '0.0.0.0' |
|
70016
695a7acae392
Issue #12054: use support.find_unused_port() instead of reinventing the wheel
Antoine Pitrou <solipsis@pitrou.net>
parents:
70012
diff
changeset
|
1110 port = support.find_unused_port() |
|
51382
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1111 big_port = port + 65536 |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1112 neg_port = port - 65536 |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1113 sock = socket.socket() |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1114 try: |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1115 self.assertRaises(OverflowError, sock.bind, (host, big_port)) |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1116 self.assertRaises(OverflowError, sock.bind, (host, neg_port)) |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1117 sock.bind((host, port)) |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1118 finally: |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1119 sock.close() |
|
7e28a2b0c1b1
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50800
diff
changeset
|
1120 |
|
65975
e213e465a2dc
Add socket cleanup for ResourceWarning and update test to use skip decorator
Brian Curtin <brian.curtin@gmail.com>
parents:
65925
diff
changeset
|
1121 @unittest.skipUnless(os.name == "nt", "Windows specific") |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43954
diff
changeset
|
1122 def test_sock_ioctl(self): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
1123 self.assertTrue(hasattr(socket.socket, 'ioctl')) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
1124 self.assertTrue(hasattr(socket, 'SIO_RCVALL')) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
1125 self.assertTrue(hasattr(socket, 'RCVALL_ON')) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
1126 self.assertTrue(hasattr(socket, 'RCVALL_OFF')) |
|
56252
debb245ebb40
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
1127 self.assertTrue(hasattr(socket, 'SIO_KEEPALIVE_VALS')) |
|
debb245ebb40
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
1128 s = socket.socket() |
|
65975
e213e465a2dc
Add socket cleanup for ResourceWarning and update test to use skip decorator
Brian Curtin <brian.curtin@gmail.com>
parents:
65925
diff
changeset
|
1129 self.addCleanup(s.close) |
|
56252
debb245ebb40
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
1130 self.assertRaises(ValueError, s.ioctl, -1, None) |
|
debb245ebb40
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
1131 s.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 100, 100)) |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43954
diff
changeset
|
1132 |
|
64000
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1133 def testGetaddrinfo(self): |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1134 try: |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1135 socket.getaddrinfo('localhost', 80) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1136 except socket.gaierror as err: |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1137 if err.errno == socket.EAI_SERVICE: |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1138 # see http://bugs.python.org/issue1282647 |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1139 self.skipTest("buggy libc version") |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1140 raise |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1141 # len of every sequence is supposed to be == 5 |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1142 for info in socket.getaddrinfo(HOST, None): |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1143 self.assertEqual(len(info), 5) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1144 # host can be a domain name, a string representation of an |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1145 # IPv4/v6 address or None |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1146 socket.getaddrinfo('localhost', 80) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1147 socket.getaddrinfo('127.0.0.1', 80) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1148 socket.getaddrinfo(None, 80) |
|
69672
0518f32cb747
Issue #11811: Factor out detection of IPv6 support on the current host
Antoine Pitrou <solipsis@pitrou.net>
parents:
69123
diff
changeset
|
1149 if support.IPV6_ENABLED: |
|
64000
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1150 socket.getaddrinfo('::1', 80) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1151 # port can be a string service name such as "http", a numeric |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1152 # port number or None |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1153 socket.getaddrinfo(HOST, "http") |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1154 socket.getaddrinfo(HOST, 80) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1155 socket.getaddrinfo(HOST, None) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1156 # test family and socktype filters |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1157 infos = socket.getaddrinfo(HOST, None, socket.AF_INET) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1158 for family, _, _, _, _ in infos: |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1159 self.assertEqual(family, socket.AF_INET) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1160 infos = socket.getaddrinfo(HOST, None, 0, socket.SOCK_STREAM) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1161 for _, socktype, _, _, _ in infos: |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1162 self.assertEqual(socktype, socket.SOCK_STREAM) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1163 # test proto and flags arguments |
|
64060
bf18dd70c180
Merged revisions 84089 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64000
diff
changeset
|
1164 socket.getaddrinfo(HOST, None, 0, 0, socket.SOL_TCP) |
|
64000
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1165 socket.getaddrinfo(HOST, None, 0, 0, 0, socket.AI_PASSIVE) |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1166 # a server willing to support both IPv4 and IPv6 will |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1167 # usually do this |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1168 socket.getaddrinfo(None, 0, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, |
|
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1169 socket.AI_PASSIVE) |
|
64113
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1170 # test keyword arguments |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1171 a = socket.getaddrinfo(HOST, None) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1172 b = socket.getaddrinfo(host=HOST, port=None) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1173 self.assertEqual(a, b) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1174 a = socket.getaddrinfo(HOST, None, socket.AF_INET) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1175 b = socket.getaddrinfo(HOST, None, family=socket.AF_INET) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1176 self.assertEqual(a, b) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1177 a = socket.getaddrinfo(HOST, None, 0, socket.SOCK_STREAM) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1178 b = socket.getaddrinfo(HOST, None, type=socket.SOCK_STREAM) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1179 self.assertEqual(a, b) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1180 a = socket.getaddrinfo(HOST, None, 0, 0, socket.SOL_TCP) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1181 b = socket.getaddrinfo(HOST, None, proto=socket.SOL_TCP) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1182 self.assertEqual(a, b) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1183 a = socket.getaddrinfo(HOST, None, 0, 0, 0, socket.AI_PASSIVE) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1184 b = socket.getaddrinfo(HOST, None, flags=socket.AI_PASSIVE) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1185 self.assertEqual(a, b) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1186 a = socket.getaddrinfo(None, 0, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1187 socket.AI_PASSIVE) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1188 b = socket.getaddrinfo(host=None, port=0, family=socket.AF_UNSPEC, |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1189 type=socket.SOCK_STREAM, proto=0, |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1190 flags=socket.AI_PASSIVE) |
|
ca2a859e9bf6
fix issue #8866: parameters passed to socket.getaddrinfo can now be specified as single keyword arguments.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64059
diff
changeset
|
1191 self.assertEqual(a, b) |
|
66799
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66310
diff
changeset
|
1192 # Issue #6697. |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66310
diff
changeset
|
1193 self.assertRaises(UnicodeEncodeError, socket.getaddrinfo, 'localhost', '\uD800') |
|
64000
9bd082701776
Merged revisions 84024 via svnmerge from
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
56368
diff
changeset
|
1194 |
|
64277
2ccd043aad5c
Issue #1027206: getnameinfo is now restricted to numeric addresses as input.
Martin v. Löwis <martin@v.loewis.de>
parents:
64241
diff
changeset
|
1195 def test_getnameinfo(self): |
|
2ccd043aad5c
Issue #1027206: getnameinfo is now restricted to numeric addresses as input.
Martin v. Löwis <martin@v.loewis.de>
parents:
64241
diff
changeset
|
1196 # only IP addresses are allowed |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
1197 self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0) |
|
64277
2ccd043aad5c
Issue #1027206: getnameinfo is now restricted to numeric addresses as input.
Martin v. Löwis <martin@v.loewis.de>
parents:
64241
diff
changeset
|
1198 |
|
64593
6f14f02359e8
Skip socket tests that require the network, if the network resource is not enabled
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents:
64574
diff
changeset
|
1199 @unittest.skipUnless(support.is_resource_enabled('network'), |
|
6f14f02359e8
Skip socket tests that require the network, if the network resource is not enabled
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents:
64574
diff
changeset
|
1200 'network is not enabled') |
|
64230
35304c2fe9e0
Issue #1027206: Support IDNA in gethostbyname, gethostbyname_ex and
Martin v. Löwis <martin@v.loewis.de>
parents:
64113
diff
changeset
|
1201 def test_idna(self): |
|
74607
585d3664da89
Issue #12804: Fix test failures on systems without internet access.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
74606
diff
changeset
|
1202 # Check for internet access before running test (issue #12804). |
|
585d3664da89
Issue #12804: Fix test failures on systems without internet access.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
74606
diff
changeset
|
1203 try: |
|
585d3664da89
Issue #12804: Fix test failures on systems without internet access.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
74606
diff
changeset
|
1204 socket.gethostbyname('python.org') |
|
585d3664da89
Issue #12804: Fix test failures on systems without internet access.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
74606
diff
changeset
|
1205 except socket.gaierror as e: |
|
585d3664da89
Issue #12804: Fix test failures on systems without internet access.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
74606
diff
changeset
|
1206 if e.errno == socket.EAI_NODATA: |
|
585d3664da89
Issue #12804: Fix test failures on systems without internet access.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
74606
diff
changeset
|
1207 self.skipTest('internet access required for this test') |
|
64230
35304c2fe9e0
Issue #1027206: Support IDNA in gethostbyname, gethostbyname_ex and
Martin v. Löwis <martin@v.loewis.de>
parents:
64113
diff
changeset
|
1208 # these should all be successful |
|
35304c2fe9e0
Issue #1027206: Support IDNA in gethostbyname, gethostbyname_ex and
Martin v. Löwis <martin@v.loewis.de>
parents:
64113
diff
changeset
|
1209 socket.gethostbyname('испытание.python.org') |
|
35304c2fe9e0
Issue #1027206: Support IDNA in gethostbyname, gethostbyname_ex and
Martin v. Löwis <martin@v.loewis.de>
parents:
64113
diff
changeset
|
1210 socket.gethostbyname_ex('испытание.python.org') |
|
64241
7e1e343b708b
Explicitly pass socket type and family for getaddrinfo,
Martin v. Löwis <martin@v.loewis.de>
parents:
64231
diff
changeset
|
1211 socket.getaddrinfo('испытание.python.org',0,socket.AF_UNSPEC,socket.SOCK_STREAM) |
|
7e1e343b708b
Explicitly pass socket type and family for getaddrinfo,
Martin v. Löwis <martin@v.loewis.de>
parents:
64231
diff
changeset
|
1212 # this may not work if the forward lookup choses the IPv6 address, as that doesn't |
|
7e1e343b708b
Explicitly pass socket type and family for getaddrinfo,
Martin v. Löwis <martin@v.loewis.de>
parents:
64231
diff
changeset
|
1213 # have a reverse entry yet |
|
7e1e343b708b
Explicitly pass socket type and family for getaddrinfo,
Martin v. Löwis <martin@v.loewis.de>
parents:
64231
diff
changeset
|
1214 # socket.gethostbyaddr('испытание.python.org') |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43954
diff
changeset
|
1215 |
|
64961
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1216 def check_sendall_interrupted(self, with_timeout): |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1217 # socketpair() is not stricly required, but it makes things easier. |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1218 if not hasattr(signal, 'alarm') or not hasattr(socket, 'socketpair'): |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1219 self.skipTest("signal.alarm and socket.socketpair required for this test") |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1220 # Our signal handlers clobber the C errno by calling a math function |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1221 # with an invalid domain value. |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1222 def ok_handler(*args): |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1223 self.assertRaises(ValueError, math.acosh, 0) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1224 def raising_handler(*args): |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1225 self.assertRaises(ValueError, math.acosh, 0) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1226 1 // 0 |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1227 c, s = socket.socketpair() |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1228 old_alarm = signal.signal(signal.SIGALRM, raising_handler) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1229 try: |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1230 if with_timeout: |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1231 # Just above the one second minimum for signal.alarm |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1232 c.settimeout(1.5) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1233 with self.assertRaises(ZeroDivisionError): |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1234 signal.alarm(1) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1235 c.sendall(b"x" * (1024**2)) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1236 if with_timeout: |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1237 signal.signal(signal.SIGALRM, ok_handler) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1238 signal.alarm(1) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1239 self.assertRaises(socket.timeout, c.sendall, b"x" * (1024**2)) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1240 finally: |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1241 signal.signal(signal.SIGALRM, old_alarm) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1242 c.close() |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1243 s.close() |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1244 |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1245 def test_sendall_interrupted(self): |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1246 self.check_sendall_interrupted(False) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1247 |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1248 def test_sendall_interrupted_with_timeout(self): |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1249 self.check_sendall_interrupted(True) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1250 |
|
65707
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1251 def test_dealloc_warn(self): |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1252 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1253 r = repr(sock) |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1254 with self.assertWarns(ResourceWarning) as cm: |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1255 sock = None |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1256 support.gc_collect() |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1257 self.assertIn(r, str(cm.warning.args[0])) |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1258 # An open socket file object gets dereferenced after the socket |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1259 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1260 f = sock.makefile('rb') |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1261 r = repr(sock) |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1262 sock = None |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1263 support.gc_collect() |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1264 with self.assertWarns(ResourceWarning): |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1265 f = None |
|
cff78ffb932a
Issue #10093: ResourceWarnings are now issued when files and sockets are
Antoine Pitrou <solipsis@pitrou.net>
parents:
65606
diff
changeset
|
1266 support.gc_collect() |
|
64961
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64536
diff
changeset
|
1267 |
|
67344
f4a808f5a66d
Issue #10819: SocketIO.name property returns -1 when its closed, instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67299
diff
changeset
|
1268 def test_name_closed_socketio(self): |
|
f4a808f5a66d
Issue #10819: SocketIO.name property returns -1 when its closed, instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67299
diff
changeset
|
1269 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: |
|
f4a808f5a66d
Issue #10819: SocketIO.name property returns -1 when its closed, instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67299
diff
changeset
|
1270 fp = sock.makefile("rb") |
|
f4a808f5a66d
Issue #10819: SocketIO.name property returns -1 when its closed, instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67299
diff
changeset
|
1271 fp.close() |
|
f4a808f5a66d
Issue #10819: SocketIO.name property returns -1 when its closed, instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67299
diff
changeset
|
1272 self.assertEqual(repr(fp), "<_io.BufferedReader name=-1>") |
|
f4a808f5a66d
Issue #10819: SocketIO.name property returns -1 when its closed, instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67299
diff
changeset
|
1273 |
|
79026
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1274 def test_unusable_closed_socketio(self): |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1275 with socket.socket() as sock: |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1276 fp = sock.makefile("rb", buffering=0) |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1277 self.assertTrue(fp.readable()) |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1278 self.assertFalse(fp.writable()) |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1279 self.assertFalse(fp.seekable()) |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1280 fp.close() |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1281 self.assertRaises(ValueError, fp.readable) |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1282 self.assertRaises(ValueError, fp.writable) |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1283 self.assertRaises(ValueError, fp.seekable) |
|
fad797916266
Issue #15842: the SocketIO.{readable,writable,seekable} methods now raise ValueError when the file-like object is closed.
Antoine Pitrou <solipsis@pitrou.net>
parents:
76033
diff
changeset
|
1284 |
|
68774
5e13e5e6df30
Issue #11127: Raise a TypeError when trying to pickle a socket object.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68258
diff
changeset
|
1285 def test_pickle(self): |
|
5e13e5e6df30
Issue #11127: Raise a TypeError when trying to pickle a socket object.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68258
diff
changeset
|
1286 sock = socket.socket() |
|
5e13e5e6df30
Issue #11127: Raise a TypeError when trying to pickle a socket object.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68258
diff
changeset
|
1287 with sock: |
|
5e13e5e6df30
Issue #11127: Raise a TypeError when trying to pickle a socket object.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68258
diff
changeset
|
1288 for protocol in range(pickle.HIGHEST_PROTOCOL + 1): |
|
5e13e5e6df30
Issue #11127: Raise a TypeError when trying to pickle a socket object.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68258
diff
changeset
|
1289 self.assertRaises(TypeError, pickle.dumps, sock, protocol) |
|
5e13e5e6df30
Issue #11127: Raise a TypeError when trying to pickle a socket object.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68258
diff
changeset
|
1290 |
|
81587
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1291 def test_listen_backlog(self): |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1292 for backlog in 0, -1: |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1293 srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1294 srv.bind((HOST, 0)) |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1295 srv.listen(backlog) |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1296 srv.close() |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1297 |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1298 # Issue 15989 |
|
70012
713006ecee0c
Issue #8498: In socket.accept(), allow to specify 0 as a backlog value in
Antoine Pitrou <solipsis@pitrou.net>
parents:
69917
diff
changeset
|
1299 srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
713006ecee0c
Issue #8498: In socket.accept(), allow to specify 0 as a backlog value in
Antoine Pitrou <solipsis@pitrou.net>
parents:
69917
diff
changeset
|
1300 srv.bind((HOST, 0)) |
|
81587
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1301 self.assertRaises(OverflowError, srv.listen, _testcapi.INT_MAX + 1) |
|
70012
713006ecee0c
Issue #8498: In socket.accept(), allow to specify 0 as a backlog value in
Antoine Pitrou <solipsis@pitrou.net>
parents:
69917
diff
changeset
|
1302 srv.close() |
|
713006ecee0c
Issue #8498: In socket.accept(), allow to specify 0 as a backlog value in
Antoine Pitrou <solipsis@pitrou.net>
parents:
69917
diff
changeset
|
1303 |
|
74234
9222b8e7a7bc
Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
Charles-François Natali <neologix@free.fr>
diff
changeset
|
1304 @unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.') |
|
74233
cc346a672091
Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
Charles-François Natali <neologix@free.fr>
parents:
74082
diff
changeset
|
1305 def test_flowinfo(self): |
|
cc346a672091
Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
Charles-François Natali <neologix@free.fr>
parents:
74082
diff
changeset
|
1306 self.assertRaises(OverflowError, socket.getnameinfo, |
|
cc346a672091
Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
Charles-François Natali <neologix@free.fr>
parents:
74082
diff
changeset
|
1307 ('::1',0, 0xffffffff), 0) |
|
cc346a672091
Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
Charles-François Natali <neologix@free.fr>
parents:
74082
diff
changeset
|
1308 with socket.socket(socket.AF_INET6, socket.SOCK_STREAM) as s: |
|
cc346a672091
Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
Charles-François Natali <neologix@free.fr>
parents:
74082
diff
changeset
|
1309 self.assertRaises(OverflowError, s.bind, ('::1', 0, -10)) |
|
cc346a672091
Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by
Charles-François Natali <neologix@free.fr>
parents:
74082
diff
changeset
|
1310 |
|
64959
aed04b3f0fe3
Issue #9950: Fix socket.sendall() crash or misbehaviour when a signal is
Antoine Pitrou <solipsis@pitrou.net>
parents:
64817
diff
changeset
|
1311 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1312 @unittest.skipUnless(HAVE_SOCKET_CAN, 'SocketCan required for this test.') |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1313 class BasicCANTest(unittest.TestCase): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1314 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1315 def testCrucialConstants(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1316 socket.AF_CAN |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1317 socket.PF_CAN |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1318 socket.CAN_RAW |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1319 |
|
82024
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1320 @unittest.skipUnless(hasattr(socket, "CAN_BCM"), |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1321 'socket.CAN_BCM required for this test.') |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1322 def testBCMConstants(self): |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1323 socket.CAN_BCM |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1324 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1325 # opcodes |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1326 socket.CAN_BCM_TX_SETUP # create (cyclic) transmission task |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1327 socket.CAN_BCM_TX_DELETE # remove (cyclic) transmission task |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1328 socket.CAN_BCM_TX_READ # read properties of (cyclic) transmission task |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1329 socket.CAN_BCM_TX_SEND # send one CAN frame |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1330 socket.CAN_BCM_RX_SETUP # create RX content filter subscription |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1331 socket.CAN_BCM_RX_DELETE # remove RX content filter subscription |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1332 socket.CAN_BCM_RX_READ # read properties of RX content filter subscription |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1333 socket.CAN_BCM_TX_STATUS # reply to TX_READ request |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1334 socket.CAN_BCM_TX_EXPIRED # notification on performed transmissions (count=0) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1335 socket.CAN_BCM_RX_STATUS # reply to RX_READ request |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1336 socket.CAN_BCM_RX_TIMEOUT # cyclic message is absent |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1337 socket.CAN_BCM_RX_CHANGED # updated CAN frame (detected content change) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1338 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1339 def testCreateSocket(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1340 with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1341 pass |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1342 |
|
82024
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1343 @unittest.skipUnless(hasattr(socket, "CAN_BCM"), |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1344 'socket.CAN_BCM required for this test.') |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1345 def testCreateBCMSocket(self): |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1346 with socket.socket(socket.PF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM) as s: |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1347 pass |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1348 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1349 def testBindAny(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1350 with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1351 s.bind(('', )) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1352 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1353 def testTooLongInterfaceName(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1354 # most systems limit IFNAMSIZ to 16, take 1024 to be sure |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1355 with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s: |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
1356 self.assertRaisesRegex(OSError, 'interface name too long', |
|
72870
e2cb12decd9f
Fix deprecation warning
Antoine Pitrou <solipsis@pitrou.net>
parents:
72849
diff
changeset
|
1357 s.bind, ('x' * 1024,)) |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1358 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1359 @unittest.skipUnless(hasattr(socket, "CAN_RAW_LOOPBACK"), |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1360 'socket.CAN_RAW_LOOPBACK required for this test.') |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1361 def testLoopback(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1362 with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1363 for loopback in (0, 1): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1364 s.setsockopt(socket.SOL_CAN_RAW, socket.CAN_RAW_LOOPBACK, |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1365 loopback) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1366 self.assertEqual(loopback, |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1367 s.getsockopt(socket.SOL_CAN_RAW, socket.CAN_RAW_LOOPBACK)) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1368 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1369 @unittest.skipUnless(hasattr(socket, "CAN_RAW_FILTER"), |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1370 'socket.CAN_RAW_FILTER required for this test.') |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1371 def testFilter(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1372 can_id, can_mask = 0x200, 0x700 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1373 can_filter = struct.pack("=II", can_id, can_mask) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1374 with socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) as s: |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1375 s.setsockopt(socket.SOL_CAN_RAW, socket.CAN_RAW_FILTER, can_filter) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1376 self.assertEqual(can_filter, |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1377 s.getsockopt(socket.SOL_CAN_RAW, socket.CAN_RAW_FILTER, 8)) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1378 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1379 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1380 @unittest.skipUnless(HAVE_SOCKET_CAN, 'SocketCan required for this test.') |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1381 class CANTest(ThreadedCANSocketTest): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1382 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1383 def __init__(self, methodName='runTest'): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1384 ThreadedCANSocketTest.__init__(self, methodName=methodName) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1385 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1386 @classmethod |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1387 def build_can_frame(cls, can_id, data): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1388 """Build a CAN frame.""" |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1389 can_dlc = len(data) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1390 data = data.ljust(8, b'\x00') |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1391 return struct.pack(cls.can_frame_fmt, can_id, can_dlc, data) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1392 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1393 @classmethod |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1394 def dissect_can_frame(cls, frame): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1395 """Dissect a CAN frame.""" |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1396 can_id, can_dlc, data = struct.unpack(cls.can_frame_fmt, frame) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1397 return (can_id, can_dlc, data[:can_dlc]) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1398 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1399 def testSendFrame(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1400 cf, addr = self.s.recvfrom(self.bufsize) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1401 self.assertEqual(self.cf, cf) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1402 self.assertEqual(addr[0], self.interface) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1403 self.assertEqual(addr[1], socket.AF_CAN) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1404 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1405 def _testSendFrame(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1406 self.cf = self.build_can_frame(0x00, b'\x01\x02\x03\x04\x05') |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1407 self.cli.send(self.cf) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1408 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1409 def testSendMaxFrame(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1410 cf, addr = self.s.recvfrom(self.bufsize) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1411 self.assertEqual(self.cf, cf) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1412 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1413 def _testSendMaxFrame(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1414 self.cf = self.build_can_frame(0x00, b'\x07' * 8) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1415 self.cli.send(self.cf) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1416 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1417 def testSendMultiFrames(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1418 cf, addr = self.s.recvfrom(self.bufsize) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1419 self.assertEqual(self.cf1, cf) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1420 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1421 cf, addr = self.s.recvfrom(self.bufsize) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1422 self.assertEqual(self.cf2, cf) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1423 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1424 def _testSendMultiFrames(self): |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1425 self.cf1 = self.build_can_frame(0x07, b'\x44\x33\x22\x11') |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1426 self.cli.send(self.cf1) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1427 |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1428 self.cf2 = self.build_can_frame(0x12, b'\x99\x22\x33') |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1429 self.cli.send(self.cf2) |
|
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1430 |
|
82024
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1431 @unittest.skipUnless(hasattr(socket, "CAN_BCM"), |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1432 'socket.CAN_BCM required for this test.') |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1433 def _testBCM(self): |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1434 cf, addr = self.cli.recvfrom(self.bufsize) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1435 self.assertEqual(self.cf, cf) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1436 can_id, can_dlc, data = self.dissect_can_frame(cf) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1437 self.assertEqual(self.can_id, can_id) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1438 self.assertEqual(self.data, data) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1439 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1440 @unittest.skipUnless(hasattr(socket, "CAN_BCM"), |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1441 'socket.CAN_BCM required for this test.') |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1442 def testBCM(self): |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1443 bcm = socket.socket(socket.PF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1444 self.addCleanup(bcm.close) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1445 bcm.connect((self.interface,)) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1446 self.can_id = 0x123 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1447 self.data = bytes([0xc0, 0xff, 0xee]) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1448 self.cf = self.build_can_frame(self.can_id, self.data) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1449 opcode = socket.CAN_BCM_TX_SEND |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1450 flags = 0 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1451 count = 0 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1452 ival1_seconds = ival1_usec = ival2_seconds = ival2_usec = 0 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1453 bcm_can_id = 0x0222 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1454 nframes = 1 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1455 assert len(self.cf) == 16 |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1456 header = struct.pack(self.bcm_cmd_msg_fmt, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1457 opcode, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1458 flags, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1459 count, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1460 ival1_seconds, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1461 ival1_usec, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1462 ival2_seconds, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1463 ival2_usec, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1464 bcm_can_id, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1465 nframes, |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1466 ) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1467 header_plus_frame = header + self.cf |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1468 bytes_sent = bcm.send(header_plus_frame) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1469 self.assertEqual(bytes_sent, len(header_plus_frame)) |
|
f714af60508d
Issue #15359: Add CAN_BCM protocol support to the socket module. Patch by Brian
Charles-François Natali <cf.natali@gmail.com>
parents:
81589
diff
changeset
|
1470 |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
1471 |
|
73478
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1472 @unittest.skipUnless(HAVE_SOCKET_RDS, 'RDS sockets required for this test.') |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1473 class BasicRDSTest(unittest.TestCase): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1474 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1475 def testCrucialConstants(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1476 socket.AF_RDS |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1477 socket.PF_RDS |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1478 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1479 def testCreateSocket(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1480 with socket.socket(socket.PF_RDS, socket.SOCK_SEQPACKET, 0) as s: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1481 pass |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1482 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1483 def testSocketBufferSize(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1484 bufsize = 16384 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1485 with socket.socket(socket.PF_RDS, socket.SOCK_SEQPACKET, 0) as s: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1486 s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, bufsize) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1487 s.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, bufsize) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1488 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1489 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1490 @unittest.skipUnless(HAVE_SOCKET_RDS, 'RDS sockets required for this test.') |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1491 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1492 class RDSTest(ThreadedRDSSocketTest): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1493 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1494 def __init__(self, methodName='runTest'): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1495 ThreadedRDSSocketTest.__init__(self, methodName=methodName) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1496 |
|
73485
fa9bbfc0bcec
Fix test_socket when built whithout threads.
Charles-François Natali <neologix@free.fr>
parents:
73478
diff
changeset
|
1497 def setUp(self): |
|
fa9bbfc0bcec
Fix test_socket when built whithout threads.
Charles-François Natali <neologix@free.fr>
parents:
73478
diff
changeset
|
1498 super().setUp() |
|
fa9bbfc0bcec
Fix test_socket when built whithout threads.
Charles-François Natali <neologix@free.fr>
parents:
73478
diff
changeset
|
1499 self.evt = threading.Event() |
|
fa9bbfc0bcec
Fix test_socket when built whithout threads.
Charles-François Natali <neologix@free.fr>
parents:
73478
diff
changeset
|
1500 |
|
73478
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1501 def testSendAndRecv(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1502 data, addr = self.serv.recvfrom(self.bufsize) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1503 self.assertEqual(self.data, data) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1504 self.assertEqual(self.cli_addr, addr) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1505 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1506 def _testSendAndRecv(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1507 self.data = b'spam' |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1508 self.cli.sendto(self.data, 0, (HOST, self.port)) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1509 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1510 def testPeek(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1511 data, addr = self.serv.recvfrom(self.bufsize, socket.MSG_PEEK) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1512 self.assertEqual(self.data, data) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1513 data, addr = self.serv.recvfrom(self.bufsize) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1514 self.assertEqual(self.data, data) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1515 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1516 def _testPeek(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1517 self.data = b'spam' |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1518 self.cli.sendto(self.data, 0, (HOST, self.port)) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1519 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1520 @requireAttrs(socket.socket, 'recvmsg') |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1521 def testSendAndRecvMsg(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1522 data, ancdata, msg_flags, addr = self.serv.recvmsg(self.bufsize) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1523 self.assertEqual(self.data, data) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1524 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1525 @requireAttrs(socket.socket, 'sendmsg') |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1526 def _testSendAndRecvMsg(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1527 self.data = b'hello ' * 10 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1528 self.cli.sendmsg([self.data], (), 0, (HOST, self.port)) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1529 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1530 def testSendAndRecvMulti(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1531 data, addr = self.serv.recvfrom(self.bufsize) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1532 self.assertEqual(self.data1, data) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1533 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1534 data, addr = self.serv.recvfrom(self.bufsize) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1535 self.assertEqual(self.data2, data) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1536 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1537 def _testSendAndRecvMulti(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1538 self.data1 = b'bacon' |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1539 self.cli.sendto(self.data1, 0, (HOST, self.port)) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1540 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1541 self.data2 = b'egg' |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1542 self.cli.sendto(self.data2, 0, (HOST, self.port)) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1543 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1544 def testSelect(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1545 r, w, x = select.select([self.serv], [], [], 3.0) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1546 self.assertIn(self.serv, r) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1547 data, addr = self.serv.recvfrom(self.bufsize) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1548 self.assertEqual(self.data, data) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1549 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1550 def _testSelect(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1551 self.data = b'select' |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1552 self.cli.sendto(self.data, 0, (HOST, self.port)) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1553 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1554 def testCongestion(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1555 # wait until the sender is done |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1556 self.evt.wait() |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1557 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1558 def _testCongestion(self): |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1559 # test the behavior in case of congestion |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1560 self.data = b'fill' |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1561 self.cli.setblocking(False) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1562 try: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1563 # try to lower the receiver's socket buffer size |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1564 self.cli.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 16384) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1565 except OSError: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1566 pass |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1567 with self.assertRaises(OSError) as cm: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1568 try: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1569 # fill the receiver's socket buffer |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1570 while True: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1571 self.cli.sendto(self.data, 0, (HOST, self.port)) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1572 finally: |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1573 # signal the receiver we're done |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1574 self.evt.set() |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1575 # sendto() should have failed with ENOBUFS |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1576 self.assertEqual(cm.exception.errno, errno.ENOBUFS) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1577 # and we should have received a congestion notification through poll |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1578 r, w, x = select.select([self.serv], [], [], 3.0) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1579 self.assertIn(self.serv, r) |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1580 |
|
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
1581 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
1582 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1583 class BasicTCPTest(SocketConnectedTest): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1584 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1585 def __init__(self, methodName='runTest'): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1586 SocketConnectedTest.__init__(self, methodName=methodName) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1587 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1588 def testRecv(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1589 # Testing large receive over TCP |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1590 msg = self.cli_conn.recv(1024) |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
1591 self.assertEqual(msg, MSG) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1592 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1593 def _testRecv(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1594 self.serv_conn.send(MSG) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1595 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1596 def testOverFlowRecv(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1597 # Testing receive in chunks over TCP |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1598 seg1 = self.cli_conn.recv(len(MSG) - 3) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1599 seg2 = self.cli_conn.recv(1024) |
|
23800
bf1555a92711
Remove some overly complicated ways to concatenate and repeat strings
Guido van Rossum <guido@python.org>
parents:
23799
diff
changeset
|
1600 msg = seg1 + seg2 |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
1601 self.assertEqual(msg, MSG) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1602 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1603 def _testOverFlowRecv(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1604 self.serv_conn.send(MSG) |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1605 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1606 def testRecvFrom(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1607 # Testing large recvfrom() over TCP |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1608 msg, addr = self.cli_conn.recvfrom(1024) |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
1609 self.assertEqual(msg, MSG) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1610 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1611 def _testRecvFrom(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1612 self.serv_conn.send(MSG) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1613 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1614 def testOverFlowRecvFrom(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1615 # Testing recvfrom() in chunks over TCP |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1616 seg1, addr = self.cli_conn.recvfrom(len(MSG)-3) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1617 seg2, addr = self.cli_conn.recvfrom(1024) |
|
23800
bf1555a92711
Remove some overly complicated ways to concatenate and repeat strings
Guido van Rossum <guido@python.org>
parents:
23799
diff
changeset
|
1618 msg = seg1 + seg2 |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
1619 self.assertEqual(msg, MSG) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1620 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1621 def _testOverFlowRecvFrom(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1622 self.serv_conn.send(MSG) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1623 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1624 def testSendAll(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1625 # Testing sendall() with a 2048 byte string over TCP |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
1626 msg = b'' |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1627 while 1: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1628 read = self.cli_conn.recv(1024) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1629 if not read: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1630 break |
|
24675
fec0b0aef14b
testSendAll(): loop until all data is read; this was necessary at
Guido van Rossum <guido@python.org>
parents:
24674
diff
changeset
|
1631 msg += read |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
1632 self.assertEqual(msg, b'f' * 2048) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1633 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1634 def _testSendAll(self): |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
1635 big_chunk = b'f' * 2048 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1636 self.serv_conn.sendall(big_chunk) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1637 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1638 def testFromFd(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1639 # Testing fromfd() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1640 fd = self.cli_conn.fileno() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1641 sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
1642 self.addCleanup(sock.close) |
|
64747
534853ba8cd3
Issue #1552: socket.socketpair() now returns regular socket.socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
64593
diff
changeset
|
1643 self.assertIsInstance(sock, socket.socket) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1644 msg = sock.recv(1024) |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
1645 self.assertEqual(msg, MSG) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1646 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1647 def _testFromFd(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1648 self.serv_conn.send(MSG) |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1649 |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1650 def testDup(self): |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1651 # Testing dup() |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1652 sock = self.cli_conn.dup() |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
1653 self.addCleanup(sock.close) |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1654 msg = sock.recv(1024) |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1655 self.assertEqual(msg, MSG) |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1656 |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1657 def _testDup(self): |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1658 self.serv_conn.send(MSG) |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
1659 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1660 def testShutdown(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1661 # Testing shutdown() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1662 msg = self.cli_conn.recv(1024) |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
1663 self.assertEqual(msg, MSG) |
|
50800
b17ec4c4a7c3
Merged revisions 68611-68613 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
50741
diff
changeset
|
1664 # wait for _testShutdown to finish: on OS X, when the server |
|
b17ec4c4a7c3
Merged revisions 68611-68613 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
50741
diff
changeset
|
1665 # closes the connection the client also becomes disconnected, |
|
b17ec4c4a7c3
Merged revisions 68611-68613 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
50741
diff
changeset
|
1666 # and the client's shutdown call will fail. (Issue #4397.) |
|
b17ec4c4a7c3
Merged revisions 68611-68613 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
50741
diff
changeset
|
1667 self.done.wait() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1668 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1669 def _testShutdown(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1670 self.serv_conn.send(MSG) |
|
81587
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1671 # Issue 15989 |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1672 self.assertRaises(OverflowError, self.serv_conn.shutdown, |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1673 _testcapi.INT_MAX + 1) |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1674 self.assertRaises(OverflowError, self.serv_conn.shutdown, |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
1675 2 + (_testcapi.UINT_MAX + 1)) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1676 self.serv_conn.shutdown(2) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1677 |
|
63890
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1678 def testDetach(self): |
|
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1679 # Testing detach() |
|
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1680 fileno = self.cli_conn.fileno() |
|
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1681 f = self.cli_conn.detach() |
|
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1682 self.assertEqual(f, fileno) |
|
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1683 # cli_conn cannot be used anymore... |
|
76033
3a220feafa15
Issue #13872: socket.detach() now marks the socket closed (as mirrored in the socket repr()).
Antoine Pitrou <solipsis@pitrou.net>
parents:
74233
diff
changeset
|
1684 self.assertTrue(self.cli_conn._closed) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
1685 self.assertRaises(OSError, self.cli_conn.recv, 1024) |
|
63856
3f8cef837f07
Issue #8524: Add a forget() method to socket objects, so as to put the
Antoine Pitrou <solipsis@pitrou.net>
parents:
61259
diff
changeset
|
1686 self.cli_conn.close() |
|
63890
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1687 # ...but we can create another socket using the (still open) |
|
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1688 # file descriptor |
|
63856
3f8cef837f07
Issue #8524: Add a forget() method to socket objects, so as to put the
Antoine Pitrou <solipsis@pitrou.net>
parents:
61259
diff
changeset
|
1689 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, fileno=f) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
1690 self.addCleanup(sock.close) |
|
63856
3f8cef837f07
Issue #8524: Add a forget() method to socket objects, so as to put the
Antoine Pitrou <solipsis@pitrou.net>
parents:
61259
diff
changeset
|
1691 msg = sock.recv(1024) |
|
3f8cef837f07
Issue #8524: Add a forget() method to socket objects, so as to put the
Antoine Pitrou <solipsis@pitrou.net>
parents:
61259
diff
changeset
|
1692 self.assertEqual(msg, MSG) |
|
3f8cef837f07
Issue #8524: Add a forget() method to socket objects, so as to put the
Antoine Pitrou <solipsis@pitrou.net>
parents:
61259
diff
changeset
|
1693 |
|
63890
60076f28c023
Followup to r83869 and issue #8524: rename socket.forget() to socket.detach()
Antoine Pitrou <solipsis@pitrou.net>
parents:
63856
diff
changeset
|
1694 def _testDetach(self): |
|
63856
3f8cef837f07
Issue #8524: Add a forget() method to socket objects, so as to put the
Antoine Pitrou <solipsis@pitrou.net>
parents:
61259
diff
changeset
|
1695 self.serv_conn.send(MSG) |
|
3f8cef837f07
Issue #8524: Add a forget() method to socket objects, so as to put the
Antoine Pitrou <solipsis@pitrou.net>
parents:
61259
diff
changeset
|
1696 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
1697 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1698 class BasicUDPTest(ThreadedUDPSocketTest): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1699 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1700 def __init__(self, methodName='runTest'): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1701 ThreadedUDPSocketTest.__init__(self, methodName=methodName) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1702 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1703 def testSendtoAndRecv(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1704 # Testing sendto() and Recv() over UDP |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1705 msg = self.serv.recv(len(MSG)) |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
1706 self.assertEqual(msg, MSG) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1707 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1708 def _testSendtoAndRecv(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
1709 self.cli.sendto(MSG, 0, (HOST, self.port)) |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
1710 |
|
23798
1da6d67f4a05
Some provisional changes to get more tests to run on Windows (I hope).
Guido van Rossum <guido@python.org>
parents:
23797
diff
changeset
|
1711 def testRecvFrom(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
1712 # Testing recvfrom() over UDP |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1713 msg, addr = self.serv.recvfrom(len(MSG)) |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
1714 self.assertEqual(msg, MSG) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1715 |
|
23798
1da6d67f4a05
Some provisional changes to get more tests to run on Windows (I hope).
Guido van Rossum <guido@python.org>
parents:
23797
diff
changeset
|
1716 def _testRecvFrom(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
1717 self.cli.sendto(MSG, 0, (HOST, self.port)) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
1718 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
1719 def testRecvFromNegative(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
1720 # Negative lengths passed to recvfrom should give ValueError. |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
1721 self.assertRaises(ValueError, self.serv.recvfrom, -1) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
1722 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
1723 def _testRecvFromNegative(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
1724 self.cli.sendto(MSG, 0, (HOST, self.port)) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
1725 |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1726 # Tests for the sendmsg()/recvmsg() interface. Where possible, the |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1727 # same test code is used with different families and types of socket |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1728 # (e.g. stream, datagram), and tests using recvmsg() are repeated |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1729 # using recvmsg_into(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1730 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1731 # The generic test classes such as SendmsgTests and |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1732 # RecvmsgGenericTests inherit from SendrecvmsgBase and expect to be |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1733 # supplied with sockets cli_sock and serv_sock representing the |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1734 # client's and the server's end of the connection respectively, and |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1735 # attributes cli_addr and serv_addr holding their (numeric where |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1736 # appropriate) addresses. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1737 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1738 # The final concrete test classes combine these with subclasses of |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1739 # SocketTestBase which set up client and server sockets of a specific |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1740 # type, and with subclasses of SendrecvmsgBase such as |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1741 # SendrecvmsgDgramBase and SendrecvmsgConnectedBase which map these |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1742 # sockets to cli_sock and serv_sock and override the methods and |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1743 # attributes of SendrecvmsgBase to fill in destination addresses if |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1744 # needed when sending, check for specific flags in msg_flags, etc. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1745 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1746 # RecvmsgIntoMixin provides a version of doRecvmsg() implemented using |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1747 # recvmsg_into(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1748 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1749 # XXX: like the other datagram (UDP) tests in this module, the code |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1750 # here assumes that datagram delivery on the local machine will be |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1751 # reliable. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1752 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1753 class SendrecvmsgBase(ThreadSafeCleanupTestCase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1754 # Base class for sendmsg()/recvmsg() tests. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1755 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1756 # Time in seconds to wait before considering a test failed, or |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1757 # None for no timeout. Not all tests actually set a timeout. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1758 fail_timeout = 3.0 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1759 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1760 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1761 self.misc_event = threading.Event() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1762 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1763 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1764 def sendToServer(self, msg): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1765 # Send msg to the server. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1766 return self.cli_sock.send(msg) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1767 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1768 # Tuple of alternative default arguments for sendmsg() when called |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1769 # via sendmsgToServer() (e.g. to include a destination address). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1770 sendmsg_to_server_defaults = () |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1771 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1772 def sendmsgToServer(self, *args): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1773 # Call sendmsg() on self.cli_sock with the given arguments, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1774 # filling in any arguments which are not supplied with the |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1775 # corresponding items of self.sendmsg_to_server_defaults, if |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1776 # any. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1777 return self.cli_sock.sendmsg( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1778 *(args + self.sendmsg_to_server_defaults[len(args):])) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1779 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1780 def doRecvmsg(self, sock, bufsize, *args): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1781 # Call recvmsg() on sock with given arguments and return its |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1782 # result. Should be used for tests which can use either |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1783 # recvmsg() or recvmsg_into() - RecvmsgIntoMixin overrides |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1784 # this method with one which emulates it using recvmsg_into(), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1785 # thus allowing the same test to be used for both methods. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1786 result = sock.recvmsg(bufsize, *args) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1787 self.registerRecvmsgResult(result) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1788 return result |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1789 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1790 def registerRecvmsgResult(self, result): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1791 # Called by doRecvmsg() with the return value of recvmsg() or |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1792 # recvmsg_into(). Can be overridden to arrange cleanup based |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1793 # on the returned ancillary data, for instance. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1794 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1795 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1796 def checkRecvmsgAddress(self, addr1, addr2): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1797 # Called to compare the received address with the address of |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1798 # the peer. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1799 self.assertEqual(addr1, addr2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1800 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1801 # Flags that are normally unset in msg_flags |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1802 msg_flags_common_unset = 0 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1803 for name in ("MSG_CTRUNC", "MSG_OOB"): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1804 msg_flags_common_unset |= getattr(socket, name, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1805 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1806 # Flags that are normally set |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1807 msg_flags_common_set = 0 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1808 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1809 # Flags set when a complete record has been received (e.g. MSG_EOR |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1810 # for SCTP) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1811 msg_flags_eor_indicator = 0 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1812 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1813 # Flags set when a complete record has not been received |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1814 # (e.g. MSG_TRUNC for datagram sockets) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1815 msg_flags_non_eor_indicator = 0 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1816 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1817 def checkFlags(self, flags, eor=None, checkset=0, checkunset=0, ignore=0): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1818 # Method to check the value of msg_flags returned by recvmsg[_into](). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1819 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1820 # Checks that all bits in msg_flags_common_set attribute are |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1821 # set in "flags" and all bits in msg_flags_common_unset are |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1822 # unset. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1823 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1824 # The "eor" argument specifies whether the flags should |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1825 # indicate that a full record (or datagram) has been received. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1826 # If "eor" is None, no checks are done; otherwise, checks |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1827 # that: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1828 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1829 # * if "eor" is true, all bits in msg_flags_eor_indicator are |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1830 # set and all bits in msg_flags_non_eor_indicator are unset |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1831 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1832 # * if "eor" is false, all bits in msg_flags_non_eor_indicator |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1833 # are set and all bits in msg_flags_eor_indicator are unset |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1834 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1835 # If "checkset" and/or "checkunset" are supplied, they require |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1836 # the given bits to be set or unset respectively, overriding |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1837 # what the attributes require for those bits. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1838 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1839 # If any bits are set in "ignore", they will not be checked, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1840 # regardless of the other inputs. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1841 # |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1842 # Will raise Exception if the inputs require a bit to be both |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1843 # set and unset, and it is not ignored. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1844 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1845 defaultset = self.msg_flags_common_set |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1846 defaultunset = self.msg_flags_common_unset |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1847 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1848 if eor: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1849 defaultset |= self.msg_flags_eor_indicator |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1850 defaultunset |= self.msg_flags_non_eor_indicator |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1851 elif eor is not None: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1852 defaultset |= self.msg_flags_non_eor_indicator |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1853 defaultunset |= self.msg_flags_eor_indicator |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1854 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1855 # Function arguments override defaults |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1856 defaultset &= ~checkunset |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1857 defaultunset &= ~checkset |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1858 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1859 # Merge arguments with remaining defaults, and check for conflicts |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1860 checkset |= defaultset |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1861 checkunset |= defaultunset |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1862 inboth = checkset & checkunset & ~ignore |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1863 if inboth: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1864 raise Exception("contradictory set, unset requirements for flags " |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1865 "{0:#x}".format(inboth)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1866 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1867 # Compare with given msg_flags value |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1868 mask = (checkset | checkunset) & ~ignore |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1869 self.assertEqual(flags & mask, checkset & mask) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1870 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1871 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1872 class RecvmsgIntoMixin(SendrecvmsgBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1873 # Mixin to implement doRecvmsg() using recvmsg_into(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1874 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1875 def doRecvmsg(self, sock, bufsize, *args): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1876 buf = bytearray(bufsize) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1877 result = sock.recvmsg_into([buf], *args) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1878 self.registerRecvmsgResult(result) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1879 self.assertGreaterEqual(result[0], 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1880 self.assertLessEqual(result[0], bufsize) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1881 return (bytes(buf[:result[0]]),) + result[1:] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1882 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1883 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1884 class SendrecvmsgDgramFlagsBase(SendrecvmsgBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1885 # Defines flags to be checked in msg_flags for datagram sockets. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1886 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1887 @property |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1888 def msg_flags_non_eor_indicator(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1889 return super().msg_flags_non_eor_indicator | socket.MSG_TRUNC |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1890 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1891 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1892 class SendrecvmsgSCTPFlagsBase(SendrecvmsgBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1893 # Defines flags to be checked in msg_flags for SCTP sockets. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1894 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1895 @property |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1896 def msg_flags_eor_indicator(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1897 return super().msg_flags_eor_indicator | socket.MSG_EOR |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1898 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1899 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1900 class SendrecvmsgConnectionlessBase(SendrecvmsgBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1901 # Base class for tests on connectionless-mode sockets. Users must |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1902 # supply sockets on attributes cli and serv to be mapped to |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1903 # cli_sock and serv_sock respectively. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1904 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1905 @property |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1906 def serv_sock(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1907 return self.serv |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1908 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1909 @property |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1910 def cli_sock(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1911 return self.cli |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1912 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1913 @property |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1914 def sendmsg_to_server_defaults(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1915 return ([], [], 0, self.serv_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1916 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1917 def sendToServer(self, msg): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1918 return self.cli_sock.sendto(msg, self.serv_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1919 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1920 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1921 class SendrecvmsgConnectedBase(SendrecvmsgBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1922 # Base class for tests on connected sockets. Users must supply |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1923 # sockets on attributes serv_conn and cli_conn (representing the |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1924 # connections *to* the server and the client), to be mapped to |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1925 # cli_sock and serv_sock respectively. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1926 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1927 @property |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1928 def serv_sock(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1929 return self.cli_conn |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1930 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1931 @property |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1932 def cli_sock(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1933 return self.serv_conn |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1934 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1935 def checkRecvmsgAddress(self, addr1, addr2): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1936 # Address is currently "unspecified" for a connected socket, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1937 # so we don't examine it |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1938 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1939 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1940 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1941 class SendrecvmsgServerTimeoutBase(SendrecvmsgBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1942 # Base class to set a timeout on server's socket. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1943 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1944 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1945 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1946 self.serv_sock.settimeout(self.fail_timeout) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1947 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1948 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1949 class SendmsgTests(SendrecvmsgServerTimeoutBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1950 # Tests for sendmsg() which can use any socket type and do not |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1951 # involve recvmsg() or recvmsg_into(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1952 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1953 def testSendmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1954 # Send a simple message with sendmsg(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1955 self.assertEqual(self.serv_sock.recv(len(MSG)), MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1956 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1957 def _testSendmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1958 self.assertEqual(self.sendmsgToServer([MSG]), len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1959 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1960 def testSendmsgDataGenerator(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1961 # Send from buffer obtained from a generator (not a sequence). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1962 self.assertEqual(self.serv_sock.recv(len(MSG)), MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1963 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1964 def _testSendmsgDataGenerator(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1965 self.assertEqual(self.sendmsgToServer((o for o in [MSG])), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1966 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1967 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1968 def testSendmsgAncillaryGenerator(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1969 # Gather (empty) ancillary data from a generator. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1970 self.assertEqual(self.serv_sock.recv(len(MSG)), MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1971 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1972 def _testSendmsgAncillaryGenerator(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1973 self.assertEqual(self.sendmsgToServer([MSG], (o for o in [])), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1974 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1975 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1976 def testSendmsgArray(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1977 # Send data from an array instead of the usual bytes object. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1978 self.assertEqual(self.serv_sock.recv(len(MSG)), MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1979 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1980 def _testSendmsgArray(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1981 self.assertEqual(self.sendmsgToServer([array.array("B", MSG)]), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1982 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1983 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1984 def testSendmsgGather(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1985 # Send message data from more than one buffer (gather write). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1986 self.assertEqual(self.serv_sock.recv(len(MSG)), MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1987 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1988 def _testSendmsgGather(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1989 self.assertEqual(self.sendmsgToServer([MSG[:3], MSG[3:]]), len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1990 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1991 def testSendmsgBadArgs(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1992 # Check that sendmsg() rejects invalid arguments. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1993 self.assertEqual(self.serv_sock.recv(1000), b"done") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1994 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1995 def _testSendmsgBadArgs(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1996 self.assertRaises(TypeError, self.cli_sock.sendmsg) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1997 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1998 b"not in an iterable") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
1999 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2000 object()) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2001 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2002 [object()]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2003 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2004 [MSG, object()]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2005 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2006 [MSG], object()) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2007 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2008 [MSG], [], object()) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2009 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2010 [MSG], [], 0, object()) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2011 self.sendToServer(b"done") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2012 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2013 def testSendmsgBadCmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2014 # Check that invalid ancillary data items are rejected. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2015 self.assertEqual(self.serv_sock.recv(1000), b"done") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2016 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2017 def _testSendmsgBadCmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2018 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2019 [MSG], [object()]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2020 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2021 [MSG], [(object(), 0, b"data")]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2022 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2023 [MSG], [(0, object(), b"data")]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2024 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2025 [MSG], [(0, 0, object())]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2026 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2027 [MSG], [(0, 0)]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2028 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2029 [MSG], [(0, 0, b"data", 42)]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2030 self.sendToServer(b"done") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2031 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2032 @requireAttrs(socket, "CMSG_SPACE") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2033 def testSendmsgBadMultiCmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2034 # Check that invalid ancillary data items are rejected when |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2035 # more than one item is present. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2036 self.assertEqual(self.serv_sock.recv(1000), b"done") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2037 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2038 @testSendmsgBadMultiCmsg.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2039 def _testSendmsgBadMultiCmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2040 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2041 [MSG], [0, 0, b""]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2042 self.assertRaises(TypeError, self.sendmsgToServer, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2043 [MSG], [(0, 0, b""), object()]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2044 self.sendToServer(b"done") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2045 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2046 def testSendmsgExcessCmsgReject(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2047 # Check that sendmsg() rejects excess ancillary data items |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2048 # when the number that can be sent is limited. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2049 self.assertEqual(self.serv_sock.recv(1000), b"done") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2050 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2051 def _testSendmsgExcessCmsgReject(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2052 if not hasattr(socket, "CMSG_SPACE"): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2053 # Can only send one item |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
2054 with self.assertRaises(OSError) as cm: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2055 self.sendmsgToServer([MSG], [(0, 0, b""), (0, 0, b"")]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2056 self.assertIsNone(cm.exception.errno) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2057 self.sendToServer(b"done") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2058 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2059 def testSendmsgAfterClose(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2060 # Check that sendmsg() fails on a closed socket. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2061 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2062 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2063 def _testSendmsgAfterClose(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2064 self.cli_sock.close() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
2065 self.assertRaises(OSError, self.sendmsgToServer, [MSG]) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2066 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2067 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2068 class SendmsgStreamTests(SendmsgTests): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2069 # Tests for sendmsg() which require a stream socket and do not |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2070 # involve recvmsg() or recvmsg_into(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2071 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2072 def testSendmsgExplicitNoneAddr(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2073 # Check that peer address can be specified as None. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2074 self.assertEqual(self.serv_sock.recv(len(MSG)), MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2075 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2076 def _testSendmsgExplicitNoneAddr(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2077 self.assertEqual(self.sendmsgToServer([MSG], [], 0, None), len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2078 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2079 def testSendmsgTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2080 # Check that timeout works with sendmsg(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2081 self.assertEqual(self.serv_sock.recv(512), b"a"*512) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2082 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2083 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2084 def _testSendmsgTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2085 try: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2086 self.cli_sock.settimeout(0.03) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2087 with self.assertRaises(socket.timeout): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2088 while True: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2089 self.sendmsgToServer([b"a"*512]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2090 finally: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2091 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2092 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2093 # XXX: would be nice to have more tests for sendmsg flags argument. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2094 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2095 # Linux supports MSG_DONTWAIT when sending, but in general, it |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2096 # only works when receiving. Could add other platforms if they |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2097 # support it too. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2098 @skipWithClientIf(sys.platform not in {"linux2"}, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2099 "MSG_DONTWAIT not known to work on this platform when " |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2100 "sending") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2101 def testSendmsgDontWait(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2102 # Check that MSG_DONTWAIT in flags causes non-blocking behaviour. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2103 self.assertEqual(self.serv_sock.recv(512), b"a"*512) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2104 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2105 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2106 @testSendmsgDontWait.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2107 def _testSendmsgDontWait(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2108 try: |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
2109 with self.assertRaises(OSError) as cm: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2110 while True: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2111 self.sendmsgToServer([b"a"*512], [], socket.MSG_DONTWAIT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2112 self.assertIn(cm.exception.errno, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2113 (errno.EAGAIN, errno.EWOULDBLOCK)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2114 finally: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2115 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2116 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2117 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2118 class SendmsgConnectionlessTests(SendmsgTests): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2119 # Tests for sendmsg() which require a connectionless-mode |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2120 # (e.g. datagram) socket, and do not involve recvmsg() or |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2121 # recvmsg_into(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2122 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2123 def testSendmsgNoDestAddr(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2124 # Check that sendmsg() fails when no destination address is |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2125 # given for unconnected socket. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2126 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2127 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2128 def _testSendmsgNoDestAddr(self): |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
2129 self.assertRaises(OSError, self.cli_sock.sendmsg, |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2130 [MSG]) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
2131 self.assertRaises(OSError, self.cli_sock.sendmsg, |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2132 [MSG], [], 0, None) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2133 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2134 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2135 class RecvmsgGenericTests(SendrecvmsgBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2136 # Tests for recvmsg() which can also be emulated using |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2137 # recvmsg_into(), and can use any socket type. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2138 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2139 def testRecvmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2140 # Receive a simple message with recvmsg[_into](). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2141 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2142 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2143 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2144 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2145 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2146 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2147 def _testRecvmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2148 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2149 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2150 def testRecvmsgExplicitDefaults(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2151 # Test recvmsg[_into]() with default arguments provided explicitly. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2152 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2153 len(MSG), 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2154 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2155 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2156 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2157 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2158 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2159 def _testRecvmsgExplicitDefaults(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2160 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2161 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2162 def testRecvmsgShorter(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2163 # Receive a message smaller than buffer. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2164 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2165 len(MSG) + 42) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2166 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2167 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2168 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2169 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2170 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2171 def _testRecvmsgShorter(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2172 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2173 |
|
72619
4378bae6b8dc
Issue #13001: Fix test_socket.testRecvmsgTrunc failure on FreeBSD < 8, which
Charles-François Natali <neologix@free.fr>
parents:
72587
diff
changeset
|
2174 # FreeBSD < 8 doesn't always set the MSG_TRUNC flag when a truncated |
|
4378bae6b8dc
Issue #13001: Fix test_socket.testRecvmsgTrunc failure on FreeBSD < 8, which
Charles-François Natali <neologix@free.fr>
parents:
72587
diff
changeset
|
2175 # datagram is received (issue #13001). |
|
4378bae6b8dc
Issue #13001: Fix test_socket.testRecvmsgTrunc failure on FreeBSD < 8, which
Charles-François Natali <neologix@free.fr>
parents:
72587
diff
changeset
|
2176 @support.requires_freebsd_version(8) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2177 def testRecvmsgTrunc(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2178 # Receive part of message, check for truncation indicators. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2179 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2180 len(MSG) - 3) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2181 self.assertEqual(msg, MSG[:-3]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2182 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2183 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2184 self.checkFlags(flags, eor=False) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2185 |
|
72619
4378bae6b8dc
Issue #13001: Fix test_socket.testRecvmsgTrunc failure on FreeBSD < 8, which
Charles-François Natali <neologix@free.fr>
parents:
72587
diff
changeset
|
2186 @support.requires_freebsd_version(8) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2187 def _testRecvmsgTrunc(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2188 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2189 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2190 def testRecvmsgShortAncillaryBuf(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2191 # Test ancillary data buffer too small to hold any ancillary data. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2192 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2193 len(MSG), 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2194 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2195 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2196 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2197 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2198 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2199 def _testRecvmsgShortAncillaryBuf(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2200 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2201 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2202 def testRecvmsgLongAncillaryBuf(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2203 # Test large ancillary data buffer. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2204 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2205 len(MSG), 10240) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2206 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2207 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2208 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2209 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2210 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2211 def _testRecvmsgLongAncillaryBuf(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2212 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2213 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2214 def testRecvmsgAfterClose(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2215 # Check that recvmsg[_into]() fails on a closed socket. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2216 self.serv_sock.close() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
2217 self.assertRaises(OSError, self.doRecvmsg, self.serv_sock, 1024) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2218 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2219 def _testRecvmsgAfterClose(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2220 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2221 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2222 def testRecvmsgTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2223 # Check that timeout works. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2224 try: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2225 self.serv_sock.settimeout(0.03) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2226 self.assertRaises(socket.timeout, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2227 self.doRecvmsg, self.serv_sock, len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2228 finally: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2229 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2230 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2231 def _testRecvmsgTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2232 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2233 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2234 @requireAttrs(socket, "MSG_PEEK") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2235 def testRecvmsgPeek(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2236 # Check that MSG_PEEK in flags enables examination of pending |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2237 # data without consuming it. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2238 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2239 # Receive part of data with MSG_PEEK. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2240 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2241 len(MSG) - 3, 0, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2242 socket.MSG_PEEK) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2243 self.assertEqual(msg, MSG[:-3]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2244 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2245 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2246 # Ignoring MSG_TRUNC here (so this test is the same for stream |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2247 # and datagram sockets). Some wording in POSIX seems to |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2248 # suggest that it needn't be set when peeking, but that may |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2249 # just be a slip. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2250 self.checkFlags(flags, eor=False, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2251 ignore=getattr(socket, "MSG_TRUNC", 0)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2252 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2253 # Receive all data with MSG_PEEK. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2254 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2255 len(MSG), 0, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2256 socket.MSG_PEEK) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2257 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2258 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2259 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2260 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2261 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2262 # Check that the same data can still be received normally. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2263 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2264 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2265 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2266 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2267 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2268 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2269 @testRecvmsgPeek.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2270 def _testRecvmsgPeek(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2271 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2272 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2273 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2274 def testRecvmsgFromSendmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2275 # Test receiving with recvmsg[_into]() when message is sent |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2276 # using sendmsg(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2277 self.serv_sock.settimeout(self.fail_timeout) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2278 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2279 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2280 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2281 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2282 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2283 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2284 @testRecvmsgFromSendmsg.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2285 def _testRecvmsgFromSendmsg(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2286 self.assertEqual(self.sendmsgToServer([MSG[:3], MSG[3:]]), len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2287 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2288 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2289 class RecvmsgGenericStreamTests(RecvmsgGenericTests): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2290 # Tests which require a stream socket and can use either recvmsg() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2291 # or recvmsg_into(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2292 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2293 def testRecvmsgEOF(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2294 # Receive end-of-stream indicator (b"", peer socket closed). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2295 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, 1024) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2296 self.assertEqual(msg, b"") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2297 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2298 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2299 self.checkFlags(flags, eor=None) # Might not have end-of-record marker |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2300 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2301 def _testRecvmsgEOF(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2302 self.cli_sock.close() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2303 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2304 def testRecvmsgOverflow(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2305 # Receive a message in more than one chunk. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2306 seg1, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2307 len(MSG) - 3) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2308 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2309 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2310 self.checkFlags(flags, eor=False) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2311 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2312 seg2, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, 1024) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2313 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2314 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2315 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2316 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2317 msg = seg1 + seg2 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2318 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2319 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2320 def _testRecvmsgOverflow(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2321 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2322 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2323 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2324 class RecvmsgTests(RecvmsgGenericTests): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2325 # Tests for recvmsg() which can use any socket type. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2326 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2327 def testRecvmsgBadArgs(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2328 # Check that recvmsg() rejects invalid arguments. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2329 self.assertRaises(TypeError, self.serv_sock.recvmsg) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2330 self.assertRaises(ValueError, self.serv_sock.recvmsg, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2331 -1, 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2332 self.assertRaises(ValueError, self.serv_sock.recvmsg, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2333 len(MSG), -1, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2334 self.assertRaises(TypeError, self.serv_sock.recvmsg, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2335 [bytearray(10)], 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2336 self.assertRaises(TypeError, self.serv_sock.recvmsg, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2337 object(), 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2338 self.assertRaises(TypeError, self.serv_sock.recvmsg, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2339 len(MSG), object(), 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2340 self.assertRaises(TypeError, self.serv_sock.recvmsg, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2341 len(MSG), 0, object()) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2342 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2343 msg, ancdata, flags, addr = self.serv_sock.recvmsg(len(MSG), 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2344 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2345 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2346 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2347 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2348 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2349 def _testRecvmsgBadArgs(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2350 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2351 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2352 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2353 class RecvmsgIntoTests(RecvmsgIntoMixin, RecvmsgGenericTests): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2354 # Tests for recvmsg_into() which can use any socket type. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2355 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2356 def testRecvmsgIntoBadArgs(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2357 # Check that recvmsg_into() rejects invalid arguments. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2358 buf = bytearray(len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2359 self.assertRaises(TypeError, self.serv_sock.recvmsg_into) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2360 self.assertRaises(TypeError, self.serv_sock.recvmsg_into, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2361 len(MSG), 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2362 self.assertRaises(TypeError, self.serv_sock.recvmsg_into, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2363 buf, 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2364 self.assertRaises(TypeError, self.serv_sock.recvmsg_into, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2365 [object()], 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2366 self.assertRaises(TypeError, self.serv_sock.recvmsg_into, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2367 [b"I'm not writable"], 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2368 self.assertRaises(TypeError, self.serv_sock.recvmsg_into, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2369 [buf, object()], 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2370 self.assertRaises(ValueError, self.serv_sock.recvmsg_into, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2371 [buf], -1, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2372 self.assertRaises(TypeError, self.serv_sock.recvmsg_into, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2373 [buf], object(), 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2374 self.assertRaises(TypeError, self.serv_sock.recvmsg_into, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2375 [buf], 0, object()) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2376 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2377 nbytes, ancdata, flags, addr = self.serv_sock.recvmsg_into([buf], 0, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2378 self.assertEqual(nbytes, len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2379 self.assertEqual(buf, bytearray(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2380 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2381 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2382 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2383 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2384 def _testRecvmsgIntoBadArgs(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2385 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2386 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2387 def testRecvmsgIntoGenerator(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2388 # Receive into buffer obtained from a generator (not a sequence). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2389 buf = bytearray(len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2390 nbytes, ancdata, flags, addr = self.serv_sock.recvmsg_into( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2391 (o for o in [buf])) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2392 self.assertEqual(nbytes, len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2393 self.assertEqual(buf, bytearray(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2394 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2395 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2396 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2397 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2398 def _testRecvmsgIntoGenerator(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2399 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2400 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2401 def testRecvmsgIntoArray(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2402 # Receive into an array rather than the usual bytearray. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2403 buf = array.array("B", [0] * len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2404 nbytes, ancdata, flags, addr = self.serv_sock.recvmsg_into([buf]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2405 self.assertEqual(nbytes, len(MSG)) |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2406 self.assertEqual(buf.tobytes(), MSG) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2407 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2408 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2409 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2410 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2411 def _testRecvmsgIntoArray(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2412 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2413 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2414 def testRecvmsgIntoScatter(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2415 # Receive into multiple buffers (scatter write). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2416 b1 = bytearray(b"----") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2417 b2 = bytearray(b"0123456789") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2418 b3 = bytearray(b"--------------") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2419 nbytes, ancdata, flags, addr = self.serv_sock.recvmsg_into( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2420 [b1, memoryview(b2)[2:9], b3]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2421 self.assertEqual(nbytes, len(b"Mary had a little lamb")) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2422 self.assertEqual(b1, bytearray(b"Mary")) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2423 self.assertEqual(b2, bytearray(b"01 had a 9")) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2424 self.assertEqual(b3, bytearray(b"little lamb---")) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2425 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2426 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2427 self.checkFlags(flags, eor=True) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2428 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2429 def _testRecvmsgIntoScatter(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2430 self.sendToServer(b"Mary had a little lamb") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2431 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2432 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2433 class CmsgMacroTests(unittest.TestCase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2434 # Test the functions CMSG_LEN() and CMSG_SPACE(). Tests |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2435 # assumptions used by sendmsg() and recvmsg[_into](), which share |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2436 # code with these functions. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2437 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2438 # Match the definition in socketmodule.c |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2439 socklen_t_limit = min(0x7fffffff, _testcapi.INT_MAX) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2440 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2441 @requireAttrs(socket, "CMSG_LEN") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2442 def testCMSG_LEN(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2443 # Test CMSG_LEN() with various valid and invalid values, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2444 # checking the assumptions used by recvmsg() and sendmsg(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2445 toobig = self.socklen_t_limit - socket.CMSG_LEN(0) + 1 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2446 values = list(range(257)) + list(range(toobig - 257, toobig)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2447 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2448 # struct cmsghdr has at least three members, two of which are ints |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2449 self.assertGreater(socket.CMSG_LEN(0), array.array("i").itemsize * 2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2450 for n in values: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2451 ret = socket.CMSG_LEN(n) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2452 # This is how recvmsg() calculates the data size |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2453 self.assertEqual(ret - socket.CMSG_LEN(0), n) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2454 self.assertLessEqual(ret, self.socklen_t_limit) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2455 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2456 self.assertRaises(OverflowError, socket.CMSG_LEN, -1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2457 # sendmsg() shares code with these functions, and requires |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2458 # that it reject values over the limit. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2459 self.assertRaises(OverflowError, socket.CMSG_LEN, toobig) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2460 self.assertRaises(OverflowError, socket.CMSG_LEN, sys.maxsize) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2461 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2462 @requireAttrs(socket, "CMSG_SPACE") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2463 def testCMSG_SPACE(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2464 # Test CMSG_SPACE() with various valid and invalid values, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2465 # checking the assumptions used by sendmsg(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2466 toobig = self.socklen_t_limit - socket.CMSG_SPACE(1) + 1 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2467 values = list(range(257)) + list(range(toobig - 257, toobig)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2468 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2469 last = socket.CMSG_SPACE(0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2470 # struct cmsghdr has at least three members, two of which are ints |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2471 self.assertGreater(last, array.array("i").itemsize * 2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2472 for n in values: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2473 ret = socket.CMSG_SPACE(n) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2474 self.assertGreaterEqual(ret, last) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2475 self.assertGreaterEqual(ret, socket.CMSG_LEN(n)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2476 self.assertGreaterEqual(ret, n + socket.CMSG_LEN(0)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2477 self.assertLessEqual(ret, self.socklen_t_limit) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2478 last = ret |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2479 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2480 self.assertRaises(OverflowError, socket.CMSG_SPACE, -1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2481 # sendmsg() shares code with these functions, and requires |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2482 # that it reject values over the limit. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2483 self.assertRaises(OverflowError, socket.CMSG_SPACE, toobig) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2484 self.assertRaises(OverflowError, socket.CMSG_SPACE, sys.maxsize) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2485 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2486 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2487 class SCMRightsTest(SendrecvmsgServerTimeoutBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2488 # Tests for file descriptor passing on Unix-domain sockets. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2489 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2490 # Invalid file descriptor value that's unlikely to evaluate to a |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2491 # real FD even if one of its bytes is replaced with a different |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2492 # value (which shouldn't actually happen). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2493 badfd = -0x5555 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2494 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2495 def newFDs(self, n): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2496 # Return a list of n file descriptors for newly-created files |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2497 # containing their list indices as ASCII numbers. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2498 fds = [] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2499 for i in range(n): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2500 fd, path = tempfile.mkstemp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2501 self.addCleanup(os.unlink, path) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2502 self.addCleanup(os.close, fd) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2503 os.write(fd, str(i).encode()) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2504 fds.append(fd) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2505 return fds |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2506 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2507 def checkFDs(self, fds): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2508 # Check that the file descriptors in the given list contain |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2509 # their correct list indices as ASCII numbers. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2510 for n, fd in enumerate(fds): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2511 os.lseek(fd, 0, os.SEEK_SET) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2512 self.assertEqual(os.read(fd, 1024), str(n).encode()) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2513 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2514 def registerRecvmsgResult(self, result): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2515 self.addCleanup(self.closeRecvmsgFDs, result) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2516 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2517 def closeRecvmsgFDs(self, recvmsg_result): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2518 # Close all file descriptors specified in the ancillary data |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2519 # of the given return value from recvmsg() or recvmsg_into(). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2520 for cmsg_level, cmsg_type, cmsg_data in recvmsg_result[1]: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2521 if (cmsg_level == socket.SOL_SOCKET and |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2522 cmsg_type == socket.SCM_RIGHTS): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2523 fds = array.array("i") |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2524 fds.frombytes(cmsg_data[: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2525 len(cmsg_data) - (len(cmsg_data) % fds.itemsize)]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2526 for fd in fds: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2527 os.close(fd) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2528 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2529 def createAndSendFDs(self, n): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2530 # Send n new file descriptors created by newFDs() to the |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2531 # server, with the constant MSG as the non-ancillary data. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2532 self.assertEqual( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2533 self.sendmsgToServer([MSG], |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2534 [(socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2535 socket.SCM_RIGHTS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2536 array.array("i", self.newFDs(n)))]), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2537 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2538 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2539 def checkRecvmsgFDs(self, numfds, result, maxcmsgs=1, ignoreflags=0): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2540 # Check that constant MSG was received with numfds file |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2541 # descriptors in a maximum of maxcmsgs control messages (which |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2542 # must contain only complete integers). By default, check |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2543 # that MSG_CTRUNC is unset, but ignore any flags in |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2544 # ignoreflags. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2545 msg, ancdata, flags, addr = result |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2546 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2547 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2548 self.checkFlags(flags, eor=True, checkunset=socket.MSG_CTRUNC, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2549 ignore=ignoreflags) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2550 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2551 self.assertIsInstance(ancdata, list) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2552 self.assertLessEqual(len(ancdata), maxcmsgs) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2553 fds = array.array("i") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2554 for item in ancdata: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2555 self.assertIsInstance(item, tuple) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2556 cmsg_level, cmsg_type, cmsg_data = item |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2557 self.assertEqual(cmsg_level, socket.SOL_SOCKET) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2558 self.assertEqual(cmsg_type, socket.SCM_RIGHTS) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2559 self.assertIsInstance(cmsg_data, bytes) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2560 self.assertEqual(len(cmsg_data) % SIZEOF_INT, 0) |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2561 fds.frombytes(cmsg_data) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2562 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2563 self.assertEqual(len(fds), numfds) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2564 self.checkFDs(fds) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2565 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2566 def testFDPassSimple(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2567 # Pass a single FD (array read from bytes object). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2568 self.checkRecvmsgFDs(1, self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2569 len(MSG), 10240)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2570 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2571 def _testFDPassSimple(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2572 self.assertEqual( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2573 self.sendmsgToServer( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2574 [MSG], |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2575 [(socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2576 socket.SCM_RIGHTS, |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2577 array.array("i", self.newFDs(1)).tobytes())]), |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2578 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2579 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2580 def testMultipleFDPass(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2581 # Pass multiple FDs in a single array. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2582 self.checkRecvmsgFDs(4, self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2583 len(MSG), 10240)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2584 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2585 def _testMultipleFDPass(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2586 self.createAndSendFDs(4) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2587 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2588 @requireAttrs(socket, "CMSG_SPACE") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2589 def testFDPassCMSG_SPACE(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2590 # Test using CMSG_SPACE() to calculate ancillary buffer size. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2591 self.checkRecvmsgFDs( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2592 4, self.doRecvmsg(self.serv_sock, len(MSG), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2593 socket.CMSG_SPACE(4 * SIZEOF_INT))) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2594 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2595 @testFDPassCMSG_SPACE.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2596 def _testFDPassCMSG_SPACE(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2597 self.createAndSendFDs(4) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2598 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2599 def testFDPassCMSG_LEN(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2600 # Test using CMSG_LEN() to calculate ancillary buffer size. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2601 self.checkRecvmsgFDs(1, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2602 self.doRecvmsg(self.serv_sock, len(MSG), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2603 socket.CMSG_LEN(4 * SIZEOF_INT)), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2604 # RFC 3542 says implementations may set |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2605 # MSG_CTRUNC if there isn't enough space |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2606 # for trailing padding. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2607 ignoreflags=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2608 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2609 def _testFDPassCMSG_LEN(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2610 self.createAndSendFDs(1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2611 |
|
72400
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
2612 # Issue #12958: The following test has problems on Mac OS X |
|
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
2613 @support.anticipate_failure(sys.platform == "darwin") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2614 @requireAttrs(socket, "CMSG_SPACE") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2615 def testFDPassSeparate(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2616 # Pass two FDs in two separate arrays. Arrays may be combined |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2617 # into a single control message by the OS. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2618 self.checkRecvmsgFDs(2, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2619 self.doRecvmsg(self.serv_sock, len(MSG), 10240), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2620 maxcmsgs=2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2621 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2622 @testFDPassSeparate.client_skip |
|
72400
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
2623 @support.anticipate_failure(sys.platform == "darwin") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2624 def _testFDPassSeparate(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2625 fd0, fd1 = self.newFDs(2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2626 self.assertEqual( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2627 self.sendmsgToServer([MSG], [(socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2628 socket.SCM_RIGHTS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2629 array.array("i", [fd0])), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2630 (socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2631 socket.SCM_RIGHTS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2632 array.array("i", [fd1]))]), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2633 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2634 |
|
72400
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
2635 # Issue #12958: The following test has problems on Mac OS X |
|
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
2636 @support.anticipate_failure(sys.platform == "darwin") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2637 @requireAttrs(socket, "CMSG_SPACE") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2638 def testFDPassSeparateMinSpace(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2639 # Pass two FDs in two separate arrays, receiving them into the |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2640 # minimum space for two arrays. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2641 self.checkRecvmsgFDs(2, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2642 self.doRecvmsg(self.serv_sock, len(MSG), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2643 socket.CMSG_SPACE(SIZEOF_INT) + |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2644 socket.CMSG_LEN(SIZEOF_INT)), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2645 maxcmsgs=2, ignoreflags=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2646 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2647 @testFDPassSeparateMinSpace.client_skip |
|
72400
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
2648 @support.anticipate_failure(sys.platform == "darwin") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2649 def _testFDPassSeparateMinSpace(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2650 fd0, fd1 = self.newFDs(2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2651 self.assertEqual( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2652 self.sendmsgToServer([MSG], [(socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2653 socket.SCM_RIGHTS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2654 array.array("i", [fd0])), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2655 (socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2656 socket.SCM_RIGHTS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2657 array.array("i", [fd1]))]), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2658 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2659 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2660 def sendAncillaryIfPossible(self, msg, ancdata): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2661 # Try to send msg and ancdata to server, but if the system |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2662 # call fails, just send msg with no ancillary data. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2663 try: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2664 nbytes = self.sendmsgToServer([msg], ancdata) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
2665 except OSError as e: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2666 # Check that it was the system call that failed |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2667 self.assertIsInstance(e.errno, int) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2668 nbytes = self.sendmsgToServer([msg]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2669 self.assertEqual(nbytes, len(msg)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2670 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2671 def testFDPassEmpty(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2672 # Try to pass an empty FD array. Can receive either no array |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2673 # or an empty array. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2674 self.checkRecvmsgFDs(0, self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2675 len(MSG), 10240), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2676 ignoreflags=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2677 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2678 def _testFDPassEmpty(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2679 self.sendAncillaryIfPossible(MSG, [(socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2680 socket.SCM_RIGHTS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2681 b"")]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2682 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2683 def testFDPassPartialInt(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2684 # Try to pass a truncated FD array. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2685 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2686 len(MSG), 10240) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2687 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2688 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2689 self.checkFlags(flags, eor=True, ignore=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2690 self.assertLessEqual(len(ancdata), 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2691 for cmsg_level, cmsg_type, cmsg_data in ancdata: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2692 self.assertEqual(cmsg_level, socket.SOL_SOCKET) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2693 self.assertEqual(cmsg_type, socket.SCM_RIGHTS) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2694 self.assertLess(len(cmsg_data), SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2695 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2696 def _testFDPassPartialInt(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2697 self.sendAncillaryIfPossible( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2698 MSG, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2699 [(socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2700 socket.SCM_RIGHTS, |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2701 array.array("i", [self.badfd]).tobytes()[:-1])]) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2702 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2703 @requireAttrs(socket, "CMSG_SPACE") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2704 def testFDPassPartialIntInMiddle(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2705 # Try to pass two FD arrays, the first of which is truncated. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2706 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2707 len(MSG), 10240) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2708 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2709 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2710 self.checkFlags(flags, eor=True, ignore=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2711 self.assertLessEqual(len(ancdata), 2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2712 fds = array.array("i") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2713 # Arrays may have been combined in a single control message |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2714 for cmsg_level, cmsg_type, cmsg_data in ancdata: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2715 self.assertEqual(cmsg_level, socket.SOL_SOCKET) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2716 self.assertEqual(cmsg_type, socket.SCM_RIGHTS) |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2717 fds.frombytes(cmsg_data[: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2718 len(cmsg_data) - (len(cmsg_data) % fds.itemsize)]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2719 self.assertLessEqual(len(fds), 2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2720 self.checkFDs(fds) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2721 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2722 @testFDPassPartialIntInMiddle.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2723 def _testFDPassPartialIntInMiddle(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2724 fd0, fd1 = self.newFDs(2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2725 self.sendAncillaryIfPossible( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2726 MSG, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2727 [(socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2728 socket.SCM_RIGHTS, |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2729 array.array("i", [fd0, self.badfd]).tobytes()[:-1]), |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2730 (socket.SOL_SOCKET, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2731 socket.SCM_RIGHTS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2732 array.array("i", [fd1]))]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2733 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2734 def checkTruncatedHeader(self, result, ignoreflags=0): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2735 # Check that no ancillary data items are returned when data is |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2736 # truncated inside the cmsghdr structure. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2737 msg, ancdata, flags, addr = result |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2738 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2739 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2740 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2741 self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2742 ignore=ignoreflags) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2743 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2744 def testCmsgTruncNoBufSize(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2745 # Check that no ancillary data is received when no buffer size |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2746 # is specified. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2747 self.checkTruncatedHeader(self.doRecvmsg(self.serv_sock, len(MSG)), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2748 # BSD seems to set MSG_CTRUNC only |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2749 # if an item has been partially |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2750 # received. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2751 ignoreflags=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2752 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2753 def _testCmsgTruncNoBufSize(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2754 self.createAndSendFDs(1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2755 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2756 def testCmsgTrunc0(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2757 # Check that no ancillary data is received when buffer size is 0. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2758 self.checkTruncatedHeader(self.doRecvmsg(self.serv_sock, len(MSG), 0), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2759 ignoreflags=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2760 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2761 def _testCmsgTrunc0(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2762 self.createAndSendFDs(1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2763 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2764 # Check that no ancillary data is returned for various non-zero |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2765 # (but still too small) buffer sizes. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2766 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2767 def testCmsgTrunc1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2768 self.checkTruncatedHeader(self.doRecvmsg(self.serv_sock, len(MSG), 1)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2769 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2770 def _testCmsgTrunc1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2771 self.createAndSendFDs(1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2772 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2773 def testCmsgTrunc2Int(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2774 # The cmsghdr structure has at least three members, two of |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2775 # which are ints, so we still shouldn't see any ancillary |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2776 # data. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2777 self.checkTruncatedHeader(self.doRecvmsg(self.serv_sock, len(MSG), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2778 SIZEOF_INT * 2)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2779 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2780 def _testCmsgTrunc2Int(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2781 self.createAndSendFDs(1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2782 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2783 def testCmsgTruncLen0Minus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2784 self.checkTruncatedHeader(self.doRecvmsg(self.serv_sock, len(MSG), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2785 socket.CMSG_LEN(0) - 1)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2786 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2787 def _testCmsgTruncLen0Minus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2788 self.createAndSendFDs(1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2789 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2790 # The following tests try to truncate the control message in the |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2791 # middle of the FD array. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2792 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2793 def checkTruncatedArray(self, ancbuf, maxdata, mindata=0): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2794 # Check that file descriptor data is truncated to between |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2795 # mindata and maxdata bytes when received with buffer size |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2796 # ancbuf, and that any complete file descriptor numbers are |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2797 # valid. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2798 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2799 len(MSG), ancbuf) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2800 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2801 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2802 self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2803 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2804 if mindata == 0 and ancdata == []: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2805 return |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2806 self.assertEqual(len(ancdata), 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2807 cmsg_level, cmsg_type, cmsg_data = ancdata[0] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2808 self.assertEqual(cmsg_level, socket.SOL_SOCKET) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2809 self.assertEqual(cmsg_type, socket.SCM_RIGHTS) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2810 self.assertGreaterEqual(len(cmsg_data), mindata) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2811 self.assertLessEqual(len(cmsg_data), maxdata) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2812 fds = array.array("i") |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2813 fds.frombytes(cmsg_data[: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2814 len(cmsg_data) - (len(cmsg_data) % fds.itemsize)]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2815 self.checkFDs(fds) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2816 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2817 def testCmsgTruncLen0(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2818 self.checkTruncatedArray(ancbuf=socket.CMSG_LEN(0), maxdata=0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2819 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2820 def _testCmsgTruncLen0(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2821 self.createAndSendFDs(1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2822 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2823 def testCmsgTruncLen0Plus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2824 self.checkTruncatedArray(ancbuf=socket.CMSG_LEN(0) + 1, maxdata=1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2825 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2826 def _testCmsgTruncLen0Plus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2827 self.createAndSendFDs(2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2828 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2829 def testCmsgTruncLen1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2830 self.checkTruncatedArray(ancbuf=socket.CMSG_LEN(SIZEOF_INT), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2831 maxdata=SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2832 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2833 def _testCmsgTruncLen1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2834 self.createAndSendFDs(2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2835 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2836 def testCmsgTruncLen2Minus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2837 self.checkTruncatedArray(ancbuf=socket.CMSG_LEN(2 * SIZEOF_INT) - 1, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2838 maxdata=(2 * SIZEOF_INT) - 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2839 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2840 def _testCmsgTruncLen2Minus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2841 self.createAndSendFDs(2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2842 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2843 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2844 class RFC3542AncillaryTest(SendrecvmsgServerTimeoutBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2845 # Test sendmsg() and recvmsg[_into]() using the ancillary data |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2846 # features of the RFC 3542 Advanced Sockets API for IPv6. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2847 # Currently we can only handle certain data items (e.g. traffic |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2848 # class, hop limit, MTU discovery and fragmentation settings) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2849 # without resorting to unportable means such as the struct module, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2850 # but the tests here are aimed at testing the ancillary data |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2851 # handling in sendmsg() and recvmsg() rather than the IPv6 API |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2852 # itself. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2853 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2854 # Test value to use when setting hop limit of packet |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2855 hop_limit = 2 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2856 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2857 # Test value to use when setting traffic class of packet. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2858 # -1 means "use kernel default". |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2859 traffic_class = -1 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2860 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2861 def ancillaryMapping(self, ancdata): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2862 # Given ancillary data list ancdata, return a mapping from |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2863 # pairs (cmsg_level, cmsg_type) to corresponding cmsg_data. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2864 # Check that no (level, type) pair appears more than once. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2865 d = {} |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2866 for cmsg_level, cmsg_type, cmsg_data in ancdata: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2867 self.assertNotIn((cmsg_level, cmsg_type), d) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2868 d[(cmsg_level, cmsg_type)] = cmsg_data |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2869 return d |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2870 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2871 def checkHopLimit(self, ancbufsize, maxhop=255, ignoreflags=0): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2872 # Receive hop limit into ancbufsize bytes of ancillary data |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2873 # space. Check that data is MSG, ancillary data is not |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2874 # truncated (but ignore any flags in ignoreflags), and hop |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2875 # limit is between 0 and maxhop inclusive. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2876 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2877 socket.IPV6_RECVHOPLIMIT, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2878 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2879 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2880 len(MSG), ancbufsize) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2881 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2882 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2883 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2884 self.checkFlags(flags, eor=True, checkunset=socket.MSG_CTRUNC, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2885 ignore=ignoreflags) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2886 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2887 self.assertEqual(len(ancdata), 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2888 self.assertIsInstance(ancdata[0], tuple) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2889 cmsg_level, cmsg_type, cmsg_data = ancdata[0] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2890 self.assertEqual(cmsg_level, socket.IPPROTO_IPV6) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2891 self.assertEqual(cmsg_type, socket.IPV6_HOPLIMIT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2892 self.assertIsInstance(cmsg_data, bytes) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2893 self.assertEqual(len(cmsg_data), SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2894 a = array.array("i") |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2895 a.frombytes(cmsg_data) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2896 self.assertGreaterEqual(a[0], 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2897 self.assertLessEqual(a[0], maxhop) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2898 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2899 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2900 def testRecvHopLimit(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2901 # Test receiving the packet hop limit as ancillary data. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2902 self.checkHopLimit(ancbufsize=10240) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2903 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2904 @testRecvHopLimit.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2905 def _testRecvHopLimit(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2906 # Need to wait until server has asked to receive ancillary |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2907 # data, as implementations are not required to buffer it |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2908 # otherwise. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2909 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2910 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2911 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2912 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2913 def testRecvHopLimitCMSG_SPACE(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2914 # Test receiving hop limit, using CMSG_SPACE to calculate buffer size. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2915 self.checkHopLimit(ancbufsize=socket.CMSG_SPACE(SIZEOF_INT)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2916 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2917 @testRecvHopLimitCMSG_SPACE.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2918 def _testRecvHopLimitCMSG_SPACE(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2919 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2920 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2921 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2922 # Could test receiving into buffer sized using CMSG_LEN, but RFC |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2923 # 3542 says portable applications must provide space for trailing |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2924 # padding. Implementations may set MSG_CTRUNC if there isn't |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2925 # enough space for the padding. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2926 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2927 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2928 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2929 def testSetHopLimit(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2930 # Test setting hop limit on outgoing packet and receiving it |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2931 # at the other end. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2932 self.checkHopLimit(ancbufsize=10240, maxhop=self.hop_limit) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2933 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2934 @testSetHopLimit.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2935 def _testSetHopLimit(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2936 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2937 self.assertEqual( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2938 self.sendmsgToServer([MSG], |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2939 [(socket.IPPROTO_IPV6, socket.IPV6_HOPLIMIT, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2940 array.array("i", [self.hop_limit]))]), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2941 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2942 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2943 def checkTrafficClassAndHopLimit(self, ancbufsize, maxhop=255, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2944 ignoreflags=0): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2945 # Receive traffic class and hop limit into ancbufsize bytes of |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2946 # ancillary data space. Check that data is MSG, ancillary |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2947 # data is not truncated (but ignore any flags in ignoreflags), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2948 # and traffic class and hop limit are in range (hop limit no |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2949 # more than maxhop). |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2950 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2951 socket.IPV6_RECVHOPLIMIT, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2952 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2953 socket.IPV6_RECVTCLASS, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2954 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2955 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2956 len(MSG), ancbufsize) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2957 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2958 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2959 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2960 self.checkFlags(flags, eor=True, checkunset=socket.MSG_CTRUNC, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2961 ignore=ignoreflags) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2962 self.assertEqual(len(ancdata), 2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2963 ancmap = self.ancillaryMapping(ancdata) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2964 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2965 tcdata = ancmap[(socket.IPPROTO_IPV6, socket.IPV6_TCLASS)] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2966 self.assertEqual(len(tcdata), SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2967 a = array.array("i") |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2968 a.frombytes(tcdata) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2969 self.assertGreaterEqual(a[0], 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2970 self.assertLessEqual(a[0], 255) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2971 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2972 hldata = ancmap[(socket.IPPROTO_IPV6, socket.IPV6_HOPLIMIT)] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2973 self.assertEqual(len(hldata), SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2974 a = array.array("i") |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
2975 a.frombytes(hldata) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2976 self.assertGreaterEqual(a[0], 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2977 self.assertLessEqual(a[0], maxhop) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2978 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2979 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2980 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2981 def testRecvTrafficClassAndHopLimit(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2982 # Test receiving traffic class and hop limit as ancillary data. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2983 self.checkTrafficClassAndHopLimit(ancbufsize=10240) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2984 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2985 @testRecvTrafficClassAndHopLimit.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2986 def _testRecvTrafficClassAndHopLimit(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2987 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2988 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2989 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2990 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2991 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2992 def testRecvTrafficClassAndHopLimitCMSG_SPACE(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2993 # Test receiving traffic class and hop limit, using |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2994 # CMSG_SPACE() to calculate buffer size. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2995 self.checkTrafficClassAndHopLimit( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2996 ancbufsize=socket.CMSG_SPACE(SIZEOF_INT) * 2) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2997 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2998 @testRecvTrafficClassAndHopLimitCMSG_SPACE.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
2999 def _testRecvTrafficClassAndHopLimitCMSG_SPACE(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3000 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3001 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3002 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3003 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3004 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3005 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3006 def testSetTrafficClassAndHopLimit(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3007 # Test setting traffic class and hop limit on outgoing packet, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3008 # and receiving them at the other end. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3009 self.checkTrafficClassAndHopLimit(ancbufsize=10240, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3010 maxhop=self.hop_limit) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3011 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3012 @testSetTrafficClassAndHopLimit.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3013 def _testSetTrafficClassAndHopLimit(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3014 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3015 self.assertEqual( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3016 self.sendmsgToServer([MSG], |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3017 [(socket.IPPROTO_IPV6, socket.IPV6_TCLASS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3018 array.array("i", [self.traffic_class])), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3019 (socket.IPPROTO_IPV6, socket.IPV6_HOPLIMIT, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3020 array.array("i", [self.hop_limit]))]), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3021 len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3022 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3023 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3024 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3025 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3026 def testOddCmsgSize(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3027 # Try to send ancillary data with first item one byte too |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3028 # long. Fall back to sending with correct size if this fails, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3029 # and check that second item was handled correctly. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3030 self.checkTrafficClassAndHopLimit(ancbufsize=10240, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3031 maxhop=self.hop_limit) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3032 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3033 @testOddCmsgSize.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3034 def _testOddCmsgSize(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3035 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3036 try: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3037 nbytes = self.sendmsgToServer( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3038 [MSG], |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3039 [(socket.IPPROTO_IPV6, socket.IPV6_TCLASS, |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
3040 array.array("i", [self.traffic_class]).tobytes() + b"\x00"), |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3041 (socket.IPPROTO_IPV6, socket.IPV6_HOPLIMIT, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3042 array.array("i", [self.hop_limit]))]) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3043 except OSError as e: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3044 self.assertIsInstance(e.errno, int) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3045 nbytes = self.sendmsgToServer( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3046 [MSG], |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3047 [(socket.IPPROTO_IPV6, socket.IPV6_TCLASS, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3048 array.array("i", [self.traffic_class])), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3049 (socket.IPPROTO_IPV6, socket.IPV6_HOPLIMIT, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3050 array.array("i", [self.hop_limit]))]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3051 self.assertEqual(nbytes, len(MSG)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3052 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3053 # Tests for proper handling of truncated ancillary data |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3054 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3055 def checkHopLimitTruncatedHeader(self, ancbufsize, ignoreflags=0): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3056 # Receive hop limit into ancbufsize bytes of ancillary data |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3057 # space, which should be too small to contain the ancillary |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3058 # data header (if ancbufsize is None, pass no second argument |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3059 # to recvmsg()). Check that data is MSG, MSG_CTRUNC is set |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3060 # (unless included in ignoreflags), and no ancillary data is |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3061 # returned. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3062 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3063 socket.IPV6_RECVHOPLIMIT, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3064 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3065 args = () if ancbufsize is None else (ancbufsize,) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3066 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3067 len(MSG), *args) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3068 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3069 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3070 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3071 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3072 self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3073 ignore=ignoreflags) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3074 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3075 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3076 def testCmsgTruncNoBufSize(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3077 # Check that no ancillary data is received when no ancillary |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3078 # buffer size is provided. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3079 self.checkHopLimitTruncatedHeader(ancbufsize=None, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3080 # BSD seems to set |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3081 # MSG_CTRUNC only if an item |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3082 # has been partially |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3083 # received. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3084 ignoreflags=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3085 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3086 @testCmsgTruncNoBufSize.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3087 def _testCmsgTruncNoBufSize(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3088 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3089 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3090 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3091 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3092 def testSingleCmsgTrunc0(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3093 # Check that no ancillary data is received when ancillary |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3094 # buffer size is zero. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3095 self.checkHopLimitTruncatedHeader(ancbufsize=0, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3096 ignoreflags=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3097 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3098 @testSingleCmsgTrunc0.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3099 def _testSingleCmsgTrunc0(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3100 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3101 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3102 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3103 # Check that no ancillary data is returned for various non-zero |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3104 # (but still too small) buffer sizes. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3105 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3106 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3107 def testSingleCmsgTrunc1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3108 self.checkHopLimitTruncatedHeader(ancbufsize=1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3109 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3110 @testSingleCmsgTrunc1.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3111 def _testSingleCmsgTrunc1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3112 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3113 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3114 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3115 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3116 def testSingleCmsgTrunc2Int(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3117 self.checkHopLimitTruncatedHeader(ancbufsize=2 * SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3118 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3119 @testSingleCmsgTrunc2Int.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3120 def _testSingleCmsgTrunc2Int(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3121 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3122 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3123 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3124 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3125 def testSingleCmsgTruncLen0Minus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3126 self.checkHopLimitTruncatedHeader(ancbufsize=socket.CMSG_LEN(0) - 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3127 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3128 @testSingleCmsgTruncLen0Minus1.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3129 def _testSingleCmsgTruncLen0Minus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3130 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3131 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3132 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3133 @requireAttrs(socket, "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3134 def testSingleCmsgTruncInData(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3135 # Test truncation of a control message inside its associated |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3136 # data. The message may be returned with its data truncated, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3137 # or not returned at all. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3138 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3139 socket.IPV6_RECVHOPLIMIT, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3140 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3141 msg, ancdata, flags, addr = self.doRecvmsg( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3142 self.serv_sock, len(MSG), socket.CMSG_LEN(SIZEOF_INT) - 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3143 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3144 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3145 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3146 self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3147 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3148 self.assertLessEqual(len(ancdata), 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3149 if ancdata: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3150 cmsg_level, cmsg_type, cmsg_data = ancdata[0] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3151 self.assertEqual(cmsg_level, socket.IPPROTO_IPV6) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3152 self.assertEqual(cmsg_type, socket.IPV6_HOPLIMIT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3153 self.assertLess(len(cmsg_data), SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3154 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3155 @testSingleCmsgTruncInData.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3156 def _testSingleCmsgTruncInData(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3157 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3158 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3159 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3160 def checkTruncatedSecondHeader(self, ancbufsize, ignoreflags=0): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3161 # Receive traffic class and hop limit into ancbufsize bytes of |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3162 # ancillary data space, which should be large enough to |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3163 # contain the first item, but too small to contain the header |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3164 # of the second. Check that data is MSG, MSG_CTRUNC is set |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3165 # (unless included in ignoreflags), and only one ancillary |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3166 # data item is returned. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3167 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3168 socket.IPV6_RECVHOPLIMIT, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3169 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3170 socket.IPV6_RECVTCLASS, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3171 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3172 msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3173 len(MSG), ancbufsize) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3174 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3175 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3176 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3177 self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3178 ignore=ignoreflags) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3179 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3180 self.assertEqual(len(ancdata), 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3181 cmsg_level, cmsg_type, cmsg_data = ancdata[0] |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3182 self.assertEqual(cmsg_level, socket.IPPROTO_IPV6) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3183 self.assertIn(cmsg_type, {socket.IPV6_TCLASS, socket.IPV6_HOPLIMIT}) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3184 self.assertEqual(len(cmsg_data), SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3185 a = array.array("i") |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
3186 a.frombytes(cmsg_data) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3187 self.assertGreaterEqual(a[0], 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3188 self.assertLessEqual(a[0], 255) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3189 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3190 # Try the above test with various buffer sizes. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3191 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3192 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3193 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3194 def testSecondCmsgTrunc0(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3195 self.checkTruncatedSecondHeader(socket.CMSG_SPACE(SIZEOF_INT), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3196 ignoreflags=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3197 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3198 @testSecondCmsgTrunc0.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3199 def _testSecondCmsgTrunc0(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3200 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3201 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3202 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3203 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3204 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3205 def testSecondCmsgTrunc1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3206 self.checkTruncatedSecondHeader(socket.CMSG_SPACE(SIZEOF_INT) + 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3207 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3208 @testSecondCmsgTrunc1.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3209 def _testSecondCmsgTrunc1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3210 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3211 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3212 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3213 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3214 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3215 def testSecondCmsgTrunc2Int(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3216 self.checkTruncatedSecondHeader(socket.CMSG_SPACE(SIZEOF_INT) + |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3217 2 * SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3218 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3219 @testSecondCmsgTrunc2Int.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3220 def _testSecondCmsgTrunc2Int(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3221 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3222 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3223 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3224 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3225 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3226 def testSecondCmsgTruncLen0Minus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3227 self.checkTruncatedSecondHeader(socket.CMSG_SPACE(SIZEOF_INT) + |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3228 socket.CMSG_LEN(0) - 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3229 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3230 @testSecondCmsgTruncLen0Minus1.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3231 def _testSecondCmsgTruncLen0Minus1(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3232 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3233 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3234 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3235 @requireAttrs(socket, "CMSG_SPACE", "IPV6_RECVHOPLIMIT", "IPV6_HOPLIMIT", |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3236 "IPV6_RECVTCLASS", "IPV6_TCLASS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3237 def testSecomdCmsgTruncInData(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3238 # Test truncation of the second of two control messages inside |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3239 # its associated data. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3240 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3241 socket.IPV6_RECVHOPLIMIT, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3242 self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3243 socket.IPV6_RECVTCLASS, 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3244 self.misc_event.set() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3245 msg, ancdata, flags, addr = self.doRecvmsg( |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3246 self.serv_sock, len(MSG), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3247 socket.CMSG_SPACE(SIZEOF_INT) + socket.CMSG_LEN(SIZEOF_INT) - 1) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3248 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3249 self.assertEqual(msg, MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3250 self.checkRecvmsgAddress(addr, self.cli_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3251 self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3252 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3253 cmsg_types = {socket.IPV6_TCLASS, socket.IPV6_HOPLIMIT} |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3254 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3255 cmsg_level, cmsg_type, cmsg_data = ancdata.pop(0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3256 self.assertEqual(cmsg_level, socket.IPPROTO_IPV6) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3257 cmsg_types.remove(cmsg_type) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3258 self.assertEqual(len(cmsg_data), SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3259 a = array.array("i") |
|
72034
d49cf0800c14
Fix deprecation warnings in test_socket.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents:
72029
diff
changeset
|
3260 a.frombytes(cmsg_data) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3261 self.assertGreaterEqual(a[0], 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3262 self.assertLessEqual(a[0], 255) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3263 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3264 if ancdata: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3265 cmsg_level, cmsg_type, cmsg_data = ancdata.pop(0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3266 self.assertEqual(cmsg_level, socket.IPPROTO_IPV6) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3267 cmsg_types.remove(cmsg_type) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3268 self.assertLess(len(cmsg_data), SIZEOF_INT) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3269 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3270 self.assertEqual(ancdata, []) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3271 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3272 @testSecomdCmsgTruncInData.client_skip |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3273 def _testSecomdCmsgTruncInData(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3274 self.assertTrue(self.misc_event.wait(timeout=self.fail_timeout)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3275 self.sendToServer(MSG) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3276 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3277 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3278 # Derive concrete test classes for different socket types. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3279 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3280 class SendrecvmsgUDPTestBase(SendrecvmsgDgramFlagsBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3281 SendrecvmsgConnectionlessBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3282 ThreadedSocketTestMixin, UDPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3283 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3284 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3285 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3286 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3287 class SendmsgUDPTest(SendmsgConnectionlessTests, SendrecvmsgUDPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3288 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3289 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3290 @requireAttrs(socket.socket, "recvmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3291 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3292 class RecvmsgUDPTest(RecvmsgTests, SendrecvmsgUDPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3293 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3294 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3295 @requireAttrs(socket.socket, "recvmsg_into") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3296 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3297 class RecvmsgIntoUDPTest(RecvmsgIntoTests, SendrecvmsgUDPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3298 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3299 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3300 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3301 class SendrecvmsgUDP6TestBase(SendrecvmsgDgramFlagsBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3302 SendrecvmsgConnectionlessBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3303 ThreadedSocketTestMixin, UDP6TestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3304 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3305 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3306 @requireAttrs(socket.socket, "sendmsg") |
|
77988
b71dc2e9e00d
#15284: Skip {send,recv}msg tests with disabled IPv6
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
77662
diff
changeset
|
3307 @unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.') |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3308 @requireSocket("AF_INET6", "SOCK_DGRAM") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3309 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3310 class SendmsgUDP6Test(SendmsgConnectionlessTests, SendrecvmsgUDP6TestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3311 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3312 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3313 @requireAttrs(socket.socket, "recvmsg") |
|
77988
b71dc2e9e00d
#15284: Skip {send,recv}msg tests with disabled IPv6
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
77662
diff
changeset
|
3314 @unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.') |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3315 @requireSocket("AF_INET6", "SOCK_DGRAM") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3316 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3317 class RecvmsgUDP6Test(RecvmsgTests, SendrecvmsgUDP6TestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3318 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3319 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3320 @requireAttrs(socket.socket, "recvmsg_into") |
|
77988
b71dc2e9e00d
#15284: Skip {send,recv}msg tests with disabled IPv6
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
77662
diff
changeset
|
3321 @unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.') |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3322 @requireSocket("AF_INET6", "SOCK_DGRAM") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3323 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3324 class RecvmsgIntoUDP6Test(RecvmsgIntoTests, SendrecvmsgUDP6TestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3325 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3326 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3327 @requireAttrs(socket.socket, "recvmsg") |
|
77988
b71dc2e9e00d
#15284: Skip {send,recv}msg tests with disabled IPv6
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
77662
diff
changeset
|
3328 @unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.') |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3329 @requireAttrs(socket, "IPPROTO_IPV6") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3330 @requireSocket("AF_INET6", "SOCK_DGRAM") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3331 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3332 class RecvmsgRFC3542AncillaryUDP6Test(RFC3542AncillaryTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3333 SendrecvmsgUDP6TestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3334 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3335 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3336 @requireAttrs(socket.socket, "recvmsg_into") |
|
77988
b71dc2e9e00d
#15284: Skip {send,recv}msg tests with disabled IPv6
Ross Lagerwall <rosslagerwall@gmail.com>
parents:
77662
diff
changeset
|
3337 @unittest.skipUnless(support.IPV6_ENABLED, 'IPv6 required for this test.') |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3338 @requireAttrs(socket, "IPPROTO_IPV6") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3339 @requireSocket("AF_INET6", "SOCK_DGRAM") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3340 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3341 class RecvmsgIntoRFC3542AncillaryUDP6Test(RecvmsgIntoMixin, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3342 RFC3542AncillaryTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3343 SendrecvmsgUDP6TestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3344 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3345 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3346 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3347 class SendrecvmsgTCPTestBase(SendrecvmsgConnectedBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3348 ConnectedStreamTestMixin, TCPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3349 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3350 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3351 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3352 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3353 class SendmsgTCPTest(SendmsgStreamTests, SendrecvmsgTCPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3354 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3355 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3356 @requireAttrs(socket.socket, "recvmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3357 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3358 class RecvmsgTCPTest(RecvmsgTests, RecvmsgGenericStreamTests, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3359 SendrecvmsgTCPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3360 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3361 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3362 @requireAttrs(socket.socket, "recvmsg_into") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3363 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3364 class RecvmsgIntoTCPTest(RecvmsgIntoTests, RecvmsgGenericStreamTests, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3365 SendrecvmsgTCPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3366 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3367 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3368 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3369 class SendrecvmsgSCTPStreamTestBase(SendrecvmsgSCTPFlagsBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3370 SendrecvmsgConnectedBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3371 ConnectedStreamTestMixin, SCTPStreamBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3372 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3373 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3374 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3375 @requireSocket("AF_INET", "SOCK_STREAM", "IPPROTO_SCTP") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3376 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3377 class SendmsgSCTPStreamTest(SendmsgStreamTests, SendrecvmsgSCTPStreamTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3378 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3379 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3380 @requireAttrs(socket.socket, "recvmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3381 @requireSocket("AF_INET", "SOCK_STREAM", "IPPROTO_SCTP") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3382 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3383 class RecvmsgSCTPStreamTest(RecvmsgTests, RecvmsgGenericStreamTests, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3384 SendrecvmsgSCTPStreamTestBase): |
|
80889
391bda06fa65
Silence sporadic failure in RecvmsgSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79785
diff
changeset
|
3385 |
|
391bda06fa65
Silence sporadic failure in RecvmsgSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79785
diff
changeset
|
3386 def testRecvmsgEOF(self): |
|
391bda06fa65
Silence sporadic failure in RecvmsgSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79785
diff
changeset
|
3387 try: |
|
391bda06fa65
Silence sporadic failure in RecvmsgSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79785
diff
changeset
|
3388 super(RecvmsgSCTPStreamTest, self).testRecvmsgEOF() |
|
391bda06fa65
Silence sporadic failure in RecvmsgSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79785
diff
changeset
|
3389 except OSError as e: |
|
391bda06fa65
Silence sporadic failure in RecvmsgSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79785
diff
changeset
|
3390 if e.errno != errno.ENOTCONN: |
|
391bda06fa65
Silence sporadic failure in RecvmsgSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79785
diff
changeset
|
3391 raise |
|
391bda06fa65
Silence sporadic failure in RecvmsgSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79785
diff
changeset
|
3392 self.skipTest("sporadic ENOTCONN (kernel issue?) - see issue #13876") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3393 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3394 @requireAttrs(socket.socket, "recvmsg_into") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3395 @requireSocket("AF_INET", "SOCK_STREAM", "IPPROTO_SCTP") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3396 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3397 class RecvmsgIntoSCTPStreamTest(RecvmsgIntoTests, RecvmsgGenericStreamTests, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3398 SendrecvmsgSCTPStreamTestBase): |
|
80941
13d8c33de8ff
Silence sporadic failure in RecvmsgIntoSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80889
diff
changeset
|
3399 |
|
13d8c33de8ff
Silence sporadic failure in RecvmsgIntoSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80889
diff
changeset
|
3400 def testRecvmsgEOF(self): |
|
13d8c33de8ff
Silence sporadic failure in RecvmsgIntoSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80889
diff
changeset
|
3401 try: |
|
13d8c33de8ff
Silence sporadic failure in RecvmsgIntoSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80889
diff
changeset
|
3402 super(RecvmsgIntoSCTPStreamTest, self).testRecvmsgEOF() |
|
13d8c33de8ff
Silence sporadic failure in RecvmsgIntoSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80889
diff
changeset
|
3403 except OSError as e: |
|
13d8c33de8ff
Silence sporadic failure in RecvmsgIntoSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80889
diff
changeset
|
3404 if e.errno != errno.ENOTCONN: |
|
13d8c33de8ff
Silence sporadic failure in RecvmsgIntoSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80889
diff
changeset
|
3405 raise |
|
13d8c33de8ff
Silence sporadic failure in RecvmsgIntoSCTPStreamTest.testRecvmsgEOF (issue #13876) - probably not Python-related.
Antoine Pitrou <solipsis@pitrou.net>
parents:
80889
diff
changeset
|
3406 self.skipTest("sporadic ENOTCONN (kernel issue?) - see issue #13876") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3407 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3408 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3409 class SendrecvmsgUnixStreamTestBase(SendrecvmsgConnectedBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3410 ConnectedStreamTestMixin, UnixStreamBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3411 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3412 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3413 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3414 @requireAttrs(socket, "AF_UNIX") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3415 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3416 class SendmsgUnixStreamTest(SendmsgStreamTests, SendrecvmsgUnixStreamTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3417 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3418 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3419 @requireAttrs(socket.socket, "recvmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3420 @requireAttrs(socket, "AF_UNIX") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3421 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3422 class RecvmsgUnixStreamTest(RecvmsgTests, RecvmsgGenericStreamTests, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3423 SendrecvmsgUnixStreamTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3424 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3425 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3426 @requireAttrs(socket.socket, "recvmsg_into") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3427 @requireAttrs(socket, "AF_UNIX") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3428 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3429 class RecvmsgIntoUnixStreamTest(RecvmsgIntoTests, RecvmsgGenericStreamTests, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3430 SendrecvmsgUnixStreamTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3431 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3432 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3433 @requireAttrs(socket.socket, "sendmsg", "recvmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3434 @requireAttrs(socket, "AF_UNIX", "SOL_SOCKET", "SCM_RIGHTS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3435 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3436 class RecvmsgSCMRightsStreamTest(SCMRightsTest, SendrecvmsgUnixStreamTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3437 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3438 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3439 @requireAttrs(socket.socket, "sendmsg", "recvmsg_into") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3440 @requireAttrs(socket, "AF_UNIX", "SOL_SOCKET", "SCM_RIGHTS") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3441 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3442 class RecvmsgIntoSCMRightsStreamTest(RecvmsgIntoMixin, SCMRightsTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3443 SendrecvmsgUnixStreamTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3444 pass |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3445 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3446 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3447 # Test interrupting the interruptible send/receive methods with a |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3448 # signal when a timeout is set. These tests avoid having multiple |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3449 # threads alive during the test so that the OS cannot deliver the |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3450 # signal to the wrong one. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3451 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3452 class InterruptedTimeoutBase(unittest.TestCase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3453 # Base class for interrupted send/receive tests. Installs an |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3454 # empty handler for SIGALRM and removes it on teardown, along with |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3455 # any scheduled alarms. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3456 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3457 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3458 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3459 orig_alrm_handler = signal.signal(signal.SIGALRM, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3460 lambda signum, frame: None) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3461 self.addCleanup(signal.signal, signal.SIGALRM, orig_alrm_handler) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3462 self.addCleanup(self.setAlarm, 0) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3463 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3464 # Timeout for socket operations |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3465 timeout = 4.0 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3466 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3467 # Provide setAlarm() method to schedule delivery of SIGALRM after |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3468 # given number of seconds, or cancel it if zero, and an |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3469 # appropriate time value to use. Use setitimer() if available. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3470 if hasattr(signal, "setitimer"): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3471 alarm_time = 0.05 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3472 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3473 def setAlarm(self, seconds): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3474 signal.setitimer(signal.ITIMER_REAL, seconds) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3475 else: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3476 # Old systems may deliver the alarm up to one second early |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3477 alarm_time = 2 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3478 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3479 def setAlarm(self, seconds): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3480 signal.alarm(seconds) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3481 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3482 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3483 # Require siginterrupt() in order to ensure that system calls are |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3484 # interrupted by default. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3485 @requireAttrs(signal, "siginterrupt") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3486 @unittest.skipUnless(hasattr(signal, "alarm") or hasattr(signal, "setitimer"), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3487 "Don't have signal.alarm or signal.setitimer") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3488 class InterruptedRecvTimeoutTest(InterruptedTimeoutBase, UDPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3489 # Test interrupting the recv*() methods with signals when a |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3490 # timeout is set. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3491 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3492 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3493 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3494 self.serv.settimeout(self.timeout) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3495 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3496 def checkInterruptedRecv(self, func, *args, **kwargs): |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3497 # Check that func(*args, **kwargs) raises OSError with an |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3498 # errno of EINTR when interrupted by a signal. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3499 self.setAlarm(self.alarm_time) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3500 with self.assertRaises(OSError) as cm: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3501 func(*args, **kwargs) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3502 self.assertNotIsInstance(cm.exception, socket.timeout) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3503 self.assertEqual(cm.exception.errno, errno.EINTR) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3504 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3505 def testInterruptedRecvTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3506 self.checkInterruptedRecv(self.serv.recv, 1024) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3507 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3508 def testInterruptedRecvIntoTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3509 self.checkInterruptedRecv(self.serv.recv_into, bytearray(1024)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3510 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3511 def testInterruptedRecvfromTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3512 self.checkInterruptedRecv(self.serv.recvfrom, 1024) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3513 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3514 def testInterruptedRecvfromIntoTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3515 self.checkInterruptedRecv(self.serv.recvfrom_into, bytearray(1024)) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3516 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3517 @requireAttrs(socket.socket, "recvmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3518 def testInterruptedRecvmsgTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3519 self.checkInterruptedRecv(self.serv.recvmsg, 1024) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3520 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3521 @requireAttrs(socket.socket, "recvmsg_into") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3522 def testInterruptedRecvmsgIntoTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3523 self.checkInterruptedRecv(self.serv.recvmsg_into, [bytearray(1024)]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3524 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3525 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3526 # Require siginterrupt() in order to ensure that system calls are |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3527 # interrupted by default. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3528 @requireAttrs(signal, "siginterrupt") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3529 @unittest.skipUnless(hasattr(signal, "alarm") or hasattr(signal, "setitimer"), |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3530 "Don't have signal.alarm or signal.setitimer") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3531 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3532 class InterruptedSendTimeoutTest(InterruptedTimeoutBase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3533 ThreadSafeCleanupTestCase, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3534 SocketListeningTestMixin, TCPTestBase): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3535 # Test interrupting the interruptible send*() methods with signals |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3536 # when a timeout is set. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3537 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3538 def setUp(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3539 super().setUp() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3540 self.serv_conn = self.newSocket() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3541 self.addCleanup(self.serv_conn.close) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3542 # Use a thread to complete the connection, but wait for it to |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3543 # terminate before running the test, so that there is only one |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3544 # thread to accept the signal. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3545 cli_thread = threading.Thread(target=self.doConnect) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3546 cli_thread.start() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3547 self.cli_conn, addr = self.serv.accept() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3548 self.addCleanup(self.cli_conn.close) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3549 cli_thread.join() |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3550 self.serv_conn.settimeout(self.timeout) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3551 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3552 def doConnect(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3553 self.serv_conn.connect(self.serv_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3554 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3555 def checkInterruptedSend(self, func, *args, **kwargs): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3556 # Check that func(*args, **kwargs), run in a loop, raises |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3557 # OSError with an errno of EINTR when interrupted by a |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3558 # signal. |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3559 with self.assertRaises(OSError) as cm: |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3560 while True: |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3561 self.setAlarm(self.alarm_time) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3562 func(*args, **kwargs) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3563 self.assertNotIsInstance(cm.exception, socket.timeout) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3564 self.assertEqual(cm.exception.errno, errno.EINTR) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3565 |
|
72400
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
3566 # Issue #12958: The following tests have problems on Mac OS X |
|
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
3567 @support.anticipate_failure(sys.platform == "darwin") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3568 def testInterruptedSendTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3569 self.checkInterruptedSend(self.serv_conn.send, b"a"*512) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3570 |
|
72400
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
3571 @support.anticipate_failure(sys.platform == "darwin") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3572 def testInterruptedSendtoTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3573 # Passing an actual address here as Python's wrapper for |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3574 # sendto() doesn't allow passing a zero-length one; POSIX |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3575 # requires that the address is ignored since the socket is |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3576 # connection-mode, however. |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3577 self.checkInterruptedSend(self.serv_conn.sendto, b"a"*512, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3578 self.serv_addr) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3579 |
|
72400
a4e4facad164
Close issue 12958 by flagging expected failures in test_socket on Mac OS X
Nick Coghlan <ncoghlan@gmail.com>
parents:
72034
diff
changeset
|
3580 @support.anticipate_failure(sys.platform == "darwin") |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3581 @requireAttrs(socket.socket, "sendmsg") |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3582 def testInterruptedSendmsgTimeout(self): |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3583 self.checkInterruptedSend(self.serv_conn.sendmsg, [b"a"*512]) |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3584 |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
3585 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
3586 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3587 class TCPCloserTest(ThreadedTCPSocketTest): |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3588 |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3589 def testClose(self): |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3590 conn, addr = self.serv.accept() |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3591 conn.close() |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3592 |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3593 sd = self.cli |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3594 read, write, err = select.select([sd], [], [], 1.0) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3595 self.assertEqual(read, [sd]) |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
3596 self.assertEqual(sd.recv(1), b'') |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3597 |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3598 # Calling close() many times should be safe. |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3599 conn.close() |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3600 conn.close() |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3601 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3602 def _testClose(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
3603 self.cli.connect((HOST, self.port)) |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3604 time.sleep(1.0) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
3605 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
3606 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3607 class BasicSocketPairTest(SocketPairTest): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3608 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3609 def __init__(self, methodName='runTest'): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3610 SocketPairTest.__init__(self, methodName=methodName) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3611 |
|
64754
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3612 def _check_defaults(self, sock): |
|
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3613 self.assertIsInstance(sock, socket.socket) |
|
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3614 if hasattr(socket, 'AF_UNIX'): |
|
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3615 self.assertEqual(sock.family, socket.AF_UNIX) |
|
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3616 else: |
|
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3617 self.assertEqual(sock.family, socket.AF_INET) |
|
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3618 self.assertEqual(sock.type, socket.SOCK_STREAM) |
|
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3619 self.assertEqual(sock.proto, 0) |
|
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3620 |
|
64747
534853ba8cd3
Issue #1552: socket.socketpair() now returns regular socket.socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
64593
diff
changeset
|
3621 def _testDefaults(self): |
|
64754
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3622 self._check_defaults(self.cli) |
|
64747
534853ba8cd3
Issue #1552: socket.socketpair() now returns regular socket.socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
64593
diff
changeset
|
3623 |
|
534853ba8cd3
Issue #1552: socket.socketpair() now returns regular socket.socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
64593
diff
changeset
|
3624 def testDefaults(self): |
|
64754
b81e8e3fa5bb
Make testDefaults in test.test_socket.BasicSocketPairTest more reliable.
Antoine Pitrou <solipsis@pitrou.net>
parents:
64747
diff
changeset
|
3625 self._check_defaults(self.serv) |
|
64747
534853ba8cd3
Issue #1552: socket.socketpair() now returns regular socket.socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
64593
diff
changeset
|
3626 |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3627 def testRecv(self): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3628 msg = self.serv.recv(1024) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3629 self.assertEqual(msg, MSG) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3630 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3631 def _testRecv(self): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3632 self.cli.send(MSG) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3633 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3634 def testSend(self): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3635 self.serv.send(MSG) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3636 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3637 def _testSend(self): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3638 msg = self.cli.recv(1024) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3639 self.assertEqual(msg, MSG) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
3640 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
3641 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3642 class NonBlockingTCPTests(ThreadedTCPSocketTest): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3643 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3644 def __init__(self, methodName='runTest'): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3645 ThreadedTCPSocketTest.__init__(self, methodName=methodName) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3646 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3647 def testSetBlocking(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3648 # Testing whether set blocking works |
|
81587
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
3649 self.serv.setblocking(True) |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
3650 self.assertIsNone(self.serv.gettimeout()) |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
3651 self.serv.setblocking(False) |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
3652 self.assertEqual(self.serv.gettimeout(), 0.0) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3653 start = time.time() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3654 try: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3655 self.serv.accept() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3656 except OSError: |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3657 pass |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3658 end = time.time() |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
3659 self.assertTrue((end - start) < 1.0, "Error setting non-blocking mode.") |
|
81587
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
3660 # Issue 15989 |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
3661 if _testcapi.UINT_MAX < _testcapi.ULONG_MAX: |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
3662 self.serv.setblocking(_testcapi.UINT_MAX + 1) |
|
974ace29ee2d
Issue #15989: Fix several occurrences of integer overflow
Serhiy Storchaka <storchaka@gmail.com>
parents:
79784
diff
changeset
|
3663 self.assertIsNone(self.serv.gettimeout()) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3664 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3665 def _testSetBlocking(self): |
|
17208
c8817a9bbbdd
Make socket.getservbyname test optional on socket module having that
Barry Warsaw <barry@python.org>
parents:
16519
diff
changeset
|
3666 pass |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
3667 |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3668 if hasattr(socket, "SOCK_NONBLOCK"): |
|
70612
277bbe6cae53
Issue #12196: Make test.support's requires_linux_version a decorator.
Charles-François Natali <neologix@free.fr>
parents:
70324
diff
changeset
|
3669 @support.requires_linux_version(2, 6, 28) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3670 def testInitNonBlocking(self): |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3671 # reinit server socket |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3672 self.serv.close() |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3673 self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM | |
|
65606
a30e75820b8d
Also guard other SOCK_NONBLOCK test
Antoine Pitrou <solipsis@pitrou.net>
parents:
65604
diff
changeset
|
3674 socket.SOCK_NONBLOCK) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3675 self.port = support.bind_port(self.serv) |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3676 self.serv.listen(1) |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3677 # actual testing |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3678 start = time.time() |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3679 try: |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3680 self.serv.accept() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3681 except OSError: |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3682 pass |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3683 end = time.time() |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3684 self.assertTrue((end - start) < 1.0, "Error creating with non-blocking mode.") |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3685 |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3686 def _testInitNonBlocking(self): |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3687 pass |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
3688 |
|
67382
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3689 def testInheritFlags(self): |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3690 # Issue #7995: when calling accept() on a listening socket with a |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3691 # timeout, the resulting socket should not be non-blocking. |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3692 self.serv.settimeout(10) |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3693 try: |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3694 conn, addr = self.serv.accept() |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3695 message = conn.recv(len(MSG)) |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3696 finally: |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3697 conn.close() |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3698 self.serv.settimeout(None) |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3699 |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3700 def _testInheritFlags(self): |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3701 time.sleep(0.1) |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3702 self.cli.connect((HOST, self.port)) |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3703 time.sleep(0.5) |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3704 self.cli.send(MSG) |
|
ed0259230611
Issue #7995: When calling accept() on a socket with a timeout, the returned
Antoine Pitrou <solipsis@pitrou.net>
parents:
67344
diff
changeset
|
3705 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3706 def testAccept(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3707 # Testing non-blocking accept |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3708 self.serv.setblocking(0) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3709 try: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3710 conn, addr = self.serv.accept() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3711 except OSError: |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3712 pass |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3713 else: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3714 self.fail("Error trying to do non-blocking accept.") |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3715 read, write, err = select.select([self.serv], [], []) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3716 if self.serv in read: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3717 conn, addr = self.serv.accept() |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
3718 conn.close() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3719 else: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3720 self.fail("Error trying to do accept after select.") |
|
20853
77bb2ae067c2
Correct getnameinfo refcounting and tuple parsing. Fixes #476648.
Martin v. Löwis <martin@v.loewis.de>
parents:
20733
diff
changeset
|
3721 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3722 def _testAccept(self): |
|
24318
12815d05080c
Add test for previous core dump when sending on closed socket with
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
3723 time.sleep(0.1) |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
3724 self.cli.connect((HOST, self.port)) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3725 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3726 def testConnect(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3727 # Testing non-blocking connect |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3728 conn, addr = self.serv.accept() |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
3729 conn.close() |
|
4880
9a7e9f10aed6
Test of the socket module. The following functions and methods are
Barry Warsaw <barry@python.org>
parents:
diff
changeset
|
3730 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3731 def _testConnect(self): |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
3732 self.cli.settimeout(10) |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
3733 self.cli.connect((HOST, self.port)) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3734 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3735 def testRecv(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3736 # Testing non-blocking recv |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3737 conn, addr = self.serv.accept() |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3738 conn.setblocking(0) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3739 try: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3740 msg = conn.recv(len(MSG)) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3741 except OSError: |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3742 pass |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3743 else: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3744 self.fail("Error trying to do non-blocking recv.") |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3745 read, write, err = select.select([conn], [], []) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3746 if conn in read: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3747 msg = conn.recv(len(MSG)) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
3748 conn.close() |
|
23794
1f1a6f7dd600
Lose the message on assertEqual calls -- they actually hide
Guido van Rossum <guido@python.org>
parents:
23790
diff
changeset
|
3749 self.assertEqual(msg, MSG) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3750 else: |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3751 self.fail("Error during select call to non-blocking socket.") |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3752 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3753 def _testRecv(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
3754 self.cli.connect((HOST, self.port)) |
|
24318
12815d05080c
Add test for previous core dump when sending on closed socket with
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
3755 time.sleep(0.1) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3756 self.cli.send(MSG) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3757 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
3758 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3759 class FileObjectClassTestCase(SocketConnectedTest): |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3760 """Unit tests for the object returned by socket.makefile() |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3761 |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3762 self.read_file is the io object returned by makefile() on |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3763 the client connection. You can read from this file to |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3764 get output from the server. |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3765 |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3766 self.write_file is the io object returned by makefile() on the |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3767 server connection. You can write to this file to send output |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3768 to the client. |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3769 """ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
21315
diff
changeset
|
3770 |
|
24634
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
3771 bufsize = -1 # Use default buffer size |
|
68142
be6c38d1817b
Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents:
67382
diff
changeset
|
3772 encoding = 'utf-8' |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3773 errors = 'strict' |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3774 newline = None |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3775 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3776 read_mode = 'rb' |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3777 read_msg = MSG |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3778 write_mode = 'wb' |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3779 write_msg = MSG |
|
24634
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
3780 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3781 def __init__(self, methodName='runTest'): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3782 SocketConnectedTest.__init__(self, methodName=methodName) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3783 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3784 def setUp(self): |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
3785 self.evt1, self.evt2, self.serv_finished, self.cli_finished = [ |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
3786 threading.Event() for i in range(4)] |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3787 SocketConnectedTest.setUp(self) |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3788 self.read_file = self.cli_conn.makefile( |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3789 self.read_mode, self.bufsize, |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3790 encoding = self.encoding, |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3791 errors = self.errors, |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3792 newline = self.newline) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3793 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3794 def tearDown(self): |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
3795 self.serv_finished.set() |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3796 self.read_file.close() |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3797 self.assertTrue(self.read_file.closed) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3798 self.read_file = None |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3799 SocketConnectedTest.tearDown(self) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3800 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3801 def clientSetUp(self): |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3802 SocketConnectedTest.clientSetUp(self) |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3803 self.write_file = self.serv_conn.makefile( |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3804 self.write_mode, self.bufsize, |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3805 encoding = self.encoding, |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3806 errors = self.errors, |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3807 newline = self.newline) |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
21315
diff
changeset
|
3808 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3809 def clientTearDown(self): |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
3810 self.cli_finished.set() |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3811 self.write_file.close() |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3812 self.assertTrue(self.write_file.closed) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3813 self.write_file = None |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3814 SocketConnectedTest.clientTearDown(self) |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3815 |
|
68032
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3816 def testReadAfterTimeout(self): |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3817 # Issue #7322: A file object must disallow further reads |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3818 # after a timeout has occurred. |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3819 self.cli_conn.settimeout(1) |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3820 self.read_file.read(3) |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3821 # First read raises a timeout |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3822 self.assertRaises(socket.timeout, self.read_file.read, 1) |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3823 # Second read is disallowed |
|
81039
7d69d04522e3
Replace IOError with OSError (#16715)
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80942
diff
changeset
|
3824 with self.assertRaises(OSError) as ctx: |
|
68032
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3825 self.read_file.read(1) |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3826 self.assertIn("cannot read from timed out object", str(ctx.exception)) |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3827 |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3828 def _testReadAfterTimeout(self): |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3829 self.write_file.write(self.write_msg[0:3]) |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3830 self.write_file.flush() |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3831 self.serv_finished.wait() |
|
59f9ed12f17a
Merged revisions 88622 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
67382
diff
changeset
|
3832 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3833 def testSmallRead(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3834 # Performing small file read test |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3835 first_seg = self.read_file.read(len(self.read_msg)-3) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3836 second_seg = self.read_file.read(3) |
|
23800
bf1555a92711
Remove some overly complicated ways to concatenate and repeat strings
Guido van Rossum <guido@python.org>
parents:
23799
diff
changeset
|
3837 msg = first_seg + second_seg |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3838 self.assertEqual(msg, self.read_msg) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3839 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3840 def _testSmallRead(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3841 self.write_file.write(self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3842 self.write_file.flush() |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
21315
diff
changeset
|
3843 |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3844 def testFullRead(self): |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3845 # read until EOF |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3846 msg = self.read_file.read() |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3847 self.assertEqual(msg, self.read_msg) |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3848 |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3849 def _testFullRead(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3850 self.write_file.write(self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3851 self.write_file.close() |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3852 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3853 def testUnbufferedRead(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3854 # Performing unbuffered file read test |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3855 buf = type(self.read_msg)() |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3856 while 1: |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3857 char = self.read_file.read(1) |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3858 if not char: |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3859 break |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3860 buf += char |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3861 self.assertEqual(buf, self.read_msg) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3862 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3863 def _testUnbufferedRead(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3864 self.write_file.write(self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3865 self.write_file.flush() |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
21315
diff
changeset
|
3866 |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3867 def testReadline(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
3868 # Performing file readline test |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3869 line = self.read_file.readline() |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3870 self.assertEqual(line, self.read_msg) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3871 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
3872 def _testReadline(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3873 self.write_file.write(self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3874 self.write_file.flush() |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
21315
diff
changeset
|
3875 |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3876 def testCloseAfterMakefile(self): |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3877 # The file returned by makefile should keep the socket open. |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3878 self.cli_conn.close() |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3879 # read until EOF |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3880 msg = self.read_file.read() |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3881 self.assertEqual(msg, self.read_msg) |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3882 |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3883 def _testCloseAfterMakefile(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3884 self.write_file.write(self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3885 self.write_file.flush() |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3886 |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3887 def testMakefileAfterMakefileClose(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3888 self.read_file.close() |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3889 msg = self.cli_conn.recv(len(MSG)) |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3890 if isinstance(self.read_msg, str): |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3891 msg = msg.decode() |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3892 self.assertEqual(msg, self.read_msg) |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3893 |
|
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3894 def _testMakefileAfterMakefileClose(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3895 self.write_file.write(self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3896 self.write_file.flush() |
|
42434
c35140559f87
Make sure socket.close() doesn't interfere with socket.makefile().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42169
diff
changeset
|
3897 |
|
31833
a910b822b12c
SF bug 924242: socket._fileobject._getclosed() returns wrong value
Tim Peters <tim.peters@gmail.com>
parents:
31503
diff
changeset
|
3898 def testClosedAttr(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3899 self.assertTrue(not self.read_file.closed) |
|
31833
a910b822b12c
SF bug 924242: socket._fileobject._getclosed() returns wrong value
Tim Peters <tim.peters@gmail.com>
parents:
31503
diff
changeset
|
3900 |
|
a910b822b12c
SF bug 924242: socket._fileobject._getclosed() returns wrong value
Tim Peters <tim.peters@gmail.com>
parents:
31503
diff
changeset
|
3901 def _testClosedAttr(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3902 self.assertTrue(not self.write_file.closed) |
|
31833
a910b822b12c
SF bug 924242: socket._fileobject._getclosed() returns wrong value
Tim Peters <tim.peters@gmail.com>
parents:
31503
diff
changeset
|
3903 |
|
49782
5ffd67df8c9f
Follow-up of r67300: correct a failure in socket.makefile().
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
48623
diff
changeset
|
3904 def testAttributes(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3905 self.assertEqual(self.read_file.mode, self.read_mode) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3906 self.assertEqual(self.read_file.name, self.cli_conn.fileno()) |
|
49782
5ffd67df8c9f
Follow-up of r67300: correct a failure in socket.makefile().
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
48623
diff
changeset
|
3907 |
|
5ffd67df8c9f
Follow-up of r67300: correct a failure in socket.makefile().
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
48623
diff
changeset
|
3908 def _testAttributes(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3909 self.assertEqual(self.write_file.mode, self.write_mode) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3910 self.assertEqual(self.write_file.name, self.serv_conn.fileno()) |
|
49782
5ffd67df8c9f
Follow-up of r67300: correct a failure in socket.makefile().
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
48623
diff
changeset
|
3911 |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
3912 def testRealClose(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3913 self.read_file.close() |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
3914 self.assertRaises(ValueError, self.read_file.fileno) |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
3915 self.cli_conn.close() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3916 self.assertRaises(OSError, self.cli_conn.getsockname) |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
3917 |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
3918 def _testRealClose(self): |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
3919 pass |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
3920 |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
3921 |
|
58146
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3922 class FileObjectInterruptedTestCase(unittest.TestCase): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3923 """Test that the file object correctly handles EINTR internally.""" |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3924 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3925 class MockSocket(object): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3926 def __init__(self, recv_funcs=()): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3927 # A generator that returns callables that we'll call for each |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3928 # call to recv(). |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3929 self._recv_step = iter(recv_funcs) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3930 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3931 def recv_into(self, buffer): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3932 data = next(self._recv_step)() |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3933 assert len(buffer) >= len(data) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3934 buffer[:len(data)] = data |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3935 return len(data) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3936 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3937 def _decref_socketios(self): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3938 pass |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3939 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3940 def _textiowrap_for_test(self, buffering=-1): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3941 raw = socket.SocketIO(self, "r") |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3942 if buffering < 0: |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3943 buffering = io.DEFAULT_BUFFER_SIZE |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3944 if buffering == 0: |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3945 return raw |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3946 buffer = io.BufferedReader(raw, buffering) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3947 text = io.TextIOWrapper(buffer, None, None) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3948 text.mode = "rb" |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3949 return text |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3950 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3951 @staticmethod |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3952 def _raise_eintr(): |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
3953 raise OSError(errno.EINTR, "interrupted") |
|
58146
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3954 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3955 def _textiowrap_mock_socket(self, mock, buffering=-1): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3956 raw = socket.SocketIO(mock, "r") |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3957 if buffering < 0: |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3958 buffering = io.DEFAULT_BUFFER_SIZE |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3959 if buffering == 0: |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3960 return raw |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3961 buffer = io.BufferedReader(raw, buffering) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3962 text = io.TextIOWrapper(buffer, None, None) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3963 text.mode = "rb" |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3964 return text |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3965 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3966 def _test_readline(self, size=-1, buffering=-1): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3967 mock_sock = self.MockSocket(recv_funcs=[ |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3968 lambda : b"This is the first line\nAnd the sec", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3969 self._raise_eintr, |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3970 lambda : b"ond line is here\n", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3971 lambda : b"", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3972 lambda : b"", # XXX(gps): io library does an extra EOF read |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3973 ]) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3974 fo = mock_sock._textiowrap_for_test(buffering=buffering) |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66279
diff
changeset
|
3975 self.assertEqual(fo.readline(size), "This is the first line\n") |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66279
diff
changeset
|
3976 self.assertEqual(fo.readline(size), "And the second line is here\n") |
|
58146
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3977 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3978 def _test_read(self, size=-1, buffering=-1): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3979 mock_sock = self.MockSocket(recv_funcs=[ |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3980 lambda : b"This is the first line\nAnd the sec", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3981 self._raise_eintr, |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3982 lambda : b"ond line is here\n", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3983 lambda : b"", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3984 lambda : b"", # XXX(gps): io library does an extra EOF read |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3985 ]) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3986 expecting = (b"This is the first line\n" |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3987 b"And the second line is here\n") |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3988 fo = mock_sock._textiowrap_for_test(buffering=buffering) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3989 if buffering == 0: |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3990 data = b'' |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3991 else: |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3992 data = '' |
|
68142
be6c38d1817b
Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents:
67382
diff
changeset
|
3993 expecting = expecting.decode('utf-8') |
|
58146
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3994 while len(data) != len(expecting): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3995 part = fo.read(size) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3996 if not part: |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3997 break |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
3998 data += part |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66279
diff
changeset
|
3999 self.assertEqual(data, expecting) |
|
58146
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4000 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4001 def test_default(self): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4002 self._test_readline() |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4003 self._test_readline(size=100) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4004 self._test_read() |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4005 self._test_read(size=100) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4006 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4007 def test_with_1k_buffer(self): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4008 self._test_readline(buffering=1024) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4009 self._test_readline(size=100, buffering=1024) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4010 self._test_read(buffering=1024) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4011 self._test_read(size=100, buffering=1024) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4012 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4013 def _test_readline_no_buffer(self, size=-1): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4014 mock_sock = self.MockSocket(recv_funcs=[ |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4015 lambda : b"a", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4016 lambda : b"\n", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4017 lambda : b"B", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4018 self._raise_eintr, |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4019 lambda : b"b", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4020 lambda : b"", |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4021 ]) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4022 fo = mock_sock._textiowrap_for_test(buffering=0) |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66279
diff
changeset
|
4023 self.assertEqual(fo.readline(size), b"a\n") |
|
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66279
diff
changeset
|
4024 self.assertEqual(fo.readline(size), b"Bb") |
|
58146
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4025 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4026 def test_no_buffer(self): |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4027 self._test_readline_no_buffer() |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4028 self._test_readline_no_buffer(size=4) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4029 self._test_read(buffering=0) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4030 self._test_read(size=100, buffering=0) |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4031 |
|
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4032 |
|
24634
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4033 class UnbufferedFileObjectClassTestCase(FileObjectClassTestCase): |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4034 |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4035 """Repeat the tests from FileObjectClassTestCase with bufsize==0. |
|
24674
3269bdd65988
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
24655
diff
changeset
|
4036 |
|
24634
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4037 In this case (and in this case only), it should be possible to |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4038 create a file object, read a line from it, create another file |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4039 object, read another line from it, without loss of data in the |
|
47318
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47266
diff
changeset
|
4040 first file object's buffer. Note that http.client relies on this |
|
24634
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4041 when reading multiple requests from the same socket.""" |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4042 |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4043 bufsize = 0 # Use unbuffered mode |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4044 |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4045 def testUnbufferedReadline(self): |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4046 # Read a line, create a new file object, read another line with it |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4047 line = self.read_file.readline() # first line |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4048 self.assertEqual(line, b"A. " + self.write_msg) # first line |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4049 self.read_file = self.cli_conn.makefile('rb', 0) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4050 line = self.read_file.readline() # second line |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4051 self.assertEqual(line, b"B. " + self.write_msg) # second line |
|
24634
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4052 |
|
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4053 def _testUnbufferedReadline(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4054 self.write_file.write(b"A. " + self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4055 self.write_file.write(b"B. " + self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4056 self.write_file.flush() |
|
24634
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4057 |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4058 def testMakefileClose(self): |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4059 # The file returned by makefile should keep the socket open... |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4060 self.cli_conn.close() |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4061 msg = self.cli_conn.recv(1024) |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4062 self.assertEqual(msg, self.read_msg) |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4063 # ...until the file is itself closed |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4064 self.read_file.close() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4065 self.assertRaises(OSError, self.cli_conn.recv, 1024) |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4066 |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4067 def _testMakefileClose(self): |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4068 self.write_file.write(self.write_msg) |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4069 self.write_file.flush() |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4070 |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4071 def testMakefileCloseSocketDestroy(self): |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4072 refcount_before = sys.getrefcount(self.cli_conn) |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4073 self.read_file.close() |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4074 refcount_after = sys.getrefcount(self.cli_conn) |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4075 self.assertEqual(refcount_before - 1, refcount_after) |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4076 |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4077 def _testMakefileCloseSocketDestroy(self): |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4078 pass |
|
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4079 |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4080 # Non-blocking ops |
|
65258
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4081 # NOTE: to set `read_file` as non-blocking, we must call |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4082 # `cli_conn.setblocking` and vice-versa (see setUp / clientSetUp). |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4083 |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4084 def testSmallReadNonBlocking(self): |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4085 self.cli_conn.setblocking(False) |
|
65258
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4086 self.assertEqual(self.read_file.readinto(bytearray(10)), None) |
|
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4087 self.assertEqual(self.read_file.read(len(self.read_msg) - 3), None) |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4088 self.evt1.set() |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4089 self.evt2.wait(1.0) |
|
65258
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4090 first_seg = self.read_file.read(len(self.read_msg) - 3) |
|
69122
68a319ef70fc
Issue #11749: try to fix transient test_socket failure
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
4091 if first_seg is None: |
|
68a319ef70fc
Issue #11749: try to fix transient test_socket failure
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
4092 # Data not arrived (can happen under Windows), wait a bit |
|
68a319ef70fc
Issue #11749: try to fix transient test_socket failure
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
4093 time.sleep(0.5) |
|
68a319ef70fc
Issue #11749: try to fix transient test_socket failure
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
4094 first_seg = self.read_file.read(len(self.read_msg) - 3) |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4095 buf = bytearray(10) |
|
65258
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4096 n = self.read_file.readinto(buf) |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4097 self.assertEqual(n, 3) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4098 msg = first_seg + buf[:n] |
|
65258
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4099 self.assertEqual(msg, self.read_msg) |
|
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4100 self.assertEqual(self.read_file.readinto(bytearray(16)), None) |
|
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4101 self.assertEqual(self.read_file.read(1), None) |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4102 |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4103 def _testSmallReadNonBlocking(self): |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4104 self.evt1.wait(1.0) |
|
65258
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4105 self.write_file.write(self.write_msg) |
|
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4106 self.write_file.flush() |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4107 self.evt2.set() |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4108 # Avoid cloding the socket before the server test has finished, |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4109 # otherwise system recv() will return 0 instead of EWOULDBLOCK. |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4110 self.serv_finished.wait(5.0) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4111 |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4112 def testWriteNonBlocking(self): |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4113 self.cli_finished.wait(5.0) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4114 # The client thread can't skip directly - the SkipTest exception |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4115 # would appear as a failure. |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4116 if self.serv_skipped: |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4117 self.skipTest(self.serv_skipped) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4118 |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4119 def _testWriteNonBlocking(self): |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4120 self.serv_skipped = None |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4121 self.serv_conn.setblocking(False) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4122 # Try to saturate the socket buffer pipe with repeated large writes. |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4123 BIG = b"x" * (1024 ** 2) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4124 LIMIT = 10 |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4125 # The first write() succeeds since a chunk of data can be buffered |
|
65258
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4126 n = self.write_file.write(BIG) |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4127 self.assertGreater(n, 0) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4128 for i in range(LIMIT): |
|
65258
1875bfed5689
Issue #10041: The signature of optional arguments in socket.makefile()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64959
diff
changeset
|
4129 n = self.write_file.write(BIG) |
|
64817
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4130 if n is None: |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4131 # Succeeded |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4132 break |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4133 self.assertGreater(n, 0) |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4134 else: |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4135 # Let us know that this test didn't manage to establish |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4136 # the expected conditions. This is not a failure in itself but, |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4137 # if it happens repeatedly, the test should be fixed. |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4138 self.serv_skipped = "failed to saturate the socket buffer" |
|
f3dcb314c3e3
Issue #9854: SocketIO objects now observe the RawIOBase interface in
Antoine Pitrou <solipsis@pitrou.net>
parents:
64754
diff
changeset
|
4139 |
|
50741
5f4c2de95091
Fixes issue #3826 and #4791:
Gregory P. Smith <greg@mad-scientist.com>
parents:
49800
diff
changeset
|
4140 |
|
24655
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4141 class LineBufferedFileObjectClassTestCase(FileObjectClassTestCase): |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4142 |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4143 bufsize = 1 # Default-buffered for reading; line-buffered for writing |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4144 |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4145 |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4146 class SmallBufferedFileObjectClassTestCase(FileObjectClassTestCase): |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4147 |
|
18ca4e783f98
Replace docstrings on test functions witrh comments -- then unittest
Guido van Rossum <guido@python.org>
parents:
24648
diff
changeset
|
4148 bufsize = 2 # Exercise the buffering code |
|
24634
778093533a46
"Unbuffered" mode of class _fileobject wasn't actually unbuffered,
Guido van Rossum <guido@python.org>
parents:
24485
diff
changeset
|
4149 |
|
40737
6ebad2a6b990
Merged revisions 53451-53537 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40644
diff
changeset
|
4150 |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4151 class UnicodeReadFileObjectClassTestCase(FileObjectClassTestCase): |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4152 """Tests for socket.makefile() in text mode (rather than binary)""" |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4153 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4154 read_mode = 'r' |
|
68142
be6c38d1817b
Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents:
67382
diff
changeset
|
4155 read_msg = MSG.decode('utf-8') |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4156 write_mode = 'wb' |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4157 write_msg = MSG |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4158 newline = '' |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4159 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4160 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4161 class UnicodeWriteFileObjectClassTestCase(FileObjectClassTestCase): |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4162 """Tests for socket.makefile() in text mode (rather than binary)""" |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4163 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4164 read_mode = 'rb' |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4165 read_msg = MSG |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4166 write_mode = 'w' |
|
68142
be6c38d1817b
Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents:
67382
diff
changeset
|
4167 write_msg = MSG.decode('utf-8') |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4168 newline = '' |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4169 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4170 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4171 class UnicodeReadWriteFileObjectClassTestCase(FileObjectClassTestCase): |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4172 """Tests for socket.makefile() in text mode (rather than binary)""" |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4173 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4174 read_mode = 'r' |
|
68142
be6c38d1817b
Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents:
67382
diff
changeset
|
4175 read_msg = MSG.decode('utf-8') |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4176 write_mode = 'w' |
|
68142
be6c38d1817b
Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents:
67382
diff
changeset
|
4177 write_msg = MSG.decode('utf-8') |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4178 newline = '' |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4179 |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4180 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4181 class NetworkConnectionTest(object): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4182 """Prove network connection.""" |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4183 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4184 def clientSetUp(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
4185 # We're inherited below by BasicTCPTest2, which also inherits |
|
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
4186 # BasicTCPTest, which defines self.port referenced below. |
|
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
4187 self.cli = socket.create_connection((HOST, self.port)) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4188 self.serv_conn = self.cli |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4189 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4190 class BasicTCPTest2(NetworkConnectionTest, BasicTCPTest): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4191 """Tests that NetworkConnection does not break existing TCP functionality. |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4192 """ |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4193 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4194 class NetworkConnectionNoServer(unittest.TestCase): |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4195 |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4196 class MockSocket(socket.socket): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4197 def connect(self, *args): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4198 raise socket.timeout('timed out') |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4199 |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4200 @contextlib.contextmanager |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4201 def mocked_socket_module(self): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4202 """Return a socket which times out on connect""" |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4203 old_socket = socket.socket |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4204 socket.socket = self.MockSocket |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4205 try: |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4206 yield |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4207 finally: |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4208 socket.socket = old_socket |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4209 |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4210 def test_connect(self): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
4211 port = support.find_unused_port() |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4212 cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4213 self.addCleanup(cli.close) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4214 with self.assertRaises(OSError) as cm: |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4215 cli.connect((HOST, port)) |
|
64534
b2f7cf9c6776
Issue #9792: In case of connection failure, socket.create_connection()
Antoine Pitrou <solipsis@pitrou.net>
parents:
64442
diff
changeset
|
4216 self.assertEqual(cm.exception.errno, errno.ECONNREFUSED) |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4217 |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4218 def test_create_connection(self): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4219 # Issue #9792: errors raised by create_connection() should have |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4220 # a proper errno attribute. |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4221 port = support.find_unused_port() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4222 with self.assertRaises(OSError) as cm: |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4223 socket.create_connection((HOST, port)) |
|
79784
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4224 |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4225 # Issue #16257: create_connection() calls getaddrinfo() against |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4226 # 'localhost'. This may result in an IPV6 addr being returned |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4227 # as well as an IPV4 one: |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4228 # >>> socket.getaddrinfo('localhost', port, 0, SOCK_STREAM) |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4229 # >>> [(2, 2, 0, '', ('127.0.0.1', 41230)), |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4230 # (26, 2, 0, '', ('::1', 41230, 0, 0))] |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4231 # |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4232 # create_connection() enumerates through all the addresses returned |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4233 # and if it doesn't successfully bind to any of them, it propagates |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4234 # the last exception it encountered. |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4235 # |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4236 # On Solaris, ENETUNREACH is returned in this circumstance instead |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4237 # of ECONNREFUSED. So, if that errno exists, add it to our list of |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4238 # expected errnos. |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4239 expected_errnos = [ errno.ECONNREFUSED, ] |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4240 if hasattr(errno, 'ENETUNREACH'): |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4241 expected_errnos.append(errno.ENETUNREACH) |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4242 |
|
b5fa9d8603b6
Issue #16257: make test_create_connection() handle ENETUNREACH.
Trent Nelson <trent@trent.me>
parents:
79026
diff
changeset
|
4243 self.assertIn(cm.exception.errno, expected_errnos) |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4244 |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4245 def test_create_connection_timeout(self): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4246 # Issue #9792: create_connection() should not recast timeout errors |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4247 # as generic socket errors. |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4248 with self.mocked_socket_module(): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4249 with self.assertRaises(socket.timeout): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4250 socket.create_connection((HOST, 1234)) |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64060
diff
changeset
|
4251 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4252 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
4253 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4254 class NetworkConnectionAttributesTest(SocketTCPTest, ThreadableTest): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4255 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4256 def __init__(self, methodName='runTest'): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4257 SocketTCPTest.__init__(self, methodName=methodName) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4258 ThreadableTest.__init__(self) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4259 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4260 def clientSetUp(self): |
|
58114
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56367
diff
changeset
|
4261 self.source_port = support.find_unused_port() |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4262 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4263 def clientTearDown(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4264 self.cli.close() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4265 self.cli = None |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4266 ThreadableTest.clientTearDown(self) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4267 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4268 def _justAccept(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4269 conn, addr = self.serv.accept() |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4270 conn.close() |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4271 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4272 testFamily = _justAccept |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4273 def _testFamily(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
4274 self.cli = socket.create_connection((HOST, self.port), timeout=30) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4275 self.addCleanup(self.cli.close) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4276 self.assertEqual(self.cli.family, 2) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4277 |
|
58136
ecc8a45894c9
Merged revisions 77286 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58114
diff
changeset
|
4278 testSourceAddress = _justAccept |
|
ecc8a45894c9
Merged revisions 77286 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58114
diff
changeset
|
4279 def _testSourceAddress(self): |
|
58114
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56367
diff
changeset
|
4280 self.cli = socket.create_connection((HOST, self.port), timeout=30, |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56367
diff
changeset
|
4281 source_address=('', self.source_port)) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4282 self.addCleanup(self.cli.close) |
|
58114
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56367
diff
changeset
|
4283 self.assertEqual(self.cli.getsockname()[1], self.source_port) |
|
58136
ecc8a45894c9
Merged revisions 77286 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58114
diff
changeset
|
4284 # The port number being used is sufficient to show that the bind() |
|
ecc8a45894c9
Merged revisions 77286 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58114
diff
changeset
|
4285 # call happened. |
|
58114
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56367
diff
changeset
|
4286 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4287 testTimeoutDefault = _justAccept |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4288 def _testTimeoutDefault(self): |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4289 # passing no explicit timeout uses socket's global default |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
4290 self.assertTrue(socket.getdefaulttimeout() is None) |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4291 socket.setdefaulttimeout(42) |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4292 try: |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4293 self.cli = socket.create_connection((HOST, self.port)) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4294 self.addCleanup(self.cli.close) |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4295 finally: |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4296 socket.setdefaulttimeout(None) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65926
diff
changeset
|
4297 self.assertEqual(self.cli.gettimeout(), 42) |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4298 |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4299 testTimeoutNone = _justAccept |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4300 def _testTimeoutNone(self): |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4301 # None timeout means the same as sock.settimeout(None) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
4302 self.assertTrue(socket.getdefaulttimeout() is None) |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4303 socket.setdefaulttimeout(30) |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4304 try: |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4305 self.cli = socket.create_connection((HOST, self.port), timeout=None) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4306 self.addCleanup(self.cli.close) |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4307 finally: |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4308 socket.setdefaulttimeout(None) |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
4309 self.assertEqual(self.cli.gettimeout(), None) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4310 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4311 testTimeoutValueNamed = _justAccept |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4312 def _testTimeoutValueNamed(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
4313 self.cli = socket.create_connection((HOST, self.port), timeout=30) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4314 self.assertEqual(self.cli.gettimeout(), 30) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4315 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4316 testTimeoutValueNonamed = _justAccept |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4317 def _testTimeoutValueNonamed(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
4318 self.cli = socket.create_connection((HOST, self.port), 30) |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4319 self.addCleanup(self.cli.close) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4320 self.assertEqual(self.cli.gettimeout(), 30) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4321 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
4322 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4323 class NetworkConnectionBehaviourTest(SocketTCPTest, ThreadableTest): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4324 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4325 def __init__(self, methodName='runTest'): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4326 SocketTCPTest.__init__(self, methodName=methodName) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4327 ThreadableTest.__init__(self) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4328 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4329 def clientSetUp(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4330 pass |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4331 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4332 def clientTearDown(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4333 self.cli.close() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4334 self.cli = None |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4335 ThreadableTest.clientTearDown(self) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4336 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4337 def testInsideTimeout(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4338 conn, addr = self.serv.accept() |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4339 self.addCleanup(conn.close) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4340 time.sleep(3) |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4341 conn.send(b"done!") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4342 testOutsideTimeout = testInsideTimeout |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4343 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4344 def _testInsideTimeout(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
4345 self.cli = sock = socket.create_connection((HOST, self.port)) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4346 data = sock.recv(5) |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4347 self.assertEqual(data, b"done!") |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4348 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4349 def _testOutsideTimeout(self): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46262
diff
changeset
|
4350 self.cli = sock = socket.create_connection((HOST, self.port), timeout=1) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
4351 self.assertRaises(socket.timeout, lambda: sock.recv(5)) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4352 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4353 |
|
29662
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4354 class TCPTimeoutTest(SocketTCPTest): |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4355 |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4356 def testTCPTimeout(self): |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4357 def raise_timeout(*args, **kwargs): |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4358 self.serv.settimeout(1.0) |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4359 self.serv.accept() |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
4360 self.assertRaises(socket.timeout, raise_timeout, |
|
29662
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4361 "Error generating a timeout exception (TCP)") |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4362 |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4363 def testTimeoutZero(self): |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4364 ok = False |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4365 try: |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4366 self.serv.settimeout(0.0) |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4367 foo = self.serv.accept() |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4368 except socket.timeout: |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4369 self.fail("caught timeout instead of error (TCP)") |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4370 except OSError: |
|
29662
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4371 ok = True |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4372 except: |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4373 self.fail("caught unexpected exception (TCP)") |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4374 if not ok: |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4375 self.fail("accept() returned success when we did not expect it") |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4376 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4377 def testInterruptedTimeout(self): |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4378 # XXX I don't know how to do this test on MSWindows or any other |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4379 # plaform that doesn't support signal.alarm() or os.kill(), though |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4380 # the bug should have existed on all platforms. |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4381 if not hasattr(signal, "alarm"): |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4382 return # can only test on *nix |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4383 self.serv.settimeout(5.0) # must be longer than alarm |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4384 class Alarm(Exception): |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4385 pass |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4386 def alarm_handler(signal, frame): |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4387 raise Alarm |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4388 old_alarm = signal.signal(signal.SIGALRM, alarm_handler) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4389 try: |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4390 signal.alarm(2) # POSIX allows alarm to be up to 1 second early |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4391 try: |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4392 foo = self.serv.accept() |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4393 except socket.timeout: |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4394 self.fail("caught timeout instead of Alarm") |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4395 except Alarm: |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4396 pass |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4397 except: |
|
46161
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
4398 self.fail("caught other exception instead of Alarm:" |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
4399 " %s(%s):\n%s" % |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
4400 (sys.exc_info()[:2] + (traceback.format_exc(),))) |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4401 else: |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4402 self.fail("nothing caught") |
|
46161
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
4403 finally: |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
4404 signal.alarm(0) # shut off alarm |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4405 except Alarm: |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4406 self.fail("got Alarm in wrong place") |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4407 finally: |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4408 # no alarm can be pending. Safe to restore old handler. |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4409 signal.signal(signal.SIGALRM, old_alarm) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4410 |
|
73612
b410bcd300a1
#11112: Fix typo in a base class in test_socket.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
72586
diff
changeset
|
4411 class UDPTimeoutTest(SocketUDPTest): |
|
29662
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4412 |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4413 def testUDPTimeout(self): |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4414 def raise_timeout(*args, **kwargs): |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4415 self.serv.settimeout(1.0) |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4416 self.serv.recv(1024) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51579
diff
changeset
|
4417 self.assertRaises(socket.timeout, raise_timeout, |
|
29662
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4418 "Error generating a timeout exception (UDP)") |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4419 |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4420 def testTimeoutZero(self): |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4421 ok = False |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4422 try: |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4423 self.serv.settimeout(0.0) |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4424 foo = self.serv.recv(1024) |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4425 except socket.timeout: |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4426 self.fail("caught timeout instead of error (UDP)") |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4427 except OSError: |
|
29662
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4428 ok = True |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4429 except: |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4430 self.fail("caught unexpected exception (UDP)") |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4431 if not ok: |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4432 self.fail("recv() returned success when we did not expect it") |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4433 |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4434 class TestExceptions(unittest.TestCase): |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4435 |
|
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4436 def testExceptionTree(self): |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4437 self.assertTrue(issubclass(OSError, Exception)) |
|
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4438 self.assertTrue(issubclass(socket.herror, OSError)) |
|
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4439 self.assertTrue(issubclass(socket.gaierror, OSError)) |
|
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4440 self.assertTrue(issubclass(socket.timeout, OSError)) |
|
29662
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4441 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4442 class TestLinuxAbstractNamespace(unittest.TestCase): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4443 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4444 UNIX_PATH_MAX = 108 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4445 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4446 def testLinuxAbstractNamespace(self): |
| 42596 | 4447 address = b"\x00python-test-hello\x00\xff" |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4448 with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s1: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4449 s1.bind(address) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4450 s1.listen(1) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4451 with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s2: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4452 s2.connect(s1.getsockname()) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4453 with s1.accept()[0] as s3: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4454 self.assertEqual(s1.getsockname(), address) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4455 self.assertEqual(s2.getpeername(), address) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4456 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4457 def testMaxName(self): |
| 42596 | 4458 address = b"\x00" + b"h" * (self.UNIX_PATH_MAX - 1) |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4459 with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4460 s.bind(address) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4461 self.assertEqual(s.getsockname(), address) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4462 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4463 def testNameOverflow(self): |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4464 address = "\x00" + "h" * self.UNIX_PATH_MAX |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4465 with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s: |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4466 self.assertRaises(OSError, s.bind, address) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4467 |
|
73998
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4468 def testStrName(self): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4469 # Check that an abstract name can be passed as a string. |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4470 s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4471 try: |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4472 s.bind("\x00python\x00test\x00") |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4473 self.assertEqual(s.getsockname(), b"\x00python\x00test\x00") |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4474 finally: |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4475 s.close() |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4476 |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4477 class TestUnixDomain(unittest.TestCase): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4478 |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4479 def setUp(self): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4480 self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4481 |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4482 def tearDown(self): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4483 self.sock.close() |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4484 |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4485 def encoded(self, path): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4486 # Return the given path encoded in the file system encoding, |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4487 # or skip the test if this is not possible. |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4488 try: |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4489 return os.fsencode(path) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4490 except UnicodeEncodeError: |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4491 self.skipTest( |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4492 "Pathname {0!a} cannot be represented in file " |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4493 "system encoding {1!r}".format( |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4494 path, sys.getfilesystemencoding())) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4495 |
|
73999
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4496 def bind(self, sock, path): |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4497 # Bind the socket |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4498 try: |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4499 sock.bind(path) |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4500 except OSError as e: |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4501 if str(e) == "AF_UNIX path too long": |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4502 self.skipTest( |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4503 "Pathname {0!a} is too long to serve as a AF_UNIX path" |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4504 .format(path)) |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4505 else: |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4506 raise |
|
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4507 |
|
73998
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4508 def testStrAddr(self): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4509 # Test binding to and retrieving a normal string pathname. |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4510 path = os.path.abspath(support.TESTFN) |
|
73999
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4511 self.bind(self.sock, path) |
|
73998
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4512 self.addCleanup(support.unlink, path) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4513 self.assertEqual(self.sock.getsockname(), path) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4514 |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4515 def testBytesAddr(self): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4516 # Test binding to a bytes pathname. |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4517 path = os.path.abspath(support.TESTFN) |
|
73999
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4518 self.bind(self.sock, self.encoded(path)) |
|
73998
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4519 self.addCleanup(support.unlink, path) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4520 self.assertEqual(self.sock.getsockname(), path) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4521 |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4522 def testSurrogateescapeBind(self): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4523 # Test binding to a valid non-ASCII pathname, with the |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4524 # non-ASCII bytes supplied using surrogateescape encoding. |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4525 path = os.path.abspath(support.TESTFN_UNICODE) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4526 b = self.encoded(path) |
|
73999
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4527 self.bind(self.sock, b.decode("ascii", "surrogateescape")) |
|
73998
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4528 self.addCleanup(support.unlink, path) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4529 self.assertEqual(self.sock.getsockname(), path) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4530 |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4531 def testUnencodableAddr(self): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4532 # Test binding to a pathname that cannot be encoded in the |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4533 # file system encoding. |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4534 if support.TESTFN_UNENCODABLE is None: |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4535 self.skipTest("No unencodable filename available") |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4536 path = os.path.abspath(support.TESTFN_UNENCODABLE) |
|
73999
fb887a9ce2c9
Skip test if the path is too long for a AF_UNIX socket
Antoine Pitrou <solipsis@pitrou.net>
parents:
73998
diff
changeset
|
4537 self.bind(self.sock, path) |
|
73998
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4538 self.addCleanup(support.unlink, path) |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4539 self.assertEqual(self.sock.getsockname(), path) |
|
29662
1308d7ec9953
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29087
diff
changeset
|
4540 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59677
diff
changeset
|
4541 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4542 class BufferIOTest(SocketConnectedTest): |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4543 """ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4544 Test the buffer versions of socket.recv() and socket.send(). |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4545 """ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4546 def __init__(self, methodName='runTest'): |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4547 SocketConnectedTest.__init__(self, methodName=methodName) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4548 |
|
59677
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4549 def testRecvIntoArray(self): |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4550 buf = bytearray(1024) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4551 nbytes = self.cli_conn.recv_into(buf) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4552 self.assertEqual(nbytes, len(MSG)) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4553 msg = buf[:len(MSG)] |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4554 self.assertEqual(msg, MSG) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4555 |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4556 def _testRecvIntoArray(self): |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4557 buf = bytes(MSG) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4558 self.serv_conn.send(buf) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4559 |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4560 def testRecvIntoBytearray(self): |
|
48623
bf50085fbcd3
#2538: bytes objects can only provide read-only buffers
Antoine Pitrou <solipsis@pitrou.net>
parents:
47615
diff
changeset
|
4561 buf = bytearray(1024) |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
4562 nbytes = self.cli_conn.recv_into(buf) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4563 self.assertEqual(nbytes, len(MSG)) |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4564 msg = buf[:len(MSG)] |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4565 self.assertEqual(msg, MSG) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4566 |
|
59677
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4567 _testRecvIntoBytearray = _testRecvIntoArray |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4568 |
|
59677
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4569 def testRecvIntoMemoryview(self): |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4570 buf = bytearray(1024) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4571 nbytes = self.cli_conn.recv_into(memoryview(buf)) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4572 self.assertEqual(nbytes, len(MSG)) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4573 msg = buf[:len(MSG)] |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4574 self.assertEqual(msg, MSG) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4575 |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4576 _testRecvIntoMemoryview = _testRecvIntoArray |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4577 |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4578 def testRecvFromIntoArray(self): |
|
48623
bf50085fbcd3
#2538: bytes objects can only provide read-only buffers
Antoine Pitrou <solipsis@pitrou.net>
parents:
47615
diff
changeset
|
4579 buf = bytearray(1024) |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
4580 nbytes, addr = self.cli_conn.recvfrom_into(buf) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4581 self.assertEqual(nbytes, len(MSG)) |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4582 msg = buf[:len(MSG)] |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4583 self.assertEqual(msg, MSG) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4584 |
|
59677
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4585 def _testRecvFromIntoArray(self): |
|
41770
651fa2c9c2ab
Make test_socket pass. There was an unchecked error when a Unicode
Guido van Rossum <guido@python.org>
parents:
41554
diff
changeset
|
4586 buf = bytes(MSG) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4587 self.serv_conn.send(buf) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
4588 |
|
59677
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4589 def testRecvFromIntoBytearray(self): |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4590 buf = bytearray(1024) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4591 nbytes, addr = self.cli_conn.recvfrom_into(buf) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4592 self.assertEqual(nbytes, len(MSG)) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4593 msg = buf[:len(MSG)] |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4594 self.assertEqual(msg, MSG) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4595 |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4596 _testRecvFromIntoBytearray = _testRecvFromIntoArray |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4597 |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4598 def testRecvFromIntoMemoryview(self): |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4599 buf = bytearray(1024) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4600 nbytes, addr = self.cli_conn.recvfrom_into(memoryview(buf)) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4601 self.assertEqual(nbytes, len(MSG)) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4602 msg = buf[:len(MSG)] |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4603 self.assertEqual(msg, MSG) |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4604 |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4605 _testRecvFromIntoMemoryview = _testRecvFromIntoArray |
|
d62ca1eaccb9
NOTE: just porting tests here.
Antoine Pitrou <solipsis@pitrou.net>
parents:
59522
diff
changeset
|
4606 |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4607 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4608 TIPC_STYPE = 2000 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4609 TIPC_LOWER = 200 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4610 TIPC_UPPER = 210 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4611 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4612 def isTipcAvailable(): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4613 """Check if the TIPC module is loaded |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4614 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4615 The TIPC module is not loaded automatically on Ubuntu and probably |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4616 other Linux distros. |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4617 """ |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4618 if not hasattr(socket, "AF_TIPC"): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4619 return False |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4620 if not os.path.isfile("/proc/modules"): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4621 return False |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4622 with open("/proc/modules") as f: |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4623 for line in f: |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4624 if line.startswith("tipc "): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4625 return True |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
4626 if support.verbose: |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4627 print("TIPC module is not loaded, please 'sudo modprobe tipc'") |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4628 return False |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4629 |
|
72586
77397669c62f
Fix ResourceWarnings in the TIPC socket tests.
Antoine Pitrou <solipsis@pitrou.net>
parents:
72448
diff
changeset
|
4630 class TIPCTest(unittest.TestCase): |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4631 def testRDM(self): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4632 srv = socket.socket(socket.AF_TIPC, socket.SOCK_RDM) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4633 cli = socket.socket(socket.AF_TIPC, socket.SOCK_RDM) |
|
72586
77397669c62f
Fix ResourceWarnings in the TIPC socket tests.
Antoine Pitrou <solipsis@pitrou.net>
parents:
72448
diff
changeset
|
4634 self.addCleanup(srv.close) |
|
77397669c62f
Fix ResourceWarnings in the TIPC socket tests.
Antoine Pitrou <solipsis@pitrou.net>
parents:
72448
diff
changeset
|
4635 self.addCleanup(cli.close) |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4636 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4637 srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4638 srvaddr = (socket.TIPC_ADDR_NAMESEQ, TIPC_STYPE, |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4639 TIPC_LOWER, TIPC_UPPER) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4640 srv.bind(srvaddr) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4641 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4642 sendaddr = (socket.TIPC_ADDR_NAME, TIPC_STYPE, |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4643 TIPC_LOWER + int((TIPC_UPPER - TIPC_LOWER) / 2), 0) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4644 cli.sendto(MSG, sendaddr) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4645 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4646 msg, recvaddr = srv.recvfrom(1024) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4647 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4648 self.assertEqual(cli.getsockname(), recvaddr) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4649 self.assertEqual(msg, MSG) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4650 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4651 |
|
72586
77397669c62f
Fix ResourceWarnings in the TIPC socket tests.
Antoine Pitrou <solipsis@pitrou.net>
parents:
72448
diff
changeset
|
4652 class TIPCThreadableTest(unittest.TestCase, ThreadableTest): |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4653 def __init__(self, methodName = 'runTest'): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4654 unittest.TestCase.__init__(self, methodName = methodName) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4655 ThreadableTest.__init__(self) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4656 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4657 def setUp(self): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4658 self.srv = socket.socket(socket.AF_TIPC, socket.SOCK_STREAM) |
|
72586
77397669c62f
Fix ResourceWarnings in the TIPC socket tests.
Antoine Pitrou <solipsis@pitrou.net>
parents:
72448
diff
changeset
|
4659 self.addCleanup(self.srv.close) |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4660 self.srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4661 srvaddr = (socket.TIPC_ADDR_NAMESEQ, TIPC_STYPE, |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4662 TIPC_LOWER, TIPC_UPPER) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4663 self.srv.bind(srvaddr) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4664 self.srv.listen(5) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4665 self.serverExplicitReady() |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4666 self.conn, self.connaddr = self.srv.accept() |
|
72586
77397669c62f
Fix ResourceWarnings in the TIPC socket tests.
Antoine Pitrou <solipsis@pitrou.net>
parents:
72448
diff
changeset
|
4667 self.addCleanup(self.conn.close) |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4668 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4669 def clientSetUp(self): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4670 # The is a hittable race between serverExplicitReady() and the |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4671 # accept() call; sleep a little while to avoid it, otherwise |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4672 # we could get an exception |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4673 time.sleep(0.1) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4674 self.cli = socket.socket(socket.AF_TIPC, socket.SOCK_STREAM) |
|
72586
77397669c62f
Fix ResourceWarnings in the TIPC socket tests.
Antoine Pitrou <solipsis@pitrou.net>
parents:
72448
diff
changeset
|
4675 self.addCleanup(self.cli.close) |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4676 addr = (socket.TIPC_ADDR_NAME, TIPC_STYPE, |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4677 TIPC_LOWER + int((TIPC_UPPER - TIPC_LOWER) / 2), 0) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4678 self.cli.connect(addr) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4679 self.cliaddr = self.cli.getsockname() |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4680 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4681 def testStream(self): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4682 msg = self.conn.recv(1024) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4683 self.assertEqual(msg, MSG) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4684 self.assertEqual(self.cliaddr, self.connaddr) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4685 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4686 def _testStream(self): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4687 self.cli.send(MSG) |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4688 self.cli.close() |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4689 |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4690 |
|
64574
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4691 @unittest.skipUnless(thread, 'Threading required for this test.') |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4692 class ContextManagersTest(ThreadedTCPSocketTest): |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4693 |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4694 def _testSocketClass(self): |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4695 # base test |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4696 with socket.socket() as sock: |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4697 self.assertFalse(sock._closed) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4698 self.assertTrue(sock._closed) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4699 # close inside with block |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4700 with socket.socket() as sock: |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4701 sock.close() |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4702 self.assertTrue(sock._closed) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4703 # exception inside with block |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4704 with socket.socket() as sock: |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4705 self.assertRaises(OSError, sock.sendall, b'foo') |
|
64574
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4706 self.assertTrue(sock._closed) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4707 |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4708 def testCreateConnectionBase(self): |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4709 conn, addr = self.serv.accept() |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4710 self.addCleanup(conn.close) |
|
64574
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4711 data = conn.recv(1024) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4712 conn.sendall(data) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4713 |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4714 def _testCreateConnectionBase(self): |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4715 address = self.serv.getsockname() |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4716 with socket.create_connection(address) as sock: |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4717 self.assertFalse(sock._closed) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4718 sock.sendall(b'foo') |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4719 self.assertEqual(sock.recv(1024), b'foo') |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4720 self.assertTrue(sock._closed) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4721 |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4722 def testCreateConnectionClose(self): |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4723 conn, addr = self.serv.accept() |
|
65882
889fd8ecbff4
Clean up ResourceWarnings due to unclosed sockets.
Brian Curtin <brian.curtin@gmail.com>
parents:
65707
diff
changeset
|
4724 self.addCleanup(conn.close) |
|
64574
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4725 data = conn.recv(1024) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4726 conn.sendall(data) |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4727 |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4728 def _testCreateConnectionClose(self): |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4729 address = self.serv.getsockname() |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4730 with socket.create_connection(address) as sock: |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4731 sock.close() |
|
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4732 self.assertTrue(sock._closed) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
80889
diff
changeset
|
4733 self.assertRaises(OSError, sock.sendall, b'foo') |
|
64574
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4734 |
|
65604
8d7f18332db7
Fix SOCK_CLOEXEC and SOCK_NONBLOCK tests on recent glibcs with old Linux kernels.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65416
diff
changeset
|
4735 |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4736 @unittest.skipUnless(hasattr(socket, "SOCK_CLOEXEC"), |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4737 "SOCK_CLOEXEC not defined") |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4738 @unittest.skipUnless(fcntl, "module fcntl not available") |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4739 class CloexecConstantTest(unittest.TestCase): |
|
70612
277bbe6cae53
Issue #12196: Make test.support's requires_linux_version a decorator.
Charles-François Natali <neologix@free.fr>
parents:
70324
diff
changeset
|
4740 @support.requires_linux_version(2, 6, 28) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4741 def test_SOCK_CLOEXEC(self): |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4742 with socket.socket(socket.AF_INET, |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4743 socket.SOCK_STREAM | socket.SOCK_CLOEXEC) as s: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4744 self.assertTrue(s.type & socket.SOCK_CLOEXEC) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4745 self.assertTrue(fcntl.fcntl(s, fcntl.F_GETFD) & fcntl.FD_CLOEXEC) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4746 |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4747 |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4748 @unittest.skipUnless(hasattr(socket, "SOCK_NONBLOCK"), |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4749 "SOCK_NONBLOCK not defined") |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4750 class NonblockConstantTest(unittest.TestCase): |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4751 def checkNonblock(self, s, nonblock=True, timeout=0.0): |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4752 if nonblock: |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4753 self.assertTrue(s.type & socket.SOCK_NONBLOCK) |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4754 self.assertEqual(s.gettimeout(), timeout) |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4755 else: |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4756 self.assertFalse(s.type & socket.SOCK_NONBLOCK) |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4757 self.assertEqual(s.gettimeout(), None) |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4758 |
|
70612
277bbe6cae53
Issue #12196: Make test.support's requires_linux_version a decorator.
Charles-François Natali <neologix@free.fr>
parents:
70324
diff
changeset
|
4759 @support.requires_linux_version(2, 6, 28) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4760 def test_SOCK_NONBLOCK(self): |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4761 # a lot of it seems silly and redundant, but I wanted to test that |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4762 # changing back and forth worked ok |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4763 with socket.socket(socket.AF_INET, |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4764 socket.SOCK_STREAM | socket.SOCK_NONBLOCK) as s: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4765 self.checkNonblock(s) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4766 s.setblocking(1) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4767 self.checkNonblock(s, False) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4768 s.setblocking(0) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4769 self.checkNonblock(s) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4770 s.settimeout(None) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4771 self.checkNonblock(s, False) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4772 s.settimeout(2.0) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4773 self.checkNonblock(s, timeout=2.0) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4774 s.setblocking(1) |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4775 self.checkNonblock(s, False) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4776 # defaulttimeout |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4777 t = socket.getdefaulttimeout() |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4778 socket.setdefaulttimeout(0.0) |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4779 with socket.socket() as s: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4780 self.checkNonblock(s) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4781 socket.setdefaulttimeout(None) |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4782 with socket.socket() as s: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4783 self.checkNonblock(s, False) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4784 socket.setdefaulttimeout(2.0) |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4785 with socket.socket() as s: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4786 self.checkNonblock(s, timeout=2.0) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4787 socket.setdefaulttimeout(None) |
|
67299
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4788 with socket.socket() as s: |
|
6cb7ed7b6697
test_socket: use context managers to close directly the socket
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
4789 self.checkNonblock(s, False) |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4790 socket.setdefaulttimeout(t) |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4791 |
|
64574
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4792 |
|
76150
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4793 @unittest.skipUnless(os.name == "nt", "Windows specific") |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4794 @unittest.skipUnless(multiprocessing, "need multiprocessing") |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4795 class TestSocketSharing(SocketTCPTest): |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4796 # This must be classmethod and not staticmethod or multiprocessing |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4797 # won't be able to bootstrap it. |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4798 @classmethod |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4799 def remoteProcessServer(cls, q): |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4800 # Recreate socket from shared data |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4801 sdata = q.get() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4802 message = q.get() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4803 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4804 s = socket.fromshare(sdata) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4805 s2, c = s.accept() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4806 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4807 # Send the message |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4808 s2.sendall(message) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4809 s2.close() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4810 s.close() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4811 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4812 def testShare(self): |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4813 # Transfer the listening server socket to another process |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4814 # and service it from there. |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4815 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4816 # Create process: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4817 q = multiprocessing.Queue() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4818 p = multiprocessing.Process(target=self.remoteProcessServer, args=(q,)) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4819 p.start() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4820 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4821 # Get the shared socket data |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4822 data = self.serv.share(p.pid) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4823 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4824 # Pass the shared socket to the other process |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4825 addr = self.serv.getsockname() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4826 self.serv.close() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4827 q.put(data) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4828 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4829 # The data that the server will send us |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4830 message = b"slapmahfro" |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4831 q.put(message) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4832 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4833 # Connect |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4834 s = socket.create_connection(addr) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4835 # listen for the data |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4836 m = [] |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4837 while True: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4838 data = s.recv(100) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4839 if not data: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4840 break |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4841 m.append(data) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4842 s.close() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4843 received = b"".join(m) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4844 self.assertEqual(received, message) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4845 p.join() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4846 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4847 def testShareLength(self): |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4848 data = self.serv.share(os.getpid()) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4849 self.assertRaises(ValueError, socket.fromshare, data[:-1]) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4850 self.assertRaises(ValueError, socket.fromshare, data+b"foo") |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4851 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4852 def compareSockets(self, org, other): |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4853 # socket sharing is expected to work only for blocking socket |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4854 # since the internal python timout value isn't transfered. |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4855 self.assertEqual(org.gettimeout(), None) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4856 self.assertEqual(org.gettimeout(), other.gettimeout()) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4857 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4858 self.assertEqual(org.family, other.family) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4859 self.assertEqual(org.type, other.type) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4860 # If the user specified "0" for proto, then |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4861 # internally windows will have picked the correct value. |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4862 # Python introspection on the socket however will still return |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4863 # 0. For the shared socket, the python value is recreated |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4864 # from the actual value, so it may not compare correctly. |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4865 if org.proto != 0: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4866 self.assertEqual(org.proto, other.proto) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4867 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4868 def testShareLocal(self): |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4869 data = self.serv.share(os.getpid()) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4870 s = socket.fromshare(data) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4871 try: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4872 self.compareSockets(self.serv, s) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4873 finally: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4874 s.close() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4875 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4876 def testTypes(self): |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4877 families = [socket.AF_INET, socket.AF_INET6] |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4878 types = [socket.SOCK_STREAM, socket.SOCK_DGRAM] |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4879 for f in families: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4880 for t in types: |
|
76157
9b858096044e
Issue #14310: Catch testing errors when trying to create unsupported socket
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76150
diff
changeset
|
4881 try: |
|
9b858096044e
Issue #14310: Catch testing errors when trying to create unsupported socket
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76150
diff
changeset
|
4882 source = socket.socket(f, t) |
|
9b858096044e
Issue #14310: Catch testing errors when trying to create unsupported socket
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76150
diff
changeset
|
4883 except OSError: |
|
9b858096044e
Issue #14310: Catch testing errors when trying to create unsupported socket
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76150
diff
changeset
|
4884 continue # This combination is not supported |
|
76150
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4885 try: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4886 data = source.share(os.getpid()) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4887 shared = socket.fromshare(data) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4888 try: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4889 self.compareSockets(source, shared) |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4890 finally: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4891 shared.close() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4892 finally: |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4893 source.close() |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4894 |
|
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4895 |
|
24451
22570e76cca1
Enable test_socket again, if only to prevent mistakes like Jeremy
Guido van Rossum <guido@python.org>
parents:
24450
diff
changeset
|
4896 def test_main(): |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4897 tests = [GeneralModuleTests, BasicTCPTest, TCPCloserTest, TCPTimeoutTest, |
|
61259
1f7506f23771
Remove traces of MacOS9 support.
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
61073
diff
changeset
|
4898 TestExceptions, BufferIOTest, BasicTCPTest2, BasicUDPTest, UDPTimeoutTest ] |
|
28917
1741af48fd9f
Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents:
28833
diff
changeset
|
4899 |
|
1741af48fd9f
Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents:
28833
diff
changeset
|
4900 tests.extend([ |
|
1741af48fd9f
Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents:
28833
diff
changeset
|
4901 NonBlockingTCPTests, |
|
1741af48fd9f
Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents:
28833
diff
changeset
|
4902 FileObjectClassTestCase, |
|
58146
efbac7d3a368
Merged revisions 74426 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
58136
diff
changeset
|
4903 FileObjectInterruptedTestCase, |
|
28917
1741af48fd9f
Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents:
28833
diff
changeset
|
4904 UnbufferedFileObjectClassTestCase, |
|
1741af48fd9f
Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents:
28833
diff
changeset
|
4905 LineBufferedFileObjectClassTestCase, |
|
40737
6ebad2a6b990
Merged revisions 53451-53537 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40644
diff
changeset
|
4906 SmallBufferedFileObjectClassTestCase, |
|
65259
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4907 UnicodeReadFileObjectClassTestCase, |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4908 UnicodeWriteFileObjectClassTestCase, |
|
3619c1214007
Merged revisions 85420 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64961
diff
changeset
|
4909 UnicodeReadWriteFileObjectClassTestCase, |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4910 NetworkConnectionNoServer, |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4911 NetworkConnectionAttributesTest, |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40737
diff
changeset
|
4912 NetworkConnectionBehaviourTest, |
|
64574
caf0b4b0569e
Fix issue 9794: adds context manager protocol to socket.socket so that socket.create_connection() can be used with the 'with' statement.
Giampaolo Rodolà <g.rodola@gmail.com>
parents:
64534
diff
changeset
|
4913 ContextManagersTest, |
|
65314
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4914 CloexecConstantTest, |
|
12442ac3f7dd
Issue #7523: Add SOCK_CLOEXEC and SOCK_NONBLOCK to the socket module,
Antoine Pitrou <solipsis@pitrou.net>
parents:
65258
diff
changeset
|
4915 NonblockConstantTest |
|
28917
1741af48fd9f
Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents:
28833
diff
changeset
|
4916 ]) |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
4917 if hasattr(socket, "socketpair"): |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32630
diff
changeset
|
4918 tests.append(BasicSocketPairTest) |
|
73998
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4919 if hasattr(socket, "AF_UNIX"): |
|
1f23bb74f4bc
Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem
Antoine Pitrou <solipsis@pitrou.net>
parents:
73613
diff
changeset
|
4920 tests.append(TestUnixDomain) |
|
72011
b5ccdf7c032a
Issue #12326: refactor usage of sys.platform
Victor Stinner <victor.stinner@haypocalc.com>
parents:
71897
diff
changeset
|
4921 if sys.platform == 'linux': |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
35453
diff
changeset
|
4922 tests.append(TestLinuxAbstractNamespace) |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4923 if isTipcAvailable(): |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4924 tests.append(TIPCTest) |
|
44587
fb5a6330f71b
Merged revisions 59822-59841 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
4925 tests.append(TIPCThreadableTest) |
|
72758
e767318baccd
Issue #10141: socket: add SocketCAN (PF_CAN) support. Initial patch by Matthias
Charles-François Natali <neologix@free.fr>
parents:
72619
diff
changeset
|
4926 tests.extend([BasicCANTest, CANTest]) |
|
73478
2293ca739223
Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support.
Charles-François Natali <neologix@free.fr>
parents:
73085
diff
changeset
|
4927 tests.extend([BasicRDSTest, RDSTest]) |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4928 tests.extend([ |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4929 CmsgMacroTests, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4930 SendmsgUDPTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4931 RecvmsgUDPTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4932 RecvmsgIntoUDPTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4933 SendmsgUDP6Test, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4934 RecvmsgUDP6Test, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4935 RecvmsgRFC3542AncillaryUDP6Test, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4936 RecvmsgIntoRFC3542AncillaryUDP6Test, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4937 RecvmsgIntoUDP6Test, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4938 SendmsgTCPTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4939 RecvmsgTCPTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4940 RecvmsgIntoTCPTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4941 SendmsgSCTPStreamTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4942 RecvmsgSCTPStreamTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4943 RecvmsgIntoSCTPStreamTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4944 SendmsgUnixStreamTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4945 RecvmsgUnixStreamTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4946 RecvmsgIntoUnixStreamTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4947 RecvmsgSCMRightsStreamTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4948 RecvmsgIntoSCMRightsStreamTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4949 # These are slow when setitimer() is not available |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4950 InterruptedRecvTimeoutTest, |
|
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4951 InterruptedSendTimeoutTest, |
|
76150
51b4bddd0e92
Issue #14310: inter-process socket duplication for windows
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
76034
diff
changeset
|
4952 TestSocketSharing, |
|
72029
c64216addd7f
Add support for the send/recvmsg API to the socket module. Patch by David Watson and Heiko Wundram. (Closes #6560)
Nick Coghlan <ncoghlan@gmail.com>
parents:
72011
diff
changeset
|
4953 ]) |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
4954 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
4955 thread_info = support.threading_setup() |
|
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
4956 support.run_unittest(*tests) |
|
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46899
diff
changeset
|
4957 support.threading_cleanup(*thread_info) |
|
23790
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
4958 |
|
486f4045d13d
New test suite for the socket module by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
4959 if __name__ == "__main__": |
|
24451
22570e76cca1
Enable test_socket again, if only to prevent mistakes like Jeremy
Guido van Rossum <guido@python.org>
parents:
24450
diff
changeset
|
4960 test_main() |
