blob: b9853ed80b6d44219638aa720e7e1bd6078cc132 [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.
17 server = xmlrpclib.ServerProxy("http://time.xmlrpc.com/RPC2")
Neal Norwitz64018ae2008-03-24 05:51:45 +000018 try:
19 t0 = server.currentTime.getCurrentTime()
20 except socket.error as e:
Antoine Pitrou305c6b82009-11-03 17:13:59 +000021 self.skipTest("network error: %s" % e)
Neal Norwitz64018ae2008-03-24 05:51:45 +000022 return
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000023
24 # Perform a minimal sanity check on the result, just to be sure
25 # the request means what we think it means.
26 t1 = xmlrpclib.DateTime()
27
28 dt0 = xmlrpclib._datetime_type(t0.value)
29 dt1 = xmlrpclib._datetime_type(t1.value)
30 if dt0 > dt1:
31 delta = dt0 - dt1
32 else:
33 delta = dt1 - dt0
34 # The difference between the system time here and the system
35 # time on the server should not be too big.
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000036 self.assertTrue(delta.days <= 1)
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000037
Antoine Pitrou305c6b82009-11-03 17:13:59 +000038 def test_python_builders(self):
39 # Get the list of builders from the XMLRPC buildbot interface at
40 # python.org.
Antoine Pitrou8d9a4e62010-11-10 22:36:43 +000041 self.skipTest("XMLRPC interface removed in Buildbot 0.8.2")
Antoine Pitrou305c6b82009-11-03 17:13:59 +000042 server = xmlrpclib.ServerProxy("http://www.python.org/dev/buildbot/all/xmlrpc/")
43 try:
44 builders = server.getAllBuilders()
45 except socket.error as e:
46 self.skipTest("network error: %s" % e)
47 return
48
49 # Perform a minimal sanity check on the result, just to be sure
50 # the request means what we think it means.
Raymond Hettinger57d1a882011-02-23 00:46:28 +000051 self.assertIsInstance(builders, collections.abc.Sequence)
Brett Cannonc84dc9d2010-07-05 22:11:16 +000052 self.assertTrue([x for x in builders if "3.x" in x], builders)
Antoine Pitrou305c6b82009-11-03 17:13:59 +000053
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000054
55def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +000056 support.requires("network")
57 support.run_unittest(CurrentTimeTest)
Jeremy Hylton5d8a88a2007-08-14 16:47:39 +000058
59if __name__ == "__main__":
60 test_main()