annotate Lib/test/test_xmlrpc.py @ 78069:a8aa77458e12 3.2

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