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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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&amp;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&lt;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&gt;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()