Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_xmlrpc.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | a4515186bf9c |
| children |
| rev | line source |
|---|---|
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
1 import base64 |
|
34578
607c48b5efd7
accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents:
32248
diff
changeset
|
2 import datetime |
|
20571
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
3 import sys |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
4 import time |
|
20205
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
5 import unittest |
|
85090
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
6 from unittest import mock |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
7 import xmlrpc.client as xmlrpclib |
|
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
8 import xmlrpc.server |
|
47318
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47288
diff
changeset
|
9 import http.client |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
10 import socket |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
11 import os |
|
52668
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
12 import re |
|
56746
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
13 import io |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
14 import contextlib |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46664
diff
changeset
|
15 from test import support |
|
20205
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
16 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
17 try: |
|
84105
281857369a78
Spruce up test_xmlrpc by using ModuleNotFoundError and moving to
Brett Cannon <brett@python.org>
parents:
80933
diff
changeset
|
18 import gzip |
|
84448
de947db308ba
Issue #15767: Excise the remaining instances of ModuleNotFoundError
Brett Cannon <brett@python.org>
parents:
84107
diff
changeset
|
19 except ImportError: |
|
84105
281857369a78
Spruce up test_xmlrpc by using ModuleNotFoundError and moving to
Brett Cannon <brett@python.org>
parents:
80933
diff
changeset
|
20 gzip = None |
|
281857369a78
Spruce up test_xmlrpc by using ModuleNotFoundError and moving to
Brett Cannon <brett@python.org>
parents:
80933
diff
changeset
|
21 try: |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
22 import threading |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
23 except ImportError: |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
24 threading = None |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
25 |
|
20205
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
26 alist = [{'astring': 'foo@bar.baz.spam', |
|
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
27 'afloat': 7283.43, |
|
20571
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
28 'anint': 2**20, |
|
40644
1c26505c1de6
Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents:
40360
diff
changeset
|
29 'ashortlong': 2, |
|
20205
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
30 'anotherlist': ['.zyx.41'], |
|
42916
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
31 'abase64': xmlrpclib.Binary(b"my dog has fleas"), |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
32 'b64bytes': b"my dog has fleas", |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
33 'b64bytearray': bytearray(b"my dog has fleas"), |
|
41969
9d02a4adf574
Merged revisions 55631-55794 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41575
diff
changeset
|
34 'boolean': False, |
|
41575
beacf40b5960
Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents:
40809
diff
changeset
|
35 'unicode': '\u4000\u6000\u8000', |
|
beacf40b5960
Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents:
40809
diff
changeset
|
36 'ukey\u4000': 'regular value', |
|
34578
607c48b5efd7
accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents:
32248
diff
changeset
|
37 'datetime1': xmlrpclib.DateTime('20050210T11:41:23'), |
|
607c48b5efd7
accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents:
32248
diff
changeset
|
38 'datetime2': xmlrpclib.DateTime( |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41993
diff
changeset
|
39 (2005, 2, 10, 11, 41, 23, 0, 1, -1)), |
|
34578
607c48b5efd7
accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents:
32248
diff
changeset
|
40 'datetime3': xmlrpclib.DateTime( |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41993
diff
changeset
|
41 datetime.datetime(2005, 2, 10, 11, 41, 23)), |
|
20205
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
42 }] |
|
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
43 |
|
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
44 class XMLRPCTestCase(unittest.TestCase): |
|
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
45 |
|
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
46 def test_dump_load(self): |
|
42916
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
47 dump = xmlrpclib.dumps((alist,)) |
|
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
48 load = xmlrpclib.loads(dump) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
49 self.assertEqual(alist, load[0][0]) |
|
20205
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
50 |
|
34578
607c48b5efd7
accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents:
32248
diff
changeset
|
51 def test_dump_bare_datetime(self): |
|
34956
404088503a78
Add better datetime support to xmlrpclib module. Closes patch #1120353.
Skip Montanaro <skip@pobox.com>
parents:
34881
diff
changeset
|
52 # This checks that an unwrapped datetime.date object can be handled |
|
404088503a78
Add better datetime support to xmlrpclib module. Closes patch #1120353.
Skip Montanaro <skip@pobox.com>
parents:
34881
diff
changeset
|
53 # by the marshalling code. This can't be done via test_dump_load() |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
54 # since with use_builtin_types set to 1 the unmarshaller would create |
|
34956
404088503a78
Add better datetime support to xmlrpclib module. Closes patch #1120353.
Skip Montanaro <skip@pobox.com>
parents:
34881
diff
changeset
|
55 # datetime objects for the 'datetime[123]' keys as well |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41993
diff
changeset
|
56 dt = datetime.datetime(2005, 2, 10, 11, 41, 23) |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
57 self.assertEqual(dt, xmlrpclib.DateTime('20050210T11:41:23')) |
|
34578
607c48b5efd7
accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents:
32248
diff
changeset
|
58 s = xmlrpclib.dumps((dt,)) |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
59 |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
60 result, m = xmlrpclib.loads(s, use_builtin_types=True) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
61 (newdt,) = result |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
62 self.assertEqual(newdt, dt) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
63 self.assertIs(type(newdt), datetime.datetime) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
64 self.assertIsNone(m) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
65 |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
66 result, m = xmlrpclib.loads(s, use_builtin_types=False) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
67 (newdt,) = result |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
68 self.assertEqual(newdt, dt) |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
69 self.assertIs(type(newdt), xmlrpclib.DateTime) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
70 self.assertIsNone(m) |
|
34956
404088503a78
Add better datetime support to xmlrpclib module. Closes patch #1120353.
Skip Montanaro <skip@pobox.com>
parents:
34881
diff
changeset
|
71 |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
72 result, m = xmlrpclib.loads(s, use_datetime=True) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
73 (newdt,) = result |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
74 self.assertEqual(newdt, dt) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
75 self.assertIs(type(newdt), datetime.datetime) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
76 self.assertIsNone(m) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
77 |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
78 result, m = xmlrpclib.loads(s, use_datetime=False) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
79 (newdt,) = result |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
80 self.assertEqual(newdt, dt) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
81 self.assertIs(type(newdt), xmlrpclib.DateTime) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
82 self.assertIsNone(m) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
83 |
|
34956
404088503a78
Add better datetime support to xmlrpclib module. Closes patch #1120353.
Skip Montanaro <skip@pobox.com>
parents:
34881
diff
changeset
|
84 |
|
46478
beb7abcd6c01
Merged revisions 62350-62355,62358-62359,62364-62365,62370,62372-62375,62378-62379,62381 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46336
diff
changeset
|
85 def test_datetime_before_1900(self): |
|
46664
031dfe455585
Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46478
diff
changeset
|
86 # same as before but with a date before 1900 |
|
46478
beb7abcd6c01
Merged revisions 62350-62355,62358-62359,62364-62365,62370,62372-62375,62378-62379,62381 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46336
diff
changeset
|
87 dt = datetime.datetime(1, 2, 10, 11, 41, 23) |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
88 self.assertEqual(dt, xmlrpclib.DateTime('00010210T11:41:23')) |
|
46478
beb7abcd6c01
Merged revisions 62350-62355,62358-62359,62364-62365,62370,62372-62375,62378-62379,62381 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46336
diff
changeset
|
89 s = xmlrpclib.dumps((dt,)) |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
90 |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
91 result, m = xmlrpclib.loads(s, use_builtin_types=True) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
92 (newdt,) = result |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
93 self.assertEqual(newdt, dt) |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
94 self.assertIs(type(newdt), datetime.datetime) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
95 self.assertIsNone(m) |
|
46478
beb7abcd6c01
Merged revisions 62350-62355,62358-62359,62364-62365,62370,62372-62375,62378-62379,62381 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46336
diff
changeset
|
96 |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
97 result, m = xmlrpclib.loads(s, use_builtin_types=False) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
98 (newdt,) = result |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
99 self.assertEqual(newdt, dt) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
100 self.assertIs(type(newdt), xmlrpclib.DateTime) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
101 self.assertIsNone(m) |
|
46478
beb7abcd6c01
Merged revisions 62350-62355,62358-62359,62364-62365,62370,62372-62375,62378-62379,62381 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46336
diff
changeset
|
102 |
|
35984
75d536b247ea
[Bug #1164912] Ensure Datetime wrapper class .value attribute is an 8-bit string, not a Unicode string
Andrew M. Kuchling <amk@amk.ca>
parents:
34956
diff
changeset
|
103 def test_bug_1164912 (self): |
|
75d536b247ea
[Bug #1164912] Ensure Datetime wrapper class .value attribute is an 8-bit string, not a Unicode string
Andrew M. Kuchling <amk@amk.ca>
parents:
34956
diff
changeset
|
104 d = xmlrpclib.DateTime() |
|
36121
686306a67e9b
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
35984
diff
changeset
|
105 ((new_d,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((d,), |
|
35984
75d536b247ea
[Bug #1164912] Ensure Datetime wrapper class .value attribute is an 8-bit string, not a Unicode string
Andrew M. Kuchling <amk@amk.ca>
parents:
34956
diff
changeset
|
106 methodresponse=True)) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
57751
diff
changeset
|
107 self.assertIsInstance(new_d.value, str) |
|
35984
75d536b247ea
[Bug #1164912] Ensure Datetime wrapper class .value attribute is an 8-bit string, not a Unicode string
Andrew M. Kuchling <amk@amk.ca>
parents:
34956
diff
changeset
|
108 |
|
75d536b247ea
[Bug #1164912] Ensure Datetime wrapper class .value attribute is an 8-bit string, not a Unicode string
Andrew M. Kuchling <amk@amk.ca>
parents:
34956
diff
changeset
|
109 # Check that the output of dumps() is still an 8-bit string |
|
75d536b247ea
[Bug #1164912] Ensure Datetime wrapper class .value attribute is an 8-bit string, not a Unicode string
Andrew M. Kuchling <amk@amk.ca>
parents:
34956
diff
changeset
|
110 s = xmlrpclib.dumps((new_d,), methodresponse=True) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
57751
diff
changeset
|
111 self.assertIsInstance(s, str) |
|
35984
75d536b247ea
[Bug #1164912] Ensure Datetime wrapper class .value attribute is an 8-bit string, not a Unicode string
Andrew M. Kuchling <amk@amk.ca>
parents:
34956
diff
changeset
|
112 |
|
40360
40166e5011f8
Patch #1070046: Marshal new-style objects like InstanceType
Martin v. Löwis <martin@v.loewis.de>
parents:
36121
diff
changeset
|
113 def test_newstyle_class(self): |
|
40166e5011f8
Patch #1070046: Marshal new-style objects like InstanceType
Martin v. Löwis <martin@v.loewis.de>
parents:
36121
diff
changeset
|
114 class T(object): |
|
40166e5011f8
Patch #1070046: Marshal new-style objects like InstanceType
Martin v. Löwis <martin@v.loewis.de>
parents:
36121
diff
changeset
|
115 pass |
|
40166e5011f8
Patch #1070046: Marshal new-style objects like InstanceType
Martin v. Löwis <martin@v.loewis.de>
parents:
36121
diff
changeset
|
116 t = T() |
|
40166e5011f8
Patch #1070046: Marshal new-style objects like InstanceType
Martin v. Löwis <martin@v.loewis.de>
parents:
36121
diff
changeset
|
117 t.x = 100 |
|
40166e5011f8
Patch #1070046: Marshal new-style objects like InstanceType
Martin v. Löwis <martin@v.loewis.de>
parents:
36121
diff
changeset
|
118 t.y = "Hello" |
|
40166e5011f8
Patch #1070046: Marshal new-style objects like InstanceType
Martin v. Löwis <martin@v.loewis.de>
parents:
36121
diff
changeset
|
119 ((t2,), dummy) = xmlrpclib.loads(xmlrpclib.dumps((t,))) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
120 self.assertEqual(t2, t.__dict__) |
|
40360
40166e5011f8
Patch #1070046: Marshal new-style objects like InstanceType
Martin v. Löwis <martin@v.loewis.de>
parents:
36121
diff
changeset
|
121 |
|
20571
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
122 def test_dump_big_long(self): |
|
40644
1c26505c1de6
Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents:
40360
diff
changeset
|
123 self.assertRaises(OverflowError, xmlrpclib.dumps, (2**99,)) |
|
20571
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
124 |
|
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
125 def test_dump_bad_dict(self): |
|
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
126 self.assertRaises(TypeError, xmlrpclib.dumps, ({(1,2,3): 1},)) |
|
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
127 |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
128 def test_dump_recursive_seq(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
129 l = [1,2,3] |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
130 t = [3,4,5,l] |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
131 l.append(t) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
132 self.assertRaises(TypeError, xmlrpclib.dumps, (l,)) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
133 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
134 def test_dump_recursive_dict(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
135 d = {'1':1, '2':1} |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
136 t = {'3':3, 'd':d} |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
137 d['t'] = t |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
138 self.assertRaises(TypeError, xmlrpclib.dumps, (d,)) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
139 |
|
20571
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
140 def test_dump_big_int(self): |
|
44160
9d152530910a
Removed PyInt_GetMax and sys.maxint
Christian Heimes <christian@cheimes.de>
parents:
43750
diff
changeset
|
141 if sys.maxsize > 2**31-1: |
|
20571
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
142 self.assertRaises(OverflowError, xmlrpclib.dumps, |
|
40644
1c26505c1de6
Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents:
40360
diff
changeset
|
143 (int(2**34),)) |
|
20571
541f825c7d63
added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents:
20205
diff
changeset
|
144 |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
145 xmlrpclib.dumps((xmlrpclib.MAXINT, xmlrpclib.MININT)) |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
146 self.assertRaises(OverflowError, xmlrpclib.dumps, |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
147 (xmlrpclib.MAXINT+1,)) |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
148 self.assertRaises(OverflowError, xmlrpclib.dumps, |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
149 (xmlrpclib.MININT-1,)) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
150 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
151 def dummy_write(s): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
152 pass |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
153 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
154 m = xmlrpclib.Marshaller() |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
155 m.dump_int(xmlrpclib.MAXINT, dummy_write) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
156 m.dump_int(xmlrpclib.MININT, dummy_write) |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
157 self.assertRaises(OverflowError, m.dump_int, |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
158 xmlrpclib.MAXINT+1, dummy_write) |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
159 self.assertRaises(OverflowError, m.dump_int, |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
160 xmlrpclib.MININT-1, dummy_write) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
161 |
|
77974
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
162 def test_dump_double(self): |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
163 xmlrpclib.dumps((float(2 ** 34),)) |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
164 xmlrpclib.dumps((float(xmlrpclib.MAXINT), |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
165 float(xmlrpclib.MININT))) |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
166 xmlrpclib.dumps((float(xmlrpclib.MAXINT + 42), |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
167 float(xmlrpclib.MININT - 42))) |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
168 |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
169 def dummy_write(s): |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
170 pass |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
171 |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
172 m = xmlrpclib.Marshaller() |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
173 m.dump_double(xmlrpclib.MAXINT, dummy_write) |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
174 m.dump_double(xmlrpclib.MININT, dummy_write) |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
175 m.dump_double(xmlrpclib.MAXINT + 42, dummy_write) |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
176 m.dump_double(xmlrpclib.MININT - 42, dummy_write) |
|
c257c5eea42f
Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
75018
diff
changeset
|
177 |
|
28809
28a09767a24f
[Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents:
24364
diff
changeset
|
178 def test_dump_none(self): |
|
28a09767a24f
[Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents:
24364
diff
changeset
|
179 value = alist + [None] |
|
28a09767a24f
[Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents:
24364
diff
changeset
|
180 arg1 = (alist + [None],) |
|
28a09767a24f
[Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents:
24364
diff
changeset
|
181 strg = xmlrpclib.dumps(arg1, allow_none=True) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
182 self.assertEqual(value, |
|
28809
28a09767a24f
[Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents:
24364
diff
changeset
|
183 xmlrpclib.loads(strg)[0][0]) |
|
28a09767a24f
[Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents:
24364
diff
changeset
|
184 self.assertRaises(TypeError, xmlrpclib.dumps, (arg1,)) |
|
28a09767a24f
[Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents:
24364
diff
changeset
|
185 |
|
73575
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
186 def test_dump_bytes(self): |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
187 sample = b"my dog has fleas" |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
188 self.assertEqual(sample, xmlrpclib.Binary(sample)) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
189 for type_ in bytes, bytearray, xmlrpclib.Binary: |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
190 value = type_(sample) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
191 s = xmlrpclib.dumps((value,)) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
192 |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
193 result, m = xmlrpclib.loads(s, use_builtin_types=True) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
194 (newvalue,) = result |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
195 self.assertEqual(newvalue, sample) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
196 self.assertIs(type(newvalue), bytes) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
197 self.assertIsNone(m) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
198 |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
199 result, m = xmlrpclib.loads(s, use_builtin_types=False) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
200 (newvalue,) = result |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
201 self.assertEqual(newvalue, sample) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
202 self.assertIs(type(newvalue), xmlrpclib.Binary) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
203 self.assertIsNone(m) |
|
0175883d9513
Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73214
diff
changeset
|
204 |
|
51594
ca1d99d9d691
part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents:
50879
diff
changeset
|
205 def test_get_host_info(self): |
|
ca1d99d9d691
part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents:
50879
diff
changeset
|
206 # see bug #3613, this raised a TypeError |
|
ca1d99d9d691
part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents:
50879
diff
changeset
|
207 transp = xmlrpc.client.Transport() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
208 self.assertEqual(transp.get_host_info("user@host.tld"), |
|
51594
ca1d99d9d691
part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents:
50879
diff
changeset
|
209 ('host.tld', |
|
ca1d99d9d691
part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents:
50879
diff
changeset
|
210 [('Authorization', 'Basic dXNlcg==')], {})) |
|
ca1d99d9d691
part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents:
50879
diff
changeset
|
211 |
|
66234
019421a89ef5
Merged revisions 86514 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
55593
diff
changeset
|
212 def test_ssl_presence(self): |
|
66241
a019bb4ffb50
Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
66234
diff
changeset
|
213 try: |
|
a019bb4ffb50
Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
66234
diff
changeset
|
214 import ssl |
|
66249
420301400403
Merged revisions 86533 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66241
diff
changeset
|
215 except ImportError: |
|
420301400403
Merged revisions 86533 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66241
diff
changeset
|
216 has_ssl = False |
|
66234
019421a89ef5
Merged revisions 86514 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
55593
diff
changeset
|
217 else: |
|
66241
a019bb4ffb50
Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
66234
diff
changeset
|
218 has_ssl = True |
|
66234
019421a89ef5
Merged revisions 86514 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
55593
diff
changeset
|
219 try: |
|
019421a89ef5
Merged revisions 86514 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
55593
diff
changeset
|
220 xmlrpc.client.ServerProxy('https://localhost:9999').bad_function() |
|
66241
a019bb4ffb50
Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
66234
diff
changeset
|
221 except NotImplementedError: |
|
a019bb4ffb50
Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
66234
diff
changeset
|
222 self.assertFalse(has_ssl, "xmlrpc client's error with SSL support") |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
223 except OSError: |
|
66241
a019bb4ffb50
Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
66234
diff
changeset
|
224 self.assertTrue(has_ssl) |
|
51594
ca1d99d9d691
part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents:
50879
diff
changeset
|
225 |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
226 class HelperTestCase(unittest.TestCase): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
227 def test_escape(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
228 self.assertEqual(xmlrpclib.escape("a&b"), "a&b") |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
229 self.assertEqual(xmlrpclib.escape("a<b"), "a<b") |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
230 self.assertEqual(xmlrpclib.escape("a>b"), "a>b") |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
231 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
232 class FaultTestCase(unittest.TestCase): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
233 def test_repr(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
234 f = xmlrpclib.Fault(42, 'Test Fault') |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
235 self.assertEqual(repr(f), "<Fault 42: 'Test Fault'>") |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
236 self.assertEqual(repr(f), str(f)) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
237 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
238 def test_dump_fault(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
239 f = xmlrpclib.Fault(42, 'Test Fault') |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
240 s = xmlrpclib.dumps((f,)) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
241 (newf,), m = xmlrpclib.loads(s) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
242 self.assertEqual(newf, {'faultCode': 42, 'faultString': 'Test Fault'}) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
243 self.assertEqual(m, None) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
244 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
245 s = xmlrpclib.Marshaller().dumps(f) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
246 self.assertRaises(xmlrpclib.Fault, xmlrpclib.loads, s) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
247 |
|
44239
369a4e06fd30
Added another test case for kwonly methods
Christian Heimes <christian@cheimes.de>
parents:
44234
diff
changeset
|
248 def test_dotted_attribute(self): |
|
73214
e88e7ef6b53d
Cleanup xmlrpc: remove obsolete comments, unused imports. Add test for bytes marshalling.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73213
diff
changeset
|
249 # this will raise AttributeError because code don't want us to use |
|
44239
369a4e06fd30
Added another test case for kwonly methods
Christian Heimes <christian@cheimes.de>
parents:
44234
diff
changeset
|
250 # private methods |
|
369a4e06fd30
Added another test case for kwonly methods
Christian Heimes <christian@cheimes.de>
parents:
44234
diff
changeset
|
251 self.assertRaises(AttributeError, |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
252 xmlrpc.server.resolve_dotted_attribute, str, '__add') |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54564
diff
changeset
|
253 self.assertTrue(xmlrpc.server.resolve_dotted_attribute(str, 'title')) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
254 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
255 class DateTimeTestCase(unittest.TestCase): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
256 def test_default(self): |
|
85090
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
257 with mock.patch('time.localtime') as localtime_mock: |
|
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
258 time_struct = time.struct_time( |
|
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
259 [2013, 7, 15, 0, 24, 49, 0, 196, 0]) |
|
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
260 localtime_mock.return_value = time_struct |
|
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
261 localtime = time.localtime() |
|
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
262 t = xmlrpclib.DateTime() |
|
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
263 self.assertEqual(str(t), |
|
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
264 time.strftime("%Y%m%dT%H:%M:%S", localtime)) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
265 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
266 def test_time(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
267 d = 1181399930.036952 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
268 t = xmlrpclib.DateTime(d) |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
269 self.assertEqual(str(t), |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
270 time.strftime("%Y%m%dT%H:%M:%S", time.localtime(d))) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
271 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
272 def test_time_tuple(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
273 d = (2007,6,9,10,38,50,5,160,0) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
274 t = xmlrpclib.DateTime(d) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
275 self.assertEqual(str(t), '20070609T10:38:50') |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
276 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
277 def test_time_struct(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
278 d = time.localtime(1181399930.036952) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
279 t = xmlrpclib.DateTime(d) |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
280 self.assertEqual(str(t), time.strftime("%Y%m%dT%H:%M:%S", d)) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
281 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
282 def test_datetime_datetime(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
283 d = datetime.datetime(2007,1,2,3,4,5) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
284 t = xmlrpclib.DateTime(d) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
285 self.assertEqual(str(t), '20070102T03:04:05') |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
286 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
287 def test_repr(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
288 d = datetime.datetime(2007,1,2,3,4,5) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
289 t = xmlrpclib.DateTime(d) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
290 val ="<DateTime '20070102T03:04:05' at %x>" % id(t) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
291 self.assertEqual(repr(t), val) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
292 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
293 def test_decode(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
294 d = ' 20070908T07:11:13 ' |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
295 t1 = xmlrpclib.DateTime() |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
296 t1.decode(d) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
297 tref = xmlrpclib.DateTime(datetime.datetime(2007,9,8,7,11,13)) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
298 self.assertEqual(t1, tref) |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
299 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
300 t2 = xmlrpclib._datetime(d) |
|
85090
28c756093a63
#18453: fix unused variables in test_xmlrpc. Patch by Vajrasky Kok.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
77974
diff
changeset
|
301 self.assertEqual(t2, tref) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
302 |
|
73213
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
303 def test_comparison(self): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
304 now = datetime.datetime.now() |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
305 dtime = xmlrpclib.DateTime(now.timetuple()) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
306 |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
307 # datetime vs. DateTime |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
308 self.assertTrue(dtime == now) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
309 self.assertTrue(now == dtime) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
310 then = now + datetime.timedelta(seconds=4) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
311 self.assertTrue(then >= dtime) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
312 self.assertTrue(dtime < then) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
313 |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
314 # str vs. DateTime |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
315 dstr = now.strftime("%Y%m%dT%H:%M:%S") |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
316 self.assertTrue(dtime == dstr) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
317 self.assertTrue(dstr == dtime) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
318 dtime_then = xmlrpclib.DateTime(then.timetuple()) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
319 self.assertTrue(dtime_then >= dstr) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
320 self.assertTrue(dstr < dtime_then) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
321 |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
322 # some other types |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
323 dbytes = dstr.encode('ascii') |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
324 dtuple = now.timetuple() |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
325 with self.assertRaises(TypeError): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
326 dtime == 1970 |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
327 with self.assertRaises(TypeError): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
328 dtime != dbytes |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
329 with self.assertRaises(TypeError): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
330 dtime == bytearray(dbytes) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
331 with self.assertRaises(TypeError): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
332 dtime != dtuple |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
333 with self.assertRaises(TypeError): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
334 dtime < float(1970) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
335 with self.assertRaises(TypeError): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
336 dtime > dbytes |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
337 with self.assertRaises(TypeError): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
338 dtime <= bytearray(dbytes) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
339 with self.assertRaises(TypeError): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
340 dtime >= dtuple |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
341 |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
342 class BinaryTestCase(unittest.TestCase): |
|
42916
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
343 |
|
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
344 # XXX What should str(Binary(b"\xff")) return? I'm chosing "\xff" |
|
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
345 # for now (i.e. interpreting the binary data as Latin-1-encoded |
|
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
346 # text). But this feels very unsatisfactory. Perhaps we should |
|
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
347 # only define repr(), and return r"Binary(b'\xff')" instead? |
|
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
348 |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
349 def test_default(self): |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
350 t = xmlrpclib.Binary() |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
351 self.assertEqual(str(t), '') |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
352 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
353 def test_string(self): |
|
42916
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
354 d = b'\x01\x02\x03abc123\xff\xfe' |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
355 t = xmlrpclib.Binary(d) |
|
42916
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
356 self.assertEqual(str(t), str(d, "latin-1")) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
357 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
358 def test_decode(self): |
|
42916
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
359 d = b'\x01\x02\x03abc123\xff\xfe' |
|
54564
18d823e8b602
#3613: add base64.encodebytes and decodebytes as the new spelling of encodestring and decodestring; deprecate the latter.
Georg Brandl <georg@python.org>
parents:
53646
diff
changeset
|
360 de = base64.encodebytes(d) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
361 t1 = xmlrpclib.Binary() |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
362 t1.decode(de) |
|
42916
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
363 self.assertEqual(str(t1), str(d, "latin-1")) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
364 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
365 t2 = xmlrpclib._binary(de) |
|
42916
9fb8331cec2c
Force test_xmlrpc to pass. I'm not happy with how I did this, but I don't
Guido van Rossum <guido@python.org>
parents:
42776
diff
changeset
|
366 self.assertEqual(str(t2), str(d, "latin-1")) |
|
42309
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
367 |
|
bd6acfdb47d2
Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
368 |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
369 ADDR = PORT = URL = None |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
370 |
|
44999
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
371 # The evt is set twice. First when the server is ready to serve. |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
372 # Second when the server has been shutdown. The user must clear |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
373 # the event after it has been set the first time to catch the second set. |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
374 def http_server(evt, numrequests, requestHandler=None): |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
375 class TestInstanceClass: |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
376 def div(self, x, y): |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
377 return x // y |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
378 |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
379 def _methodHelp(self, name): |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
380 if name == 'div': |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
381 return 'This is the div function' |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
382 |
|
86210
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
383 class Fixture: |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
384 @staticmethod |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
385 def getData(): |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
386 return '42' |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
387 |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
388 def my_function(): |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
389 '''This is my function''' |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
390 return True |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
391 |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
392 class MyXMLRPCServer(xmlrpc.server.SimpleXMLRPCServer): |
|
46161
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46034
diff
changeset
|
393 def get_request(self): |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46034
diff
changeset
|
394 # Ensure the socket is always non-blocking. On Linux, socket |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46034
diff
changeset
|
395 # attributes are not inherited like they are on *BSD and Windows. |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46034
diff
changeset
|
396 s, port = self.socket.accept() |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46034
diff
changeset
|
397 s.setblocking(True) |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46034
diff
changeset
|
398 return s, port |
|
848160d10780
Merged revisions 61981,61984-61987,61992-61993,61997-62000 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46034
diff
changeset
|
399 |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
400 if not requestHandler: |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
401 requestHandler = xmlrpc.server.SimpleXMLRPCRequestHandler |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
402 serv = MyXMLRPCServer(("localhost", 0), requestHandler, |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
403 logRequests=False, bind_and_activate=False) |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
404 try: |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
405 serv.server_bind() |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
406 global ADDR, PORT, URL |
|
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
407 ADDR, PORT = serv.socket.getsockname() |
|
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
408 #connect to IP address directly. This avoids socket.create_connection() |
|
72985
e19ccbbe70dd
Remove duplication.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
72451
diff
changeset
|
409 #trying to connect to "localhost" using all address families, which |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
410 #causes slowdown e.g. on vista which supports AF_INET6. The server listens |
|
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
411 #on AF_INET only. |
|
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
412 URL = "http://%s:%d"%(ADDR, PORT) |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
413 serv.server_activate() |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
414 serv.register_introspection_functions() |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
415 serv.register_multicall_functions() |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
416 serv.register_function(pow) |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
417 serv.register_function(lambda x,y: x+y, 'add') |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
418 serv.register_function(my_function) |
|
86210
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
419 testInstance = TestInstanceClass() |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
420 serv.register_instance(testInstance, allow_dotted_names=True) |
|
44999
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
421 evt.set() |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
422 |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
423 # handle up to 'numrequests' requests |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
424 while numrequests > 0: |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
425 serv.handle_request() |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
426 numrequests -= 1 |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
427 |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
428 except socket.timeout: |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
429 pass |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
430 finally: |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
431 serv.socket.close() |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
432 PORT = None |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
433 evt.set() |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
434 |
|
57751
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
435 def http_multi_server(evt, numrequests, requestHandler=None): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
436 class TestInstanceClass: |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
437 def div(self, x, y): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
438 return x // y |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
439 |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
440 def _methodHelp(self, name): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
441 if name == 'div': |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
442 return 'This is the div function' |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
443 |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
444 def my_function(): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
445 '''This is my function''' |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
446 return True |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
447 |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
448 class MyXMLRPCServer(xmlrpc.server.MultiPathXMLRPCServer): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
449 def get_request(self): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
450 # Ensure the socket is always non-blocking. On Linux, socket |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
451 # attributes are not inherited like they are on *BSD and Windows. |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
452 s, port = self.socket.accept() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
453 s.setblocking(True) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
454 return s, port |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
455 |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
456 if not requestHandler: |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
457 requestHandler = xmlrpc.server.SimpleXMLRPCRequestHandler |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
458 class MyRequestHandler(requestHandler): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
459 rpc_paths = [] |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
460 |
|
73213
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
461 class BrokenDispatcher: |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
462 def _marshaled_dispatch(self, data, dispatch_method=None, path=None): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
463 raise RuntimeError("broken dispatcher") |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
464 |
|
57751
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
465 serv = MyXMLRPCServer(("localhost", 0), MyRequestHandler, |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
466 logRequests=False, bind_and_activate=False) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
467 serv.socket.settimeout(3) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
468 serv.server_bind() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
469 try: |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
470 global ADDR, PORT, URL |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
471 ADDR, PORT = serv.socket.getsockname() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
472 #connect to IP address directly. This avoids socket.create_connection() |
|
72985
e19ccbbe70dd
Remove duplication.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
72451
diff
changeset
|
473 #trying to connect to "localhost" using all address families, which |
|
57751
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
474 #causes slowdown e.g. on vista which supports AF_INET6. The server listens |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
475 #on AF_INET only. |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
476 URL = "http://%s:%d"%(ADDR, PORT) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
477 serv.server_activate() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
478 paths = ["/foo", "/foo/bar"] |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
479 for path in paths: |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
480 d = serv.add_dispatcher(path, xmlrpc.server.SimpleXMLRPCDispatcher()) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
481 d.register_introspection_functions() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
482 d.register_multicall_functions() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
483 serv.get_dispatcher(paths[0]).register_function(pow) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
484 serv.get_dispatcher(paths[1]).register_function(lambda x,y: x+y, 'add') |
|
73213
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
485 serv.add_dispatcher("/is/broken", BrokenDispatcher()) |
|
57751
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
486 evt.set() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
487 |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
488 # handle up to 'numrequests' requests |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
489 while numrequests > 0: |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
490 serv.handle_request() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
491 numrequests -= 1 |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
492 |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
493 except socket.timeout: |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
494 pass |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
495 finally: |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
496 serv.socket.close() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
497 PORT = None |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
498 evt.set() |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
499 |
|
44999
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
500 # This function prevents errors like: |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
501 # <ProtocolError for localhost:57527/RPC2: 500 Internal Server Error> |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
502 def is_unavailable_exception(e): |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
503 '''Returns True if the given ProtocolError is the product of a server-side |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
504 exception caused by the 'temporarily unavailable' response sometimes |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
505 given by operations on non-blocking sockets.''' |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
506 |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
507 # sometimes we get a -1 error code and/or empty headers |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
508 try: |
|
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
509 if e.errcode == -1 or e.headers is None: |
|
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
510 return True |
|
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
511 exc_mess = e.headers.get('X-exception') |
|
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
512 except AttributeError: |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
513 # Ignore OSErrors here. |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
514 exc_mess = str(e) |
|
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
515 |
|
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
516 if exc_mess and 'temporarily unavailable' in exc_mess.lower(): |
|
44999
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
517 return True |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
518 |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
519 def make_request_and_skipIf(condition, reason): |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
520 # If we skip the test, we have to make a request because the |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
521 # the server created in setUp blocks expecting one to come in. |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
522 if not condition: |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
523 return lambda func: func |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
524 def decorator(func): |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
525 def make_request_and_skip(self): |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
526 try: |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
527 xmlrpclib.ServerProxy(URL).my_function() |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
528 except (xmlrpclib.ProtocolError, OSError) as e: |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
529 if not is_unavailable_exception(e): |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
530 raise |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
531 raise unittest.SkipTest(reason) |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
532 return make_request_and_skip |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
533 return decorator |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
534 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
535 @unittest.skipUnless(threading, 'Threading required for this test.') |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
536 class BaseServerTestCase(unittest.TestCase): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
537 requestHandler = None |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
538 request_count = 1 |
|
57751
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
539 threadFunc = staticmethod(http_server) |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
540 |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
541 def setUp(self): |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
542 # enable traceback reporting |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
543 xmlrpc.server.SimpleXMLRPCServer._send_traceback_header = True |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
544 |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
545 self.evt = threading.Event() |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
546 # start server thread to handle requests |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
547 serv_args = (self.evt, self.request_count, self.requestHandler) |
|
57751
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
548 threading.Thread(target=self.threadFunc, args=serv_args).start() |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
549 |
|
44999
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
550 # wait for the server to be ready |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
551 self.evt.wait() |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
552 self.evt.clear() |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
553 |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
554 def tearDown(self): |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
555 # wait on the server thread to terminate |
|
75017
cd67740ce653
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents:
73214
diff
changeset
|
556 self.evt.wait() |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
557 |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
558 # disable traceback reporting |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
559 xmlrpc.server.SimpleXMLRPCServer._send_traceback_header = False |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
560 |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
561 class SimpleServerTestCase(BaseServerTestCase): |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
562 def test_simple1(self): |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
563 try: |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
564 p = xmlrpclib.ServerProxy(URL) |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
565 self.assertEqual(p.pow(6,8), 6**8) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
566 except (xmlrpclib.ProtocolError, OSError) as e: |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
567 # ignore failures due to non-blocking socket 'unavailable' errors |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
568 if not is_unavailable_exception(e): |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
569 # protocol error; provide additional information in test output |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
570 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
571 |
|
52668
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
572 def test_nonascii(self): |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
573 start_string = 'P\N{LATIN SMALL LETTER Y WITH CIRCUMFLEX}t' |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
574 end_string = 'h\N{LATIN SMALL LETTER O WITH HORN}n' |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
575 try: |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
576 p = xmlrpclib.ServerProxy(URL) |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
577 self.assertEqual(p.add(start_string, end_string), |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
578 start_string + end_string) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
579 except (xmlrpclib.ProtocolError, OSError) as e: |
|
52668
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
580 # ignore failures due to non-blocking socket 'unavailable' errors |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
581 if not is_unavailable_exception(e): |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
582 # protocol error; provide additional information in test output |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
583 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
584 |
|
44782
ca2683a67943
Merged revisions 60080-60089,60091-60093 via svnmerge from
Georg Brandl <georg@python.org>
parents:
44239
diff
changeset
|
585 # [ch] The test 404 is causing lots of false alarms. |
|
ca2683a67943
Merged revisions 60080-60089,60091-60093 via svnmerge from
Georg Brandl <georg@python.org>
parents:
44239
diff
changeset
|
586 def XXXtest_404(self): |
|
47318
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47288
diff
changeset
|
587 # send POST with http.client, it should return 404 header and |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
588 # 'Not Found' message. |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
589 conn = httplib.client.HTTPConnection(ADDR, PORT) |
|
44228
17448e5e9671
Disabled test_404, see issue #1572
Christian Heimes <christian@cheimes.de>
parents:
44226
diff
changeset
|
590 conn.request('POST', '/this-is-not-valid') |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
591 response = conn.getresponse() |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
592 conn.close() |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
593 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
594 self.assertEqual(response.status, 404) |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
595 self.assertEqual(response.reason, 'Not Found') |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
596 |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
597 def test_introspection1(self): |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
598 expected_methods = set(['pow', 'div', 'my_function', 'add', |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
599 'system.listMethods', 'system.methodHelp', |
|
86210
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
600 'system.methodSignature', 'system.multicall', |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
601 'Fixture']) |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
602 try: |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
603 p = xmlrpclib.ServerProxy(URL) |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
604 meth = p.system.listMethods() |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
605 self.assertEqual(set(meth), expected_methods) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
606 except (xmlrpclib.ProtocolError, OSError) as e: |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
607 # ignore failures due to non-blocking socket 'unavailable' errors |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
608 if not is_unavailable_exception(e): |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
609 # protocol error; provide additional information in test output |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
610 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
611 |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
612 |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
613 def test_introspection2(self): |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
614 try: |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
615 # test _methodHelp() |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
616 p = xmlrpclib.ServerProxy(URL) |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
617 divhelp = p.system.methodHelp('div') |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
618 self.assertEqual(divhelp, 'This is the div function') |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
619 except (xmlrpclib.ProtocolError, OSError) as e: |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
620 # ignore failures due to non-blocking socket 'unavailable' errors |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
621 if not is_unavailable_exception(e): |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
622 # protocol error; provide additional information in test output |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
623 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
624 |
|
59091
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
625 @make_request_and_skipIf(sys.flags.optimize >= 2, |
|
8d3ff2fbbe4b
Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
58473
diff
changeset
|
626 "Docstrings are omitted with -O2 and above") |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
627 def test_introspection3(self): |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
628 try: |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
629 # test native doc |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
630 p = xmlrpclib.ServerProxy(URL) |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
631 myfunction = p.system.methodHelp('my_function') |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
632 self.assertEqual(myfunction, 'This is my function') |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
633 except (xmlrpclib.ProtocolError, OSError) as e: |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
634 # ignore failures due to non-blocking socket 'unavailable' errors |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
635 if not is_unavailable_exception(e): |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
636 # protocol error; provide additional information in test output |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
637 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
638 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
639 def test_introspection4(self): |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
640 # the SimpleXMLRPCServer doesn't support signatures, but |
|
42954
27f0289b6835
Merge the trunk changes in. Breaks socket.ssl for now.
Thomas Wouters <thomas@python.org>
parents:
42916
diff
changeset
|
641 # at least check that we can try making the call |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
642 try: |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
643 p = xmlrpclib.ServerProxy(URL) |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
644 divsig = p.system.methodSignature('div') |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
645 self.assertEqual(divsig, 'signatures not supported') |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
646 except (xmlrpclib.ProtocolError, OSError) as e: |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
647 # ignore failures due to non-blocking socket 'unavailable' errors |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
648 if not is_unavailable_exception(e): |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
649 # protocol error; provide additional information in test output |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
650 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
651 |
|
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
652 def test_multicall(self): |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
653 try: |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
654 p = xmlrpclib.ServerProxy(URL) |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
655 multicall = xmlrpclib.MultiCall(p) |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
656 multicall.add(2,3) |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
657 multicall.pow(6,8) |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
658 multicall.div(127,42) |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
659 add_result, pow_result, div_result = multicall() |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
660 self.assertEqual(add_result, 2+3) |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
661 self.assertEqual(pow_result, 6**8) |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
662 self.assertEqual(div_result, 127//42) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
663 except (xmlrpclib.ProtocolError, OSError) as e: |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
664 # ignore failures due to non-blocking socket 'unavailable' errors |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
665 if not is_unavailable_exception(e): |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
666 # protocol error; provide additional information in test output |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
667 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
668 |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
669 def test_non_existing_multicall(self): |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
670 try: |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
671 p = xmlrpclib.ServerProxy(URL) |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
672 multicall = xmlrpclib.MultiCall(p) |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
673 multicall.this_is_not_exists() |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
674 result = multicall() |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
675 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
676 # result.results contains; |
|
46336
56e49952d1a4
Bug #2565: The repr() of type objects now calls them 'class',
Martin v. Löwis <martin@v.loewis.de>
parents:
46161
diff
changeset
|
677 # [{'faultCode': 1, 'faultString': '<class \'exceptions.Exception\'>:' |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
678 # 'method "this_is_not_exists" is not supported'>}] |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
679 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
680 self.assertEqual(result.results[0]['faultCode'], 1) |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
681 self.assertEqual(result.results[0]['faultString'], |
|
46336
56e49952d1a4
Bug #2565: The repr() of type objects now calls them 'class',
Martin v. Löwis <martin@v.loewis.de>
parents:
46161
diff
changeset
|
682 '<class \'Exception\'>:method "this_is_not_exists" ' |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
683 'is not supported') |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
684 except (xmlrpclib.ProtocolError, OSError) as e: |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
685 # ignore failures due to non-blocking socket 'unavailable' errors |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
686 if not is_unavailable_exception(e): |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
687 # protocol error; provide additional information in test output |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
688 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
689 |
|
46034
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
690 def test_dotted_attribute(self): |
|
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
691 # Raises an AttributeError because private methods are not allowed. |
|
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
692 self.assertRaises(AttributeError, |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
693 xmlrpc.server.resolve_dotted_attribute, str, '__add') |
|
46034
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
694 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54564
diff
changeset
|
695 self.assertTrue(xmlrpc.server.resolve_dotted_attribute(str, 'title')) |
|
46034
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
696 # Get the test to run faster by sending a request with test_simple1. |
|
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
697 # This avoids waiting for the socket timeout. |
|
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
698 self.test_simple1() |
|
0a485593ae1c
Merged revisions 61724-61725,61731-61735,61737,61739,61741,61743-61744,61753,61761,61765-61767,61769,61773,61776-61778,61780-61783,61788,61793,61796,61807,61813 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
699 |
|
86210
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
700 def test_allow_dotted_names_true(self): |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
701 # XXX also need allow_dotted_names_false test. |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
702 server = xmlrpclib.ServerProxy("http://%s:%d/RPC2" % (ADDR, PORT)) |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
703 data = server.Fixture.getData() |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
704 self.assertEqual(data, '42') |
|
a4515186bf9c
#19192: Give up on time.xmlrpc.com as an xmlrpc network test.
R David Murray <rdmurray@bitdance.com>
parents:
85091
diff
changeset
|
705 |
|
72451
5ceab07bcd02
Issue #12931: Add a test with Unicode URI to test_xmlrpc
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68257
diff
changeset
|
706 def test_unicode_host(self): |
|
5ceab07bcd02
Issue #12931: Add a test with Unicode URI to test_xmlrpc
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68257
diff
changeset
|
707 server = xmlrpclib.ServerProxy("http://%s:%d/RPC2" % (ADDR, PORT)) |
|
5ceab07bcd02
Issue #12931: Add a test with Unicode URI to test_xmlrpc
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68257
diff
changeset
|
708 self.assertEqual(server.add("a", "\xe9"), "a\xe9") |
|
5ceab07bcd02
Issue #12931: Add a test with Unicode URI to test_xmlrpc
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68257
diff
changeset
|
709 |
|
75017
cd67740ce653
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents:
73214
diff
changeset
|
710 def test_partial_post(self): |
|
cd67740ce653
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents:
73214
diff
changeset
|
711 # Check that a partial POST doesn't make the server loop: issue #14001. |
|
cd67740ce653
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents:
73214
diff
changeset
|
712 conn = http.client.HTTPConnection(ADDR, PORT) |
|
cd67740ce653
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents:
73214
diff
changeset
|
713 conn.request('POST', '/RPC2 HTTP/1.0\r\nContent-Length: 100\r\n\r\nbye') |
|
cd67740ce653
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents:
73214
diff
changeset
|
714 conn.close() |
|
cd67740ce653
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents:
73214
diff
changeset
|
715 |
|
cd67740ce653
Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents:
73214
diff
changeset
|
716 |
|
57751
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
717 class MultiPathServerTestCase(BaseServerTestCase): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
718 threadFunc = staticmethod(http_multi_server) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
719 request_count = 2 |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
720 def test_path1(self): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
721 p = xmlrpclib.ServerProxy(URL+"/foo") |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
722 self.assertEqual(p.pow(6,8), 6**8) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
723 self.assertRaises(xmlrpclib.Fault, p.add, 6, 8) |
|
73213
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
724 |
|
57751
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
725 def test_path2(self): |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
726 p = xmlrpclib.ServerProxy(URL+"/foo/bar") |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
727 self.assertEqual(p.add(6,8), 6+8) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
728 self.assertRaises(xmlrpclib.Fault, p.pow, 6, 8) |
|
7eb050c0e654
Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56986
diff
changeset
|
729 |
|
73213
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
730 def test_path3(self): |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
731 p = xmlrpclib.ServerProxy(URL+"/is/broken") |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
732 self.assertRaises(xmlrpclib.Fault, p.add, 6, 8) |
|
f3d454b20b35
Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
72985
diff
changeset
|
733 |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
734 #A test case that verifies that a server using the HTTP/1.1 keep-alive mechanism |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
735 #does indeed serve subsequent requests on the same connection |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
736 class BaseKeepaliveServerTestCase(BaseServerTestCase): |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
737 #a request handler that supports keep-alive and logs requests into a |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
738 #class variable |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
739 class RequestHandler(xmlrpc.server.SimpleXMLRPCRequestHandler): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
740 parentClass = xmlrpc.server.SimpleXMLRPCRequestHandler |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
741 protocol_version = 'HTTP/1.1' |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
742 myRequests = [] |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
743 def handle(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
744 self.myRequests.append([]) |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
745 self.reqidx = len(self.myRequests)-1 |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
746 return self.parentClass.handle(self) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
747 def handle_one_request(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
748 result = self.parentClass.handle_one_request(self) |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
749 self.myRequests[self.reqidx].append(self.raw_requestline) |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
750 return result |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
751 |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
752 requestHandler = RequestHandler |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
753 def setUp(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
754 #clear request log |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
755 self.RequestHandler.myRequests = [] |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
756 return BaseServerTestCase.setUp(self) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
757 |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
758 #A test case that verifies that a server using the HTTP/1.1 keep-alive mechanism |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
759 #does indeed serve subsequent requests on the same connection |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
760 class KeepaliveServerTestCase1(BaseKeepaliveServerTestCase): |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
761 def test_two(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
762 p = xmlrpclib.ServerProxy(URL) |
|
55219
0c812870a975
merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55028
diff
changeset
|
763 #do three requests. |
|
0c812870a975
merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55028
diff
changeset
|
764 self.assertEqual(p.pow(6,8), 6**8) |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
765 self.assertEqual(p.pow(6,8), 6**8) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
766 self.assertEqual(p.pow(6,8), 6**8) |
|
67298
dba9b9c7a2db
test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66581
diff
changeset
|
767 p("close")() |
|
55219
0c812870a975
merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55028
diff
changeset
|
768 |
|
0c812870a975
merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55028
diff
changeset
|
769 #they should have all been handled by a single request handler |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
770 self.assertEqual(len(self.RequestHandler.myRequests), 1) |
|
55219
0c812870a975
merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55028
diff
changeset
|
771 |
|
0c812870a975
merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55028
diff
changeset
|
772 #check that we did at least two (the third may be pending append |
|
0c812870a975
merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55028
diff
changeset
|
773 #due to thread scheduling) |
|
0c812870a975
merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55028
diff
changeset
|
774 self.assertGreaterEqual(len(self.RequestHandler.myRequests[-1]), 2) |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
775 |
|
67298
dba9b9c7a2db
test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66581
diff
changeset
|
776 |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
777 #test special attribute access on the serverproxy, through the __call__ |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
778 #function. |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
779 class KeepaliveServerTestCase2(BaseKeepaliveServerTestCase): |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
780 #ask for two keepalive requests to be handled. |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
781 request_count=2 |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
782 |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
783 def test_close(self): |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
784 p = xmlrpclib.ServerProxy(URL) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
785 #do some requests with close. |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
786 self.assertEqual(p.pow(6,8), 6**8) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
787 self.assertEqual(p.pow(6,8), 6**8) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
788 self.assertEqual(p.pow(6,8), 6**8) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
789 p("close")() #this should trigger a new keep-alive request |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
790 self.assertEqual(p.pow(6,8), 6**8) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
791 self.assertEqual(p.pow(6,8), 6**8) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
792 self.assertEqual(p.pow(6,8), 6**8) |
|
67298
dba9b9c7a2db
test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66581
diff
changeset
|
793 p("close")() |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
794 |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
795 #they should have all been two request handlers, each having logged at least |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
796 #two complete requests |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
797 self.assertEqual(len(self.RequestHandler.myRequests), 2) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
798 self.assertGreaterEqual(len(self.RequestHandler.myRequests[-1]), 2) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
799 self.assertGreaterEqual(len(self.RequestHandler.myRequests[-2]), 2) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
800 |
|
67298
dba9b9c7a2db
test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66581
diff
changeset
|
801 |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
802 def test_transport(self): |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
803 p = xmlrpclib.ServerProxy(URL) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
804 #do some requests with close. |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
805 self.assertEqual(p.pow(6,8), 6**8) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
806 p("transport").close() #same as above, really. |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
807 self.assertEqual(p.pow(6,8), 6**8) |
|
67298
dba9b9c7a2db
test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66581
diff
changeset
|
808 p("close")() |
|
55233
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
809 self.assertEqual(len(self.RequestHandler.myRequests), 2) |
|
2b67cb925bb1
merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55219
diff
changeset
|
810 |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
811 #A test case that verifies that gzip encoding works in both directions |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
812 #(for a request and the response) |
|
84105
281857369a78
Spruce up test_xmlrpc by using ModuleNotFoundError and moving to
Brett Cannon <brett@python.org>
parents:
80933
diff
changeset
|
813 @unittest.skipIf(gzip is None, 'requires gzip') |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
814 class GzipServerTestCase(BaseServerTestCase): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
815 #a request handler that supports keep-alive and logs requests into a |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
816 #class variable |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
817 class RequestHandler(xmlrpc.server.SimpleXMLRPCRequestHandler): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
818 parentClass = xmlrpc.server.SimpleXMLRPCRequestHandler |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
819 protocol_version = 'HTTP/1.1' |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
820 |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
821 def do_POST(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
822 #store content of last request in class |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
823 self.__class__.content_length = int(self.headers["content-length"]) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
824 return self.parentClass.do_POST(self) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
825 requestHandler = RequestHandler |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
826 |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
827 class Transport(xmlrpclib.Transport): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
828 #custom transport, stores the response length for our perusal |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
829 fake_gzip = False |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
830 def parse_response(self, response): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
831 self.response_length=int(response.getheader("content-length", 0)) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
832 return xmlrpclib.Transport.parse_response(self, response) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
833 |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
834 def send_content(self, connection, body): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
835 if self.fake_gzip: |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
836 #add a lone gzip header to induce decode error remotely |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
837 connection.putheader("Content-Encoding", "gzip") |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
838 return xmlrpclib.Transport.send_content(self, connection, body) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
839 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
840 def setUp(self): |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
841 BaseServerTestCase.setUp(self) |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
842 |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
843 def test_gzip_request(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
844 t = self.Transport() |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
845 t.encode_threshold = None |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
846 p = xmlrpclib.ServerProxy(URL, transport=t) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
847 self.assertEqual(p.pow(6,8), 6**8) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
848 a = self.RequestHandler.content_length |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
849 t.encode_threshold = 0 #turn on request encoding |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
850 self.assertEqual(p.pow(6,8), 6**8) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
851 b = self.RequestHandler.content_length |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
852 self.assertTrue(a>b) |
|
67298
dba9b9c7a2db
test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66581
diff
changeset
|
853 p("close")() |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
854 |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
855 def test_bad_gzip_request(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
856 t = self.Transport() |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
857 t.encode_threshold = None |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
858 t.fake_gzip = True |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
859 p = xmlrpclib.ServerProxy(URL, transport=t) |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66310
diff
changeset
|
860 cm = self.assertRaisesRegex(xmlrpclib.ProtocolError, |
|
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66310
diff
changeset
|
861 re.compile(r"\b400\b")) |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
862 with cm: |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
863 p.pow(6, 8) |
|
67298
dba9b9c7a2db
test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66581
diff
changeset
|
864 p("close")() |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
865 |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
866 def test_gsip_response(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
867 t = self.Transport() |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
868 p = xmlrpclib.ServerProxy(URL, transport=t) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
869 old = self.requestHandler.encode_threshold |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
870 self.requestHandler.encode_threshold = None #no encoding |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
871 self.assertEqual(p.pow(6,8), 6**8) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
872 a = t.response_length |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
873 self.requestHandler.encode_threshold = 0 #always encode |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
874 self.assertEqual(p.pow(6,8), 6**8) |
|
67298
dba9b9c7a2db
test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66581
diff
changeset
|
875 p("close")() |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
876 b = t.response_length |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
877 self.requestHandler.encode_threshold = old |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
878 self.assertTrue(a>b) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
879 |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
880 #Test special attributes of the ServerProxy object |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
881 class ServerProxyTestCase(unittest.TestCase): |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
882 def setUp(self): |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
883 unittest.TestCase.setUp(self) |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
884 if threading: |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
885 self.url = URL |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
886 else: |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
887 # Without threading, http_server() and http_multi_server() will not |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
888 # be executed and URL is still equal to None. 'http://' is a just |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
889 # enough to choose the scheme (HTTP) |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
890 self.url = 'http://' |
|
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
891 |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
892 def test_close(self): |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
893 p = xmlrpclib.ServerProxy(self.url) |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
894 self.assertEqual(p('close')(), None) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
895 |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
896 def test_transport(self): |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
897 t = xmlrpclib.Transport() |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
898 p = xmlrpclib.ServerProxy(self.url, transport=t) |
|
55028
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
899 self.assertEqual(p('transport'), t) |
|
366c8a4e5a46
http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
55593
diff
changeset
|
900 |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
901 # This is a contrived way to make a failure occur on the server side |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
902 # in order to test the _send_traceback_header flag on the server |
|
47635
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47622
diff
changeset
|
903 class FailingMessageClass(http.client.HTTPMessage): |
|
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47622
diff
changeset
|
904 def get(self, key, failobj=None): |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
905 key = key.lower() |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
906 if key == 'content-length': |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
907 return 'I am broken' |
|
47635
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47622
diff
changeset
|
908 return super().get(key, failobj) |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
909 |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
910 |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59091
diff
changeset
|
911 @unittest.skipUnless(threading, 'Threading required for this test.') |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
912 class FailingServerTestCase(unittest.TestCase): |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
913 def setUp(self): |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
914 self.evt = threading.Event() |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
915 # start server thread to handle requests |
|
43750
b4e8e523b882
Patch 1373 by Adam Hupp.
Guido van Rossum <guido@python.org>
parents:
43095
diff
changeset
|
916 serv_args = (self.evt, 1) |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
917 threading.Thread(target=http_server, args=serv_args).start() |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
918 |
|
44999
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
919 # wait for the server to be ready |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
920 self.evt.wait() |
|
7c02182e2979
Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44782
diff
changeset
|
921 self.evt.clear() |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
922 |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
923 def tearDown(self): |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
924 # wait on the server thread to terminate |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
925 self.evt.wait() |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
926 # reset flag |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
927 xmlrpc.server.SimpleXMLRPCServer._send_traceback_header = False |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
928 # reset message class |
|
47635
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47622
diff
changeset
|
929 default_class = http.client.HTTPMessage |
|
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47622
diff
changeset
|
930 xmlrpc.server.SimpleXMLRPCRequestHandler.MessageClass = default_class |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
931 |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
932 def test_basic(self): |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
933 # check that flag is false by default |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
934 flagval = xmlrpc.server.SimpleXMLRPCServer._send_traceback_header |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
935 self.assertEqual(flagval, False) |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
936 |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
937 # enable traceback reporting |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
938 xmlrpc.server.SimpleXMLRPCServer._send_traceback_header = True |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
939 |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
940 # test a call that shouldn't fail just as a smoke test |
|
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
941 try: |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
942 p = xmlrpclib.ServerProxy(URL) |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42678
diff
changeset
|
943 self.assertEqual(p.pow(6,8), 6**8) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
944 except (xmlrpclib.ProtocolError, OSError) as e: |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
945 # ignore failures due to non-blocking socket 'unavailable' errors |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
946 if not is_unavailable_exception(e): |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
947 # protocol error; provide additional information in test output |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
948 self.fail("%s\n%s" % (e, getattr(e, "headers", ""))) |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
949 |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
950 def test_fail_no_info(self): |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
951 # use the broken message class |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
952 xmlrpc.server.SimpleXMLRPCRequestHandler.MessageClass = FailingMessageClass |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
953 |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
954 try: |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
955 p = xmlrpclib.ServerProxy(URL) |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
956 p.pow(6,8) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
957 except (xmlrpclib.ProtocolError, OSError) as e: |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
958 # ignore failures due to non-blocking socket 'unavailable' errors |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
959 if not is_unavailable_exception(e) and hasattr(e, "headers"): |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
960 # The two server-side error headers shouldn't be sent back in this case |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
961 self.assertTrue(e.headers.get("X-exception") is None) |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
962 self.assertTrue(e.headers.get("X-traceback") is None) |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
963 else: |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
964 self.fail('ProtocolError not raised') |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
965 |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
966 def test_fail_with_info(self): |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
967 # use the broken message class |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
968 xmlrpc.server.SimpleXMLRPCRequestHandler.MessageClass = FailingMessageClass |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
969 |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
970 # Check that errors in the server send back exception/traceback |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
971 # info when flag is set |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
972 xmlrpc.server.SimpleXMLRPCServer._send_traceback_header = True |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
973 |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
974 try: |
|
50879
50f5c29fce26
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
975 p = xmlrpclib.ServerProxy(URL) |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
976 p.pow(6,8) |
|
80933
50d19c2fac82
Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
77974
diff
changeset
|
977 except (xmlrpclib.ProtocolError, OSError) as e: |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
978 # ignore failures due to non-blocking socket 'unavailable' errors |
|
45026
ebfbaa1051e2
Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45017
diff
changeset
|
979 if not is_unavailable_exception(e) and hasattr(e, "headers"): |
|
45017
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
980 # We should get error info in the response |
|
4725c84b0422
Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44999
diff
changeset
|
981 expected_err = "invalid literal for int() with base 10: 'I am broken'" |
|
47635
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47622
diff
changeset
|
982 self.assertEqual(e.headers.get("X-exception"), expected_err) |
|
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47622
diff
changeset
|
983 self.assertTrue(e.headers.get("X-traceback") is not None) |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
984 else: |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
985 self.fail('ProtocolError not raised') |
|
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
986 |
|
56746
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
987 |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
988 @contextlib.contextmanager |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
989 def captured_stdout(encoding='utf-8'): |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
990 """A variation on support.captured_stdout() which gives a text stream |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
991 having a `buffer` attribute. |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
992 """ |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
993 import io |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
994 orig_stdout = sys.stdout |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
995 sys.stdout = io.TextIOWrapper(io.BytesIO(), encoding=encoding) |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
996 try: |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
997 yield sys.stdout |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
998 finally: |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
999 sys.stdout = orig_stdout |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
1000 |
|
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
1001 |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1002 class CGIHandlerTestCase(unittest.TestCase): |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1003 def setUp(self): |
|
47288
346a99df5889
Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
1004 self.cgi = xmlrpc.server.CGIXMLRPCRequestHandler() |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1005 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1006 def tearDown(self): |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1007 self.cgi = None |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1008 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1009 def test_cgi_get(self): |
|
53492
e0d45d32fb82
Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
52668
diff
changeset
|
1010 with support.EnvironmentVarGuard() as env: |
|
53646
5c55b9c80846
Merged revisions 72167 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
53492
diff
changeset
|
1011 env['REQUEST_METHOD'] = 'GET' |
|
53492
e0d45d32fb82
Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
52668
diff
changeset
|
1012 # if the method is GET and no request_text is given, it runs handle_get |
|
e0d45d32fb82
Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
52668
diff
changeset
|
1013 # get sysout output |
|
56746
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
1014 with captured_stdout(encoding=self.cgi.encoding) as data_out: |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1015 self.cgi.handle_request() |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1016 |
|
53492
e0d45d32fb82
Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
52668
diff
changeset
|
1017 # parse Status header |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1018 data_out.seek(0) |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1019 handle = data_out.read() |
|
53492
e0d45d32fb82
Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
52668
diff
changeset
|
1020 status = handle.split()[1] |
|
e0d45d32fb82
Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
52668
diff
changeset
|
1021 message = ' '.join(handle.split()[2:4]) |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1022 |
|
53492
e0d45d32fb82
Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
52668
diff
changeset
|
1023 self.assertEqual(status, '400') |
|
e0d45d32fb82
Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
52668
diff
changeset
|
1024 self.assertEqual(message, 'Bad Request') |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1025 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1026 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1027 def test_cgi_xmlrpc_response(self): |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1028 data = """<?xml version='1.0'?> |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1029 <methodCall> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1030 <methodName>test_method</methodName> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1031 <params> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1032 <param> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1033 <value><string>foo</string></value> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1034 </param> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1035 <param> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1036 <value><string>bar</string></value> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1037 </param> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1038 </params> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1039 </methodCall> |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1040 """ |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1041 |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1042 with support.EnvironmentVarGuard() as env, \ |
|
56746
d3cf8eb87274
Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents:
56592
diff
changeset
|
1043 captured_stdout(encoding=self.cgi.encoding) as data_out, \ |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1044 support.captured_stdin() as data_in: |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1045 data_in.write(data) |
|
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1046 data_in.seek(0) |
|
53646
5c55b9c80846
Merged revisions 72167 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents:
53492
diff
changeset
|
1047 env['CONTENT_LENGTH'] = str(len(data)) |
|
52648
abf6dad7d64f
#5636: fix next -> __next__ in csv reader docs.
Georg Brandl <georg@python.org>
parents:
51594
diff
changeset
|
1048 self.cgi.handle_request() |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1049 data_out.seek(0) |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1050 |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1051 # will respond exception, if so, our goal is achieved ;) |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55344
diff
changeset
|
1052 handle = data_out.read() |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1053 |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
1054 # start with 44th char so as not to get http header, we just |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
1055 # need only xml |
|
44226
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1056 self.assertRaises(xmlrpclib.Fault, xmlrpclib.loads, handle[44:]) |
|
aad65a2424e3
Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44160
diff
changeset
|
1057 |
|
52668
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1058 # Also test the content-length returned by handle_request |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1059 # Using the same test method inorder to avoid all the datapassing |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1060 # boilerplate code. |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1061 # Test for bug: http://bugs.python.org/issue5040 |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1062 |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1063 content = handle[handle.find("<?xml"):] |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1064 |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66249
diff
changeset
|
1065 self.assertEqual( |
|
52668
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1066 int(re.search('Content-Length: (\d+)', handle).group(1)), |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1067 len(content)) |
|
cef8b8259ac9
Fix for issue5040. Adding support for unicode message passing and tests for unicode message and test for Content-Length.
Senthil Kumaran <orsenthil@gmail.com>
parents:
52648
diff
changeset
|
1068 |
|
42678
af6a7190cabc
Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42629
diff
changeset
|
1069 |
|
73907
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1070 class UseBuiltinTypesTestCase(unittest.TestCase): |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1071 |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1072 def test_use_builtin_types(self): |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1073 # SimpleXMLRPCDispatcher.__init__ accepts use_builtin_types, which |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1074 # makes all dispatch of binary data as bytes instances, and all |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1075 # dispatch of datetime argument as datetime.datetime instances. |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1076 self.log = [] |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1077 expected_bytes = b"my dog has fleas" |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1078 expected_date = datetime.datetime(2008, 5, 26, 18, 25, 12) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1079 marshaled = xmlrpclib.dumps((expected_bytes, expected_date), 'foobar') |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1080 def foobar(*args): |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1081 self.log.extend(args) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1082 handler = xmlrpc.server.SimpleXMLRPCDispatcher( |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1083 allow_none=True, encoding=None, use_builtin_types=True) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1084 handler.register_function(foobar) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1085 handler._marshaled_dispatch(marshaled) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1086 self.assertEqual(len(self.log), 2) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1087 mybytes, mydate = self.log |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1088 self.assertEqual(self.log, [expected_bytes, expected_date]) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1089 self.assertIs(type(mydate), datetime.datetime) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1090 self.assertIs(type(mybytes), bytes) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1091 |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1092 def test_cgihandler_has_use_builtin_types_flag(self): |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1093 handler = xmlrpc.server.CGIXMLRPCRequestHandler(use_builtin_types=True) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1094 self.assertTrue(handler.use_builtin_types) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1095 |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1096 def test_xmlrpcserver_has_use_builtin_types_flag(self): |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1097 server = xmlrpc.server.SimpleXMLRPCServer(("localhost", 0), |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1098 use_builtin_types=True) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1099 server.server_close() |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1100 self.assertTrue(server.use_builtin_types) |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1101 |
|
b3c1a504ebc1
Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73575
diff
changeset
|
1102 |
|
56986
a183c82b6289
Merged revisions 75962-75963 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
56746
diff
changeset
|
1103 @support.reap_threads |
|
20205
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
1104 def test_main(): |
|
84107
017c431d1798
Partially revert changeset #281857369a78 to make sure threads are
Brett Cannon <brett@python.org>
parents:
84105
diff
changeset
|
1105 support.run_unittest(XMLRPCTestCase, HelperTestCase, DateTimeTestCase, |
|
017c431d1798
Partially revert changeset #281857369a78 to make sure threads are
Brett Cannon <brett@python.org>
parents:
84105
diff
changeset
|
1106 BinaryTestCase, FaultTestCase, UseBuiltinTypesTestCase, |
|
017c431d1798
Partially revert changeset #281857369a78 to make sure threads are
Brett Cannon <brett@python.org>
parents:
84105
diff
changeset
|
1107 SimpleServerTestCase, KeepaliveServerTestCase1, |
|
017c431d1798
Partially revert changeset #281857369a78 to make sure threads are
Brett Cannon <brett@python.org>
parents:
84105
diff
changeset
|
1108 KeepaliveServerTestCase2, GzipServerTestCase, |
|
017c431d1798
Partially revert changeset #281857369a78 to make sure threads are
Brett Cannon <brett@python.org>
parents:
84105
diff
changeset
|
1109 MultiPathServerTestCase, ServerProxyTestCase, FailingServerTestCase, |
|
017c431d1798
Partially revert changeset #281857369a78 to make sure threads are
Brett Cannon <brett@python.org>
parents:
84105
diff
changeset
|
1110 CGIHandlerTestCase) |
|
42629
a6c48925de53
First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents:
42395
diff
changeset
|
1111 |
|
20205
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
1112 |
|
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
1113 if __name__ == "__main__": |
|
00152e68745a
simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff
changeset
|
1114 test_main() |
