annotate Lib/test/test_xmlrpc.py @ 79691:05c8928362ee

Merge __next__ method link fixes with 3.3.
author Ezio Melotti <ezio.melotti@gmail.com>
date Fri, 12 Oct 2012 13:46:37 +0300
parents c257c5eea42f
children 28c756093a63 50d19c2fac82
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
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
6 import xmlrpc.client as xmlrpclib
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
7 import xmlrpc.server
47318
e1fcc3881cb6 Create http package. #2883.
Georg Brandl <georg@python.org>
parents: 47288
diff changeset
8 import http.client
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
9 import socket
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
10 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
11 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
12 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
13 import contextlib
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46664
diff changeset
14 from test import support
20205
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
15
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
16 try:
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
17 import threading
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
18 except ImportError:
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
19 threading = None
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
20
20205
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
21 alist = [{'astring': 'foo@bar.baz.spam',
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
22 '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
23 'anint': 2**20,
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40450
diff changeset
24 'ashortlong': 2,
20205
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
25 '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
26 '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
27 '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
28 '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
29 'boolean': False,
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 40809
diff changeset
30 '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
31 'ukey\u4000': 'regular value',
34578
607c48b5efd7 accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents: 32248
diff changeset
32 'datetime1': xmlrpclib.DateTime('20050210T11:41:23'),
607c48b5efd7 accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents: 32248
diff changeset
33 'datetime2': xmlrpclib.DateTime(
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41993
diff changeset
34 (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
35 'datetime3': xmlrpclib.DateTime(
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41993
diff changeset
36 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
37 }]
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
38
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
39 class XMLRPCTestCase(unittest.TestCase):
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
40
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
41 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
42 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
43 load = xmlrpclib.loads(dump)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66249
diff changeset
44 self.assertEqual(alist, load[0][0])
20205
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
45
34578
607c48b5efd7 accept datetime.datetime instances when marshalling;
Fred Drake <fdrake@acm.org>
parents: 32248
diff changeset
46 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
47 # 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
48 # 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
49 # 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
50 # 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
51 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
52 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
53 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
54
0175883d9513 Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73214
diff changeset
55 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
56 (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
57 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
58 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
59 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
60
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 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
62 (newdt,) = result
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66249
diff changeset
63 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
64 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
65 self.assertIsNone(m)
34956
404088503a78 Add better datetime support to xmlrpclib module. Closes patch #1120353.
Skip Montanaro <skip@pobox.com>
parents: 34881
diff changeset
66
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
67 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
68 (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
69 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
70 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
71 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
72
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 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
74 (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
75 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
76 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
77 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
78
34956
404088503a78 Add better datetime support to xmlrpclib module. Closes patch #1120353.
Skip Montanaro <skip@pobox.com>
parents: 34881
diff changeset
79
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
80 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
81 # 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
82 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
83 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
84 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
85
0175883d9513 Closes #13297: use bytes type to send and receive binary data through XMLRPC.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73214
diff changeset
86 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
87 (newdt,) = result
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66249
diff changeset
88 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
89 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
90 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
91
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
92 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
93 (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
94 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
95 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
96 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
97
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
98 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
99 d = xmlrpclib.DateTime()
36121
686306a67e9b Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 35984
diff changeset
100 ((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
101 methodresponse=True))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57751
diff changeset
102 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
103
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 # 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
105 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
106 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
107
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 36121
diff changeset
108 def test_newstyle_class(self):
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 36121
diff changeset
109 class T(object):
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 36121
diff changeset
110 pass
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 36121
diff changeset
111 t = T()
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 36121
diff changeset
112 t.x = 100
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 36121
diff changeset
113 t.y = "Hello"
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 36121
diff changeset
114 ((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
115 self.assertEqual(t2, t.__dict__)
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 36121
diff changeset
116
20571
541f825c7d63 added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents: 20205
diff changeset
117 def test_dump_big_long(self):
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40450
diff changeset
118 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
119
541f825c7d63 added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents: 20205
diff changeset
120 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
121 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
122
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
123 def test_dump_recursive_seq(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
124 l = [1,2,3]
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
125 t = [3,4,5,l]
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
126 l.append(t)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
127 self.assertRaises(TypeError, xmlrpclib.dumps, (l,))
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
128
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
129 def test_dump_recursive_dict(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
130 d = {'1':1, '2':1}
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
131 t = {'3':3, 'd':d}
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
132 d['t'] = t
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
133 self.assertRaises(TypeError, xmlrpclib.dumps, (d,))
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
134
20571
541f825c7d63 added tests for long ints and ints where they are > 32 bits.
Skip Montanaro <skip@pobox.com>
parents: 20205
diff changeset
135 def test_dump_big_int(self):
44160
9d152530910a Removed PyInt_GetMax and sys.maxint
Christian Heimes <christian@cheimes.de>
parents: 43750
diff changeset
136 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
137 self.assertRaises(OverflowError, xmlrpclib.dumps,
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40450
diff changeset
138 (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
139
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
140 xmlrpclib.dumps((xmlrpclib.MAXINT, xmlrpclib.MININT))
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
141 self.assertRaises(OverflowError, xmlrpclib.dumps,
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
142 (xmlrpclib.MAXINT+1,))
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
143 self.assertRaises(OverflowError, xmlrpclib.dumps,
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
144 (xmlrpclib.MININT-1,))
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
145
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
146 def dummy_write(s):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
147 pass
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
148
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
149 m = xmlrpclib.Marshaller()
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
150 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
151 m.dump_int(xmlrpclib.MININT, dummy_write)
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
152 self.assertRaises(OverflowError, m.dump_int,
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
153 xmlrpclib.MAXINT+1, dummy_write)
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
154 self.assertRaises(OverflowError, m.dump_int,
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
155 xmlrpclib.MININT-1, dummy_write)
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
156
77974
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
157 def test_dump_double(self):
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
158 xmlrpclib.dumps((float(2 ** 34),))
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
159 xmlrpclib.dumps((float(xmlrpclib.MAXINT),
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
160 float(xmlrpclib.MININT)))
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
161 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
162 float(xmlrpclib.MININT - 42)))
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
163
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
164 def dummy_write(s):
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
165 pass
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
166
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
167 m = xmlrpclib.Marshaller()
c257c5eea42f Add tests to marshall double with xmlrpc.client.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 75018
diff changeset
168 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
169 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
170 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
171 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
172
28809
28a09767a24f [Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents: 24364
diff changeset
173 def test_dump_none(self):
28a09767a24f [Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents: 24364
diff changeset
174 value = alist + [None]
28a09767a24f [Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents: 24364
diff changeset
175 arg1 = (alist + [None],)
28a09767a24f [Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents: 24364
diff changeset
176 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
177 self.assertEqual(value,
28809
28a09767a24f [Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents: 24364
diff changeset
178 xmlrpclib.loads(strg)[0][0])
28a09767a24f [Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents: 24364
diff changeset
179 self.assertRaises(TypeError, xmlrpclib.dumps, (arg1,))
28a09767a24f [Patch #628208] Test the 'nil' extension
Andrew M. Kuchling <amk@amk.ca>
parents: 24364
diff changeset
180
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
181 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
182 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
183 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
184 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
185 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
186 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
187
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 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
189 (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
190 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
191 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
192 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
193
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 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
195 (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
196 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
197 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
198 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
199
51594
ca1d99d9d691 part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents: 50879
diff changeset
200 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
201 # 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
202 transp = xmlrpc.client.Transport()
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66249
diff changeset
203 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
204 ('host.tld',
ca1d99d9d691 part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents: 50879
diff changeset
205 [('Authorization', 'Basic dXNlcg==')], {}))
ca1d99d9d691 part of #3613: fix get_host_info() usage of base64.encodestring().
Georg Brandl <georg@python.org>
parents: 50879
diff changeset
206
66234
019421a89ef5 Merged revisions 86514 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 55593
diff changeset
207 def test_ssl_presence(self):
66241
a019bb4ffb50 Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 66234
diff changeset
208 try:
a019bb4ffb50 Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 66234
diff changeset
209 import ssl
66249
420301400403 Merged revisions 86533 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66241
diff changeset
210 except ImportError:
420301400403 Merged revisions 86533 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 66241
diff changeset
211 has_ssl = False
66234
019421a89ef5 Merged revisions 86514 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 55593
diff changeset
212 else:
66241
a019bb4ffb50 Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 66234
diff changeset
213 has_ssl = True
66234
019421a89ef5 Merged revisions 86514 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 55593
diff changeset
214 try:
019421a89ef5 Merged revisions 86514 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 55593
diff changeset
215 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
216 except NotImplementedError:
a019bb4ffb50 Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 66234
diff changeset
217 self.assertFalse(has_ssl, "xmlrpc client's error with SSL support")
a019bb4ffb50 Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 66234
diff changeset
218 except socket.error:
a019bb4ffb50 Merged revisions 86523 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents: 66234
diff changeset
219 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
220
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
221 class HelperTestCase(unittest.TestCase):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
222 def test_escape(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
223 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
224 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
225 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
226
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
227 class FaultTestCase(unittest.TestCase):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
228 def test_repr(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
229 f = xmlrpclib.Fault(42, 'Test Fault')
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
230 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
231 self.assertEqual(repr(f), str(f))
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
232
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
233 def test_dump_fault(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 s = xmlrpclib.dumps((f,))
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
236 (newf,), m = xmlrpclib.loads(s)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66249
diff changeset
237 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
238 self.assertEqual(m, None)
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
239
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
240 s = xmlrpclib.Marshaller().dumps(f)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
241 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
242
44239
369a4e06fd30 Added another test case for kwonly methods
Christian Heimes <christian@cheimes.de>
parents: 44234
diff changeset
243 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
244 # 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
245 # private methods
369a4e06fd30 Added another test case for kwonly methods
Christian Heimes <christian@cheimes.de>
parents: 44234
diff changeset
246 self.assertRaises(AttributeError,
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
247 xmlrpc.server.resolve_dotted_attribute, str, '__add')
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54564
diff changeset
248 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
249
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
250 class DateTimeTestCase(unittest.TestCase):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
251 def test_default(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
252 t = xmlrpclib.DateTime()
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
253
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
254 def test_time(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
255 d = 1181399930.036952
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
256 t = xmlrpclib.DateTime(d)
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
257 self.assertEqual(str(t),
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
258 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
259
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
260 def test_time_tuple(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
261 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
262 t = xmlrpclib.DateTime(d)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
263 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
264
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
265 def test_time_struct(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
266 d = time.localtime(1181399930.036952)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
267 t = xmlrpclib.DateTime(d)
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
268 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
269
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
270 def test_datetime_datetime(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
271 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
272 t = xmlrpclib.DateTime(d)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
273 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
274
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
275 def test_repr(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
276 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
277 t = xmlrpclib.DateTime(d)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
278 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
279 self.assertEqual(repr(t), val)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
280
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
281 def test_decode(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
282 d = ' 20070908T07:11:13 '
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
283 t1 = xmlrpclib.DateTime()
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
284 t1.decode(d)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
285 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
286 self.assertEqual(t1, tref)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
287
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
288 t2 = xmlrpclib._datetime(d)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
289 self.assertEqual(t1, tref)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
290
73213
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
291 def test_comparison(self):
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
292 now = datetime.datetime.now()
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
293 dtime = xmlrpclib.DateTime(now.timetuple())
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
294
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
295 # datetime vs. DateTime
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
296 self.assertTrue(dtime == now)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
297 self.assertTrue(now == dtime)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
298 then = now + datetime.timedelta(seconds=4)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
299 self.assertTrue(then >= dtime)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
300 self.assertTrue(dtime < then)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
301
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
302 # str vs. DateTime
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
303 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
304 self.assertTrue(dtime == dstr)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
305 self.assertTrue(dstr == dtime)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
306 dtime_then = xmlrpclib.DateTime(then.timetuple())
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
307 self.assertTrue(dtime_then >= dstr)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
308 self.assertTrue(dstr < dtime_then)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
309
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
310 # some other types
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
311 dbytes = dstr.encode('ascii')
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
312 dtuple = now.timetuple()
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
313 with self.assertRaises(TypeError):
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
314 dtime == 1970
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
315 with self.assertRaises(TypeError):
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
316 dtime != dbytes
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
317 with self.assertRaises(TypeError):
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
318 dtime == bytearray(dbytes)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
319 with self.assertRaises(TypeError):
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
320 dtime != dtuple
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
321 with self.assertRaises(TypeError):
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
322 dtime < float(1970)
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
323 with self.assertRaises(TypeError):
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
324 dtime > dbytes
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 <= bytearray(dbytes)
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 >= dtuple
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
329
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
330 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
331
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
332 # 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
333 # 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
334 # 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
335 # 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
336
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
337 def test_default(self):
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
338 t = xmlrpclib.Binary()
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
339 self.assertEqual(str(t), '')
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
340
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
341 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
342 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
343 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
344 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
345
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
346 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
347 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
348 de = base64.encodebytes(d)
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
349 t1 = xmlrpclib.Binary()
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
350 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
351 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
352
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
353 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
354 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
355
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
356
50879
50f5c29fce26 Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48334
diff changeset
357 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
358
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
359 # 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
360 # 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
361 # 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
362 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
363 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
364 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
365 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
366
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
367 def _methodHelp(self, name):
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
368 if name == 'div':
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
369 return 'This is the div function'
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
370
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
371 def my_function():
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
372 '''This is my function'''
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
373 return True
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
374
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
375 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
376 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
377 # 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
378 # 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
379 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
380 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
381 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
382
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
383 if not requestHandler:
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
384 requestHandler = xmlrpc.server.SimpleXMLRPCRequestHandler
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
385 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
386 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
387 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
388 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
389 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
390 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
391 #connect to IP address directly. This avoids socket.create_connection()
72985
e19ccbbe70dd Remove duplication.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 72451
diff changeset
392 #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
393 #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
394 #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
395 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
396 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
397 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
398 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
399 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
400 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
401 serv.register_function(my_function)
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
402 serv.register_instance(TestInstanceClass())
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
403 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
404
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 # 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
406 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
407 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
408 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
409
a6c48925de53 First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents: 42395
diff changeset
410 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
411 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
412 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
413 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
414 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
415 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
416
57751
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
417 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
418 class TestInstanceClass:
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
419 def div(self, x, y):
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
420 return x // y
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
421
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
422 def _methodHelp(self, name):
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
423 if name == 'div':
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
424 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
425
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
426 def my_function():
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
427 '''This is my function'''
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
428 return True
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
429
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
430 class MyXMLRPCServer(xmlrpc.server.MultiPathXMLRPCServer):
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
431 def get_request(self):
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
432 # 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
433 # 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
434 s, port = self.socket.accept()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
435 s.setblocking(True)
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
436 return s, port
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
437
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
438 if not requestHandler:
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
439 requestHandler = xmlrpc.server.SimpleXMLRPCRequestHandler
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
440 class MyRequestHandler(requestHandler):
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
441 rpc_paths = []
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
442
73213
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
443 class BrokenDispatcher:
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
444 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
445 raise RuntimeError("broken dispatcher")
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
446
57751
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
447 serv = MyXMLRPCServer(("localhost", 0), MyRequestHandler,
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
448 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
449 serv.socket.settimeout(3)
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
450 serv.server_bind()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
451 try:
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
452 global ADDR, PORT, URL
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
453 ADDR, PORT = serv.socket.getsockname()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
454 #connect to IP address directly. This avoids socket.create_connection()
72985
e19ccbbe70dd Remove duplication.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 72451
diff changeset
455 #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
456 #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
457 #on AF_INET only.
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
458 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
459 serv.server_activate()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
460 paths = ["/foo", "/foo/bar"]
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
461 for path in paths:
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
462 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
463 d.register_introspection_functions()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
464 d.register_multicall_functions()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
465 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
466 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
467 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
468 evt.set()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
469
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
470 # handle up to 'numrequests' requests
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
471 while numrequests > 0:
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
472 serv.handle_request()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
473 numrequests -= 1
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
474
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
475 except socket.timeout:
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
476 pass
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
477 finally:
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
478 serv.socket.close()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
479 PORT = None
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
480 evt.set()
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
481
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
482 # This function prevents errors like:
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
483 # <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
484 def is_unavailable_exception(e):
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
485 '''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
486 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
487 given by operations on non-blocking sockets.'''
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
488
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
489 # 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
490 try:
ebfbaa1051e2 Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45017
diff changeset
491 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
492 return True
ebfbaa1051e2 Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45017
diff changeset
493 exc_mess = e.headers.get('X-exception')
ebfbaa1051e2 Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45017
diff changeset
494 except AttributeError:
ebfbaa1051e2 Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45017
diff changeset
495 # Ignore socket.errors here.
ebfbaa1051e2 Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45017
diff changeset
496 exc_mess = str(e)
ebfbaa1051e2 Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45017
diff changeset
497
ebfbaa1051e2 Merged revisions 60364-60378 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45017
diff changeset
498 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
499 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
500
59091
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
501 def make_request_and_skipIf(condition, reason):
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
502 # 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
503 # 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
504 if not condition:
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
505 return lambda func: func
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
506 def decorator(func):
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
507 def make_request_and_skip(self):
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
508 try:
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
509 xmlrpclib.ServerProxy(URL).my_function()
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
510 except (xmlrpclib.ProtocolError, socket.error) as e:
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
511 if not is_unavailable_exception(e):
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
512 raise
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
513 raise unittest.SkipTest(reason)
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
514 return make_request_and_skip
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
515 return decorator
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
516
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
517 @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
518 class BaseServerTestCase(unittest.TestCase):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
519 requestHandler = None
55233
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
520 request_count = 1
57751
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
521 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
522
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
523 def setUp(self):
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
524 # enable traceback reporting
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
525 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
526
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
527 self.evt = threading.Event()
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
528 # 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
529 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
530 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
531
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
532 # wait for the server to be ready
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
533 self.evt.wait()
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
534 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
535
a6c48925de53 First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents: 42395
diff changeset
536 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
537 # 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
538 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
539
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
540 # disable traceback reporting
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
541 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
542
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
543 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
544 def test_simple1(self):
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
545 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
546 p = xmlrpclib.ServerProxy(URL)
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
547 self.assertEqual(p.pow(6,8), 6**8)
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
548 except (xmlrpclib.ProtocolError, socket.error) as e:
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
549 # 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
550 if not is_unavailable_exception(e):
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
551 # 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
552 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
553
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
554 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
555 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
556 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
557 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
558 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
559 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
560 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
561 except (xmlrpclib.ProtocolError, socket.error) as 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
562 # 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
563 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
564 # 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
565 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
566
44782
ca2683a67943 Merged revisions 60080-60089,60091-60093 via svnmerge from
Georg Brandl <georg@python.org>
parents: 44239
diff changeset
567 # [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
568 def XXXtest_404(self):
47318
e1fcc3881cb6 Create http package. #2883.
Georg Brandl <georg@python.org>
parents: 47288
diff changeset
569 # 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
570 # '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
571 conn = httplib.client.HTTPConnection(ADDR, PORT)
44228
17448e5e9671 Disabled test_404, see issue #1572
Christian Heimes <christian@cheimes.de>
parents: 44226
diff changeset
572 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
573 response = conn.getresponse()
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
574 conn.close()
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
575
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
576 self.assertEqual(response.status, 404)
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
577 self.assertEqual(response.reason, 'Not Found')
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
578
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
579 def test_introspection1(self):
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
580 expected_methods = set(['pow', 'div', 'my_function', 'add',
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
581 'system.listMethods', 'system.methodHelp',
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
582 'system.methodSignature', 'system.multicall'])
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
583 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
584 p = xmlrpclib.ServerProxy(URL)
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
585 meth = p.system.listMethods()
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
586 self.assertEqual(set(meth), expected_methods)
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
587 except (xmlrpclib.ProtocolError, socket.error) as e:
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
588 # 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
589 if not is_unavailable_exception(e):
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
590 # 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
591 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
592
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
593
a6c48925de53 First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents: 42395
diff changeset
594 def test_introspection2(self):
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
595 try:
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
596 # 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
597 p = xmlrpclib.ServerProxy(URL)
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
598 divhelp = p.system.methodHelp('div')
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
599 self.assertEqual(divhelp, 'This is the div function')
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
600 except (xmlrpclib.ProtocolError, socket.error) as e:
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
601 # 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
602 if not is_unavailable_exception(e):
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
603 # 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
604 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
605
59091
8d3ff2fbbe4b Merged revisions 78351 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 58473
diff changeset
606 @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
607 "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
608 def test_introspection3(self):
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
609 try:
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
610 # 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
611 p = xmlrpclib.ServerProxy(URL)
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
612 myfunction = p.system.methodHelp('my_function')
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
613 self.assertEqual(myfunction, 'This is my function')
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
614 except (xmlrpclib.ProtocolError, socket.error) as e:
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
615 # 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
616 if not is_unavailable_exception(e):
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
617 # 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
618 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
619
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
620 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
621 # 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
622 # 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
623 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
624 p = xmlrpclib.ServerProxy(URL)
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
625 divsig = p.system.methodSignature('div')
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
626 self.assertEqual(divsig, 'signatures not supported')
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
627 except (xmlrpclib.ProtocolError, socket.error) as e:
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
628 # 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
629 if not is_unavailable_exception(e):
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
630 # 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
631 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
632
a6c48925de53 First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents: 42395
diff changeset
633 def test_multicall(self):
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
634 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
635 p = xmlrpclib.ServerProxy(URL)
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
636 multicall = xmlrpclib.MultiCall(p)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
637 multicall.add(2,3)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
638 multicall.pow(6,8)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
639 multicall.div(127,42)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
640 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
641 self.assertEqual(add_result, 2+3)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
642 self.assertEqual(pow_result, 6**8)
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
643 self.assertEqual(div_result, 127//42)
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
644 except (xmlrpclib.ProtocolError, socket.error) as e:
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
645 # 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
646 if not is_unavailable_exception(e):
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
647 # 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
648 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
649
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
650 def test_non_existing_multicall(self):
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
651 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
652 p = xmlrpclib.ServerProxy(URL)
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
653 multicall = xmlrpclib.MultiCall(p)
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
654 multicall.this_is_not_exists()
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
655 result = multicall()
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
656
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
657 # 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
658 # [{'faultCode': 1, 'faultString': '<class \'exceptions.Exception\'>:'
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
659 # '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
660
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
661 self.assertEqual(result.results[0]['faultCode'], 1)
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
662 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
663 '<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
664 'is not supported')
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
665 except (xmlrpclib.ProtocolError, socket.error) as e:
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
666 # 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
667 if not is_unavailable_exception(e):
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
668 # 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
669 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
670
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
671 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
672 # 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
673 self.assertRaises(AttributeError,
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
674 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
675
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54564
diff changeset
676 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
677 # 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
678 # 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
679 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
680
72451
5ceab07bcd02 Issue #12931: Add a test with Unicode URI to test_xmlrpc
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68257
diff changeset
681 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
682 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
683 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
684
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
685 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
686 # 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
687 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
688 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
689 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
690
cd67740ce653 Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in SimpleXMLRPCServer
Charles-François Natali <neologix@free.fr>
parents: 73214
diff changeset
691
57751
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
692 class MultiPathServerTestCase(BaseServerTestCase):
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
693 threadFunc = staticmethod(http_multi_server)
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
694 request_count = 2
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
695 def test_path1(self):
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
696 p = xmlrpclib.ServerProxy(URL+"/foo")
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
697 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
698 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
699
57751
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
700 def test_path2(self):
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
701 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
702 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
703 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
704
73213
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
705 def test_path3(self):
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
706 p = xmlrpclib.ServerProxy(URL+"/is/broken")
f3d454b20b35 Closes #13291: NameError in xmlrpc package.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 72985
diff changeset
707 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
708
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
709 #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
710 #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
711 class BaseKeepaliveServerTestCase(BaseServerTestCase):
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
712 #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
713 #class variable
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
714 class RequestHandler(xmlrpc.server.SimpleXMLRPCRequestHandler):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
715 parentClass = xmlrpc.server.SimpleXMLRPCRequestHandler
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
716 protocol_version = 'HTTP/1.1'
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
717 myRequests = []
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
718 def handle(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
719 self.myRequests.append([])
55233
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
720 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
721 return self.parentClass.handle(self)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
722 def handle_one_request(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
723 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
724 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
725 return result
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
726
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
727 requestHandler = RequestHandler
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
728 def setUp(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
729 #clear request log
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
730 self.RequestHandler.myRequests = []
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
731 return BaseServerTestCase.setUp(self)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
732
55233
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
733 #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
734 #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
735 class KeepaliveServerTestCase1(BaseKeepaliveServerTestCase):
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
736 def test_two(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
737 p = xmlrpclib.ServerProxy(URL)
55219
0c812870a975 merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55028
diff changeset
738 #do three requests.
0c812870a975 merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55028
diff changeset
739 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
740 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
741 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
742 p("close")()
55219
0c812870a975 merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55028
diff changeset
743
0c812870a975 merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55028
diff changeset
744 #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
745 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
746
0c812870a975 merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55028
diff changeset
747 #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
748 #due to thread scheduling)
0c812870a975 merging revision 73932 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55028
diff changeset
749 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
750
67298
dba9b9c7a2db test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66581
diff changeset
751
55233
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
752 #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
753 #function.
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
754 class KeepaliveServerTestCase2(BaseKeepaliveServerTestCase):
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
755 #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
756 request_count=2
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
757
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
758 def test_close(self):
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
759 p = xmlrpclib.ServerProxy(URL)
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
760 #do some requests with close.
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
761 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
762 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
763 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
764 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
765 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
766 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
767 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
768 p("close")()
55233
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
769
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
770 #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
771 #two complete requests
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
772 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
773 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
774 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
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 def test_transport(self):
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
778 p = xmlrpclib.ServerProxy(URL)
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
779 #do some requests with close.
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
780 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
781 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
782 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
783 p("close")()
55233
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
784 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
785
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
786 #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
787 #(for a request and the response)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
788 class GzipServerTestCase(BaseServerTestCase):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
789 #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
790 #class variable
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
791 class RequestHandler(xmlrpc.server.SimpleXMLRPCRequestHandler):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
792 parentClass = xmlrpc.server.SimpleXMLRPCRequestHandler
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
793 protocol_version = 'HTTP/1.1'
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
794
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
795 def do_POST(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
796 #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
797 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
798 return self.parentClass.do_POST(self)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
799 requestHandler = RequestHandler
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
800
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
801 class Transport(xmlrpclib.Transport):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
802 #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
803 fake_gzip = False
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
804 def parse_response(self, response):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
805 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
806 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
807
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
808 def send_content(self, connection, body):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
809 if self.fake_gzip:
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
810 #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
811 connection.putheader("Content-Encoding", "gzip")
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
812 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
813
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
814 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
815 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
816
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
817 def test_gzip_request(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
818 t = self.Transport()
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
819 t.encode_threshold = None
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
820 p = xmlrpclib.ServerProxy(URL, transport=t)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
821 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
822 a = self.RequestHandler.content_length
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
823 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
824 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
825 b = self.RequestHandler.content_length
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
826 self.assertTrue(a>b)
67298
dba9b9c7a2db test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66581
diff changeset
827 p("close")()
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
828
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
829 def test_bad_gzip_request(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
830 t = self.Transport()
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
831 t.encode_threshold = None
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
832 t.fake_gzip = True
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
833 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
834 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
835 re.compile(r"\b400\b"))
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
836 with cm:
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
837 p.pow(6, 8)
67298
dba9b9c7a2db test_xmlrpc: close the transport when done
Victor Stinner <victor.stinner@haypocalc.com>
parents: 66581
diff changeset
838 p("close")()
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
839
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
840 def test_gsip_response(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
841 t = self.Transport()
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
842 p = xmlrpclib.ServerProxy(URL, transport=t)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
843 old = self.requestHandler.encode_threshold
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
844 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
845 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
846 a = t.response_length
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
847 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
848 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
849 p("close")()
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
850 b = t.response_length
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
851 self.requestHandler.encode_threshold = old
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
852 self.assertTrue(a>b)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
853
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
854 #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
855 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
856 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
857 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
858 if threading:
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
859 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
860 else:
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
861 # 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
862 # 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
863 # 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
864 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
865
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
866 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
867 p = xmlrpclib.ServerProxy(self.url)
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
868 self.assertEqual(p('close')(), None)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
869
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
870 def test_transport(self):
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
871 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
872 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
873 self.assertEqual(p('transport'), t)
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
874
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
875 # 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
876 # 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
877 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
878 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
879 key = key.lower()
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
880 if key == 'content-length':
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
881 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
882 return super().get(key, failobj)
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
883
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
884
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59091
diff changeset
885 @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
886 class FailingServerTestCase(unittest.TestCase):
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
887 def setUp(self):
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
888 self.evt = threading.Event()
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
889 # start server thread to handle requests
43750
b4e8e523b882 Patch 1373 by Adam Hupp.
Guido van Rossum <guido@python.org>
parents: 43095
diff changeset
890 serv_args = (self.evt, 1)
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
891 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
892
44999
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
893 # wait for the server to be ready
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
894 self.evt.wait()
7c02182e2979 Merged revisions 60284-60349 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44782
diff changeset
895 self.evt.clear()
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
896
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
897 def tearDown(self):
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
898 # 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
899 self.evt.wait()
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
900 # reset flag
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
901 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
902 # 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
903 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
904 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
905
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
906 def test_basic(self):
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
907 # check that flag is false by default
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
908 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
909 self.assertEqual(flagval, False)
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
910
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
911 # enable traceback reporting
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
912 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
913
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
914 # 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
915 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
916 p = xmlrpclib.ServerProxy(URL)
42775
d7517c306791 Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42678
diff changeset
917 self.assertEqual(p.pow(6,8), 6**8)
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
918 except (xmlrpclib.ProtocolError, socket.error) as e:
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
919 # 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
920 if not is_unavailable_exception(e):
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
921 # 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
922 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
923
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
924 def test_fail_no_info(self):
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
925 # use the broken message class
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
926 xmlrpc.server.SimpleXMLRPCRequestHandler.MessageClass = FailingMessageClass
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
927
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
928 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
929 p = xmlrpclib.ServerProxy(URL)
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
930 p.pow(6,8)
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
931 except (xmlrpclib.ProtocolError, socket.error) as e:
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
932 # 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
933 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
934 # 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
935 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
936 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
937 else:
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
938 self.fail('ProtocolError not raised')
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
939
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
940 def test_fail_with_info(self):
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
941 # use the broken message class
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
942 xmlrpc.server.SimpleXMLRPCRequestHandler.MessageClass = FailingMessageClass
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
943
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
944 # 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
945 # info when flag is set
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
946 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
947
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
948 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
949 p = xmlrpclib.ServerProxy(URL)
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
950 p.pow(6,8)
45017
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
951 except (xmlrpclib.ProtocolError, socket.error) as e:
4725c84b0422 Merged revisions 60350-60363 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44999
diff changeset
952 # 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
953 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
954 # 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
955 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
956 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
957 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
958 else:
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
959 self.fail('ProtocolError not raised')
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
960
56746
d3cf8eb87274 Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents: 56592
diff changeset
961
d3cf8eb87274 Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents: 56592
diff changeset
962 @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
963 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
964 """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
965 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
966 """
d3cf8eb87274 Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents: 56592
diff changeset
967 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
968 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
969 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
970 try:
d3cf8eb87274 Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents: 56592
diff changeset
971 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
972 finally:
d3cf8eb87274 Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents: 56592
diff changeset
973 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
974
d3cf8eb87274 Make the XMLRCP CGIHandlerTestCase pass like it did before the change of
R. David Murray <rdmurray@bitdance.com>
parents: 56592
diff changeset
975
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
976 class CGIHandlerTestCase(unittest.TestCase):
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
977 def setUp(self):
47288
346a99df5889 Create xmlrpc package. Issue #2886.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
978 self.cgi = xmlrpc.server.CGIXMLRPCRequestHandler()
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
979
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
980 def tearDown(self):
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
981 self.cgi = None
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
982
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
983 def test_cgi_get(self):
53492
e0d45d32fb82 Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 52668
diff changeset
984 with support.EnvironmentVarGuard() as env:
53646
5c55b9c80846 Merged revisions 72167 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 53492
diff changeset
985 env['REQUEST_METHOD'] = 'GET'
53492
e0d45d32fb82 Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 52668
diff changeset
986 # 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
987 # 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
988 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
989 self.cgi.handle_request()
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
990
53492
e0d45d32fb82 Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 52668
diff changeset
991 # 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
992 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
993 handle = data_out.read()
53492
e0d45d32fb82 Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 52668
diff changeset
994 status = handle.split()[1]
e0d45d32fb82 Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 52668
diff changeset
995 message = ' '.join(handle.split()[2:4])
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
996
53492
e0d45d32fb82 Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 52668
diff changeset
997 self.assertEqual(status, '400')
e0d45d32fb82 Merged revisions 71984 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 52668
diff changeset
998 self.assertEqual(message, 'Bad Request')
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
999
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
1000
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
1001 def test_cgi_xmlrpc_response(self):
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
1002 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
1003 <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
1004 <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
1005 <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
1006 <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
1007 <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
1008 </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
1009 <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
1010 <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
1011 </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
1012 </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
1013 </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
1014 """
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
1015
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
1016 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
1017 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
1018 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
1019 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
1020 data_in.seek(0)
53646
5c55b9c80846 Merged revisions 72167 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 53492
diff changeset
1021 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
1022 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
1023 data_out.seek(0)
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
1024
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
1025 # 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
1026 handle = data_out.read()
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
1027
48334
5a416a6417d3 Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 47635
diff changeset
1028 # 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
1029 # need only xml
44226
aad65a2424e3 Merged revisions 59376-59406 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
1030 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
1031
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
1032 # 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
1033 # 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
1034 # 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
1035 # 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
1036
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
1037 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
1038
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66249
diff changeset
1039 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
1040 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
1041 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
1042
42678
af6a7190cabc Merged revisions 57152-57220 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 42629
diff changeset
1043
73907
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1044 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
1045
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1046 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
1047 # 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
1048 # 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
1049 # 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
1050 self.log = []
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1051 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
1052 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
1053 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
1054 def foobar(*args):
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1055 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
1056 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
1057 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
1058 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
1059 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
1060 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
1061 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
1062 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
1063 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
1064 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
1065
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1066 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
1067 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
1068 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
1069
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1070 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
1071 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
1072 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
1073 server.server_close()
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1074 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
1075
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1076
56986
a183c82b6289 Merged revisions 75962-75963 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 56746
diff changeset
1077 @support.reap_threads
20205
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
1078 def test_main():
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
1079 xmlrpc_tests = [XMLRPCTestCase, HelperTestCase, DateTimeTestCase,
a6c48925de53 First merge from the trunk straight into the py3k branch. I'm not
Guido van Rossum <guido@python.org>
parents: 42395
diff changeset
1080 BinaryTestCase, FaultTestCase]
73907
b3c1a504ebc1 Closes #2979: add parameter 'use_builtin_types' to the SimpleXMLRPCServer.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 73575
diff changeset
1081 xmlrpc_tests.append(UseBuiltinTypesTestCase)
50879
50f5c29fce26 Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48334
diff changeset
1082 xmlrpc_tests.append(SimpleServerTestCase)
55233
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
1083 xmlrpc_tests.append(KeepaliveServerTestCase1)
2b67cb925bb1 merging revision 73986 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55219
diff changeset
1084 xmlrpc_tests.append(KeepaliveServerTestCase2)
55344
e62957a0ee14 porting revision 74098 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55233
diff changeset
1085 try:
e62957a0ee14 porting revision 74098 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55233
diff changeset
1086 import gzip
e62957a0ee14 porting revision 74098 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55233
diff changeset
1087 xmlrpc_tests.append(GzipServerTestCase)
e62957a0ee14 porting revision 74098 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55233
diff changeset
1088 except ImportError:
e62957a0ee14 porting revision 74098 from trunk:
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55233
diff changeset
1089 pass #gzip not supported in this build
57751
7eb050c0e654 Merged revisions 74558 via svnmerge from
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 56986
diff changeset
1090 xmlrpc_tests.append(MultiPathServerTestCase)
55028
366c8a4e5a46 http://bugs.python.org/issue6267
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents: 55593
diff changeset
1091 xmlrpc_tests.append(ServerProxyTestCase)
50879
50f5c29fce26 Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48334
diff changeset
1092 xmlrpc_tests.append(FailingServerTestCase)
50f5c29fce26 Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48334
diff changeset
1093 xmlrpc_tests.append(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
1094
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46664
diff changeset
1095 support.run_unittest(*xmlrpc_tests)
20205
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
1096
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
1097 if __name__ == "__main__":
00152e68745a simple dumps/loads test case for xmlrpclib
Skip Montanaro <skip@pobox.com>
parents:
diff changeset
1098 test_main()