aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_xmlrpc_net.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_xmlrpc_net.py')
-rw-r--r--Lib/test/test_xmlrpc_net.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/Lib/test/test_xmlrpc_net.py b/Lib/test/test_xmlrpc_net.py
new file mode 100644
index 00000000000..d72f8ac895c
--- /dev/null
+++ b/Lib/test/test_xmlrpc_net.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python3
+
+import collections
+import errno
+import socket
+import sys
+import unittest
+from test import support
+
+import xmlrpc.client as xmlrpclib
+
+class CurrentTimeTest(unittest.TestCase):
+
+ def test_current_time(self):
+ # Get the current time from xmlrpc.com. This code exercises
+ # the minimal HTTP functionality in xmlrpclib.
+ self.skipTest("time.xmlrpc.com is unreliable")
+ server = xmlrpclib.ServerProxy("http://time.xmlrpc.com/RPC2")
+ try:
+ t0 = server.currentTime.getCurrentTime()
+ except socket.error as e:
+ self.skipTest("network error: %s" % e)
+ return
+
+ # Perform a minimal sanity check on the result, just to be sure
+ # the request means what we think it means.
+ t1 = xmlrpclib.DateTime()
+
+ dt0 = xmlrpclib._datetime_type(t0.value)
+ dt1 = xmlrpclib._datetime_type(t1.value)
+ if dt0 > dt1:
+ delta = dt0 - dt1
+ else:
+ delta = dt1 - dt0
+ # The difference between the system time here and the system
+ # time on the server should not be too big.
+ self.assertTrue(delta.days <= 1)
+
+ def test_python_builders(self):
+ # Get the list of builders from the XMLRPC buildbot interface at
+ # python.org.
+ server = xmlrpclib.ServerProxy("http://buildbot.python.org/all/xmlrpc/")
+ try:
+ builders = server.getAllBuilders()
+ except socket.error as e:
+ self.skipTest("network error: %s" % e)
+ return
+ self.addCleanup(lambda: server('close')())
+
+ # Perform a minimal sanity check on the result, just to be sure
+ # the request means what we think it means.
+ self.assertIsInstance(builders, collections.Sequence)
+ self.assertTrue([x for x in builders if "3.x" in x], builders)
+
+
+def test_main():
+ support.requires("network")
+ support.run_unittest(CurrentTimeTest)
+
+if __name__ == "__main__":
+ test_main()