- self.root._get()
- self.failUnless(self.root.result ==
- [{'name': 'instances', 'uri': '/instances'},
- {'name': 'info', 'uri': '/info'},
- {'name': 'os', 'uri': '/os'},
- {'name': 'status', 'uri': '/status'},
- {'name': 'tags', 'uri': '/tags'},
- {'name': 'nodes', 'uri': '/nodes'}])
-
+ expected = [
+ {'name': 'info', 'uri': '/info'},
+ {'name': 'instances', 'uri': '/instances'},
+ {'name': 'nodes', 'uri': '/nodes'},
+ {'name': 'os', 'uri': '/os'},
+ {'name': 'tags', 'uri': '/tags'},
+ {'name': 'version', 'uri': '/version'},
+ ]
+ self.assertEquals(self.root.GET(), expected)
+
+
+class HttpLogfileTests(unittest.TestCase):
+ """Rests for HttpLogfile class."""
+
+ class FakeRequest:
+ FAKE_ADDRESS = "1.2.3.4"
+
+ def address_string(self):
+ return self.FAKE_ADDRESS
+
+ def setUp(self):
+ self.tmpfile = tempfile.NamedTemporaryFile()
+ self.logfile = RESTHTTPServer.HttpLogfile(self.tmpfile.name)
+
+ def testFormatLogTime(self):
+ self._TestInTimezone(1208646123.0, "Europe/London",
+ "19/Apr/2008:23:02:03 +0000")
+ self._TestInTimezone(1208646123, "Europe/Zurich",
+ "19/Apr/2008:23:02:03 +0000")
+ self._TestInTimezone(1208646123, "Australia/Sydney",
+ "19/Apr/2008:23:02:03 +0000")
+
+ def _TestInTimezone(self, seconds, timezone, expected):
+ """Tests HttpLogfile._FormatLogTime with a specific timezone
+
+ """
+ # Preserve environment
+ old_TZ = os.environ.get("TZ", None)
+ try:
+ os.environ["TZ"] = timezone
+ time.tzset()
+ result = self.logfile._FormatLogTime(seconds)
+ finally:
+ # Restore environment
+ if old_TZ is not None:
+ os.environ["TZ"] = old_TZ
+ elif "TZ" in os.environ:
+ del os.environ["TZ"]
+ time.tzset()
+
+ self.assertEqual(result, expected)
+
+ def testClose(self):
+ self.logfile.Close()
+
+ def testCloseAndWrite(self):
+ request = self.FakeRequest()
+ self.logfile.Close()
+ self.assertRaises(errors.ProgrammerError, self.logfile.LogRequest,
+ request, "Message")
+
+ def testLogRequest(self):
+ request = self.FakeRequest()
+ self.logfile.LogRequest(request, "This is only a %s", "test")
+ self.logfile.Close()
+