blob: 457e3fb32b0e45d4967a1a45502e9765939c0b22 [file] [log] [blame]
Benjamin Peterson90f5ba52010-03-11 22:53:45 +00001#!/usr/bin/env python3
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +00002
Raymond Hettinger57d1a882011-02-23 00:46:28 +00003import collections.abc
Neal Norwitz64018ae2008-03-24 05:51:45 +00004import errno
5import socket
6import sys
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +00007import unittest
Benjamin Petersonee8712c2008-05-20 21:35:26 +00008from test import support
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +00009
Georg Brandl24420152008-05-26 16:32:26 +000010import xmlrpc.client as xmlrpclib
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000011
12class CurrentTimeTest(unittest.TestCase):
13
Benjamin Petersonb42dab32008-06-11 02:37:01 +000014 def test_current_time(self):
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000015 # Get the current time from xmlrpc.com. This code exercises
16 # the minimal HTTP functionality in xmlrpclib.
Antoine Pitrou5a88c382011-11-28 21:12:24 +010017 self.skipTest("time.xmlrpc.com is unreliable")
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000018 server = xmlrpclib.ServerProxy("http://time.xmlrpc.com/RPC2")
Neal Norwitz64018ae2008-03-24 05:51:45 +000019 try:
20 t0 = server.currentTime.getCurrentTime()
Andrew Svetlov0832af62012-12-18 23:10:48 +020021 except OSError as e:
Antoine Pitrou305c6b82009-11-03 17:13:59 +000022 self.skipTest("network error: %s" % e)
Neal Norwitz64018ae2008-03-24 05:51:45 +000023 return
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000024
25 # Perform a minimal sanity check on the result, just to be sure
26 # the request means what we think it means.
27 t1 = xmlrpclib.DateTime()
28
29 dt0 = xmlrpclib._datetime_type(t0.value)
30 dt1 = xmlrpclib._datetime_type(t1.value)
31 if dt0 > dt1:
32 delta = dt0 - dt1
33 else:
34 delta = dt1 - dt0
35 # The difference between the system time here and the system
36 # time on the server should not be too big.
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000037 self.assertTrue(delta.days <= 1)
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000038
Antoine Pitrou305c6b82009-11-03 17:13:59 +000039 def test_python_builders(self):
40 # Get the list of builders from the XMLRPC buildbot interface at
41 # python.org.
Georg Brandl26af3b22012-06-24 20:06:54 +020042 server = xmlrpclib.ServerProxy("http://buildbot.python.org/all/xmlrpc/")
Antoine Pitrou305c6b82009-11-03 17:13:59 +000043 try:
44 builders = server.getAllBuilders()
Andrew Svetlov0832af62012-12-18 23:10:48 +020045 except OSError as e:
Antoine Pitrou305c6b82009-11-03 17:13:59 +000046 self.skipTest("network error: %s" % e)
47 return
Antoine Pitrouf1c141b2011-11-28 21:14:46 +010048 self.addCleanup(lambda: server('close')())
Antoine Pitrou305c6b82009-11-03 17:13:59 +000049
50 # Perform a minimal sanity check on the result, just to be sure
51 # the request means what we think it means.
Raymond Hettinger57d1a882011-02-23 00:46:28 +000052 self.assertIsInstance(builders, collections.abc.Sequence)
Brett Cannonc84dc9d2010-07-05 22:11:16 +000053 self.assertTrue([x for x in builders if "3.x" in x], builders)
Antoine Pitrou305c6b82009-11-03 17:13:59 +000054
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000055
56def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +000057 support.requires("network")
58 support.run_unittest(CurrentTimeTest)
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000059
60if __name__ == "__main__":
61 test_main()