[Python-checkins] r57227 - python/trunk/Lib/test/test_xmlrpc.py

facundo.batista python-checkins at python.org
Tue Aug 21 02:16:21 CEST 2007


Author: facundo.batista
Date: Tue Aug 21 02:16:21 2007
New Revision: 57227

Modified:
   python/trunk/Lib/test/test_xmlrpc.py
Log:

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]


Modified: python/trunk/Lib/test/test_xmlrpc.py
==============================================================================
--- python/trunk/Lib/test/test_xmlrpc.py	(original)
+++ python/trunk/Lib/test/test_xmlrpc.py	Tue Aug 21 02:16:21 2007
@@ -352,38 +352,58 @@
         SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = False
 
     def test_simple1(self):
-        p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
-        self.assertEqual(p.pow(6,8), 6**8)
+        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_introspection1(self):
-        p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
-        meth = p.system.listMethods()
-        expected_methods = set(['pow', 'div', 'add', 'system.listMethods',
-            'system.methodHelp', 'system.methodSignature', 'system.multicall'])
-        self.assertEqual(set(meth), expected_methods)
+        try:
+            p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
+            meth = p.system.listMethods()
+            expected_methods = set(['pow', 'div', 'add', 'system.listMethods',
+                '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):
-        p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
-        divhelp = p.system.methodHelp('div')
-        self.assertEqual(divhelp, 'This is the div function')
+        try:
+            p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
+            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):
         # the SimpleXMLRPCServer doesn't support signatures, but
         # at least check that we can try
-        p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
-        divsig = p.system.methodSignature('div')
-        self.assertEqual(divsig, 'signatures not supported')
+        try:
+            p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
+            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):
-        p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
-        multicall = xmlrpclib.MultiCall(p)
-        multicall.add(2,3)
-        multicall.pow(6,8)
-        multicall.div(127,42)
-        add_result, pow_result, div_result = multicall()
-        self.assertEqual(add_result, 2+3)
-        self.assertEqual(pow_result, 6**8)
-        self.assertEqual(div_result, 127//42)
+        try:
+            p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
+            multicall = xmlrpclib.MultiCall(p)
+            multicall.add(2,3)
+            multicall.pow(6,8)
+            multicall.div(127,42)
+            add_result, pow_result, div_result = multicall()
+            self.assertEqual(add_result, 2+3)
+            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
@@ -424,9 +444,16 @@
         flagval = SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header
         self.assertEqual(flagval, False)
 
-        # test a call that won't fail just as a smoke test
-        p = xmlrpclib.ServerProxy('http://localhost:%d' % PORT)
-        self.assertEqual(p.pow(6,8), 6**8)
+        # enable traceback reporting
+        SimpleXMLRPCServer.SimpleXMLRPCServer._send_traceback_header = True
+
+        # 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):
         # use the broken message class


More information about the Python-checkins mailing list