mirror of
https://github.com/python/cpython.git
synced 2025-11-02 14:41:33 +00:00
Catch ProtocolError exceptions and include the header information in
test output (to make it easier to debug test failures caused by problems in the server). [GSoC - Alan McIntyre]
This commit is contained in:
parent
54ec61ea6e
commit
c65a5f1b14
1 changed files with 52 additions and 25 deletions
|
|
@ -352,38 +352,58 @@ def tearDown(self):
|
||||||
SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = False
|
SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = False
|
||||||
|
|
||||||
def test_simple1(self):
|
def test_simple1(self):
|
||||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
try:
|
||||||
self.assertEqual(p.pow(6,8), 6**8)
|
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||||
|
self.assertEqual(p.pow(6,8), 6**8)
|
||||||
|
except xmlrpclib.ProtocolError, e:
|
||||||
|
# protocol error; provide additional information in test output
|
||||||
|
self.fail("%s\n%s" % (e, e.headers))
|
||||||
|
|
||||||
def test_introspection1(self):
|
def test_introspection1(self):
|
||||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
try:
|
||||||
meth = p.system.listMethods()
|
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||||
expected_methods = set(['pow', 'div', 'add', 'system.listMethods',
|
meth = p.system.listMethods()
|
||||||
'system.methodHelp', 'system.methodSignature', 'system.multicall'])
|
expected_methods = set(['pow', 'div', 'add', 'system.listMethods',
|
||||||
self.assertEqual(set(meth), expected_methods)
|
'system.methodHelp', 'system.methodSignature', 'system.multicall'])
|
||||||
|
self.assertEqual(set(meth), expected_methods)
|
||||||
|
except xmlrpclib.ProtocolError, e:
|
||||||
|
# protocol error; provide additional information in test output
|
||||||
|
self.fail("%s\n%s" % (e, e.headers))
|
||||||
|
|
||||||
def test_introspection2(self):
|
def test_introspection2(self):
|
||||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
try:
|
||||||
divhelp = p.system.methodHelp('div')
|
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||||
self.assertEqual(divhelp, 'This is the div function')
|
divhelp = p.system.methodHelp('div')
|
||||||
|
self.assertEqual(divhelp, 'This is the div function')
|
||||||
|
except xmlrpclib.ProtocolError, e:
|
||||||
|
# protocol error; provide additional information in test output
|
||||||
|
self.fail("%s\n%s" % (e, e.headers))
|
||||||
|
|
||||||
def test_introspection3(self):
|
def test_introspection3(self):
|
||||||
# the SimpleXMLRPCServer doesn't support signatures, but
|
# the SimpleXMLRPCServer doesn't support signatures, but
|
||||||
# at least check that we can try
|
# at least check that we can try
|
||||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
try:
|
||||||
divsig = p.system.methodSignature('div')
|
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||||
self.assertEqual(divsig, 'signatures not supported')
|
divsig = p.system.methodSignature('div')
|
||||||
|
self.assertEqual(divsig, 'signatures not supported')
|
||||||
|
except xmlrpclib.ProtocolError, e:
|
||||||
|
# protocol error; provide additional information in test output
|
||||||
|
self.fail("%s\n%s" % (e, e.headers))
|
||||||
|
|
||||||
def test_multicall(self):
|
def test_multicall(self):
|
||||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
try:
|
||||||
multicall = xmlrpclib.MultiCall(p)
|
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||||
multicall.add(2,3)
|
multicall = xmlrpclib.MultiCall(p)
|
||||||
multicall.pow(6,8)
|
multicall.add(2,3)
|
||||||
multicall.div(127,42)
|
multicall.pow(6,8)
|
||||||
add_result, pow_result, div_result = multicall()
|
multicall.div(127,42)
|
||||||
self.assertEqual(add_result, 2+3)
|
add_result, pow_result, div_result = multicall()
|
||||||
self.assertEqual(pow_result, 6**8)
|
self.assertEqual(add_result, 2+3)
|
||||||
self.assertEqual(div_result, 127//42)
|
self.assertEqual(pow_result, 6**8)
|
||||||
|
self.assertEqual(div_result, 127//42)
|
||||||
|
except xmlrpclib.ProtocolError, e:
|
||||||
|
# protocol error; provide additional information in test output
|
||||||
|
self.fail("%s\n%s" % (e, e.headers))
|
||||||
|
|
||||||
|
|
||||||
# This is a contrived way to make a failure occur on the server side
|
# This is a contrived way to make a failure occur on the server side
|
||||||
|
|
@ -424,9 +444,16 @@ def test_basic(self):
|
||||||
flagval = SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header
|
flagval = SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header
|
||||||
self.assertEqual(flagval, False)
|
self.assertEqual(flagval, False)
|
||||||
|
|
||||||
# test a call that won't fail just as a smoke test
|
# enable traceback reporting
|
||||||
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = True
|
||||||
self.assertEqual(p.pow(6,8), 6**8)
|
|
||||||
|
# test a call that shouldn't fail just as a smoke test
|
||||||
|
try:
|
||||||
|
p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
|
||||||
|
self.assertEqual(p.pow(6,8), 6**8)
|
||||||
|
except xmlrpclib.ProtocolError, e:
|
||||||
|
# protocol error; provide additional information in test output
|
||||||
|
self.fail("%s\n%s" % (e, e.headers))
|
||||||
|
|
||||||
def test_fail_no_info(self):
|
def test_fail_no_info(self):
|
||||||
# use the broken message class
|
# use the broken message class
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue