Mercurial > cpython-lru_cache-weakref
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 |
| 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&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<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>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() |
