Jeremy Hylton | 5d8a88a | 2007-08-14 16:47:39 +0000 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | |
Neal Norwitz | 64018ae | 2008-03-24 05:51:45 +0000 | [diff] [blame] | 3 | import errno |
| 4 | import socket |
| 5 | import sys |
Jeremy Hylton | 5d8a88a | 2007-08-14 16:47:39 +0000 | [diff] [blame] | 6 | import unittest |
Benjamin Peterson | ee8712c | 2008-05-20 21:35:26 +0000 | [diff] [blame] | 7 | from test import support |
Jeremy Hylton | 5d8a88a | 2007-08-14 16:47:39 +0000 | [diff] [blame] | 8 | |
Georg Brandl | 2442015 | 2008-05-26 16:32:26 +0000 | [diff] [blame^] | 9 | import xmlrpc.client as xmlrpclib |
Jeremy Hylton | 5d8a88a | 2007-08-14 16:47:39 +0000 | [diff] [blame] | 10 | |
| 11 | class CurrentTimeTest(unittest.TestCase): |
| 12 | |
| 13 | def test_current_time(self): |
| 14 | # Get the current time from xmlrpc.com. This code exercises |
| 15 | # the minimal HTTP functionality in xmlrpclib. |
| 16 | server = xmlrpclib.ServerProxy("http://time.xmlrpc.com/RPC2") |
Neal Norwitz | 64018ae | 2008-03-24 05:51:45 +0000 | [diff] [blame] | 17 | try: |
| 18 | t0 = server.currentTime.getCurrentTime() |
| 19 | except socket.error as e: |
Neal Norwitz | f7276c9 | 2008-04-01 07:38:41 +0000 | [diff] [blame] | 20 | print(" test_current_time: skipping test, got error: %s" % e, |
Neal Norwitz | 64018ae | 2008-03-24 05:51:45 +0000 | [diff] [blame] | 21 | file=sys.stderr) |
| 22 | return |
Jeremy Hylton | 5d8a88a | 2007-08-14 16:47:39 +0000 | [diff] [blame] | 23 | |
| 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. |
| 36 | self.assert_(delta.days <= 1) |
| 37 | |
| 38 | |
| 39 | def test_main(): |
Benjamin Peterson | ee8712c | 2008-05-20 21:35:26 +0000 | [diff] [blame] | 40 | support.requires("network") |
| 41 | support.run_unittest(CurrentTimeTest) |
Jeremy Hylton | 5d8a88a | 2007-08-14 16:47:39 +0000 | [diff] [blame] | 42 | |
| 43 | if __name__ == "__main__": |
| 44 | test_main() |