Statistics
| Branch: | Tag: | Revision:

root / test / ganeti.http_unittest.py @ 3fc175f0

History | View | Annotate | Download (2.3 kB)

1 a0638838 Oleksiy Mishchenko
#!/usr/bin/python
2 a0638838 Oleksiy Mishchenko
#
3 a0638838 Oleksiy Mishchenko
4 a0638838 Oleksiy Mishchenko
# Copyright (C) 2007, 2008 Google Inc.
5 a0638838 Oleksiy Mishchenko
#
6 a0638838 Oleksiy Mishchenko
# This program is free software; you can redistribute it and/or modify
7 a0638838 Oleksiy Mishchenko
# it under the terms of the GNU General Public License as published by
8 a0638838 Oleksiy Mishchenko
# the Free Software Foundation; either version 2 of the License, or
9 a0638838 Oleksiy Mishchenko
# (at your option) any later version.
10 a0638838 Oleksiy Mishchenko
#
11 a0638838 Oleksiy Mishchenko
# This program is distributed in the hope that it will be useful, but
12 a0638838 Oleksiy Mishchenko
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 a0638838 Oleksiy Mishchenko
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 a0638838 Oleksiy Mishchenko
# General Public License for more details.
15 a0638838 Oleksiy Mishchenko
#
16 a0638838 Oleksiy Mishchenko
# You should have received a copy of the GNU General Public License
17 a0638838 Oleksiy Mishchenko
# along with this program; if not, write to the Free Software
18 a0638838 Oleksiy Mishchenko
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 a0638838 Oleksiy Mishchenko
# 02110-1301, USA.
20 a0638838 Oleksiy Mishchenko
21 a0638838 Oleksiy Mishchenko
22 a0638838 Oleksiy Mishchenko
"""Script for unittesting the http module"""
23 a0638838 Oleksiy Mishchenko
24 a0638838 Oleksiy Mishchenko
25 a0638838 Oleksiy Mishchenko
import os
26 a0638838 Oleksiy Mishchenko
import unittest
27 a0638838 Oleksiy Mishchenko
import tempfile
28 a0638838 Oleksiy Mishchenko
import time
29 a0638838 Oleksiy Mishchenko
30 a0638838 Oleksiy Mishchenko
from ganeti import http
31 a0638838 Oleksiy Mishchenko
32 a0638838 Oleksiy Mishchenko
33 a0638838 Oleksiy Mishchenko
class HttpLogfileTests(unittest.TestCase):
34 a0638838 Oleksiy Mishchenko
  """Rests for ApacheLogfile class."""
35 a0638838 Oleksiy Mishchenko
36 a0638838 Oleksiy Mishchenko
  class FakeRequest:
37 a0638838 Oleksiy Mishchenko
    FAKE_ADDRESS = "1.2.3.4"
38 a0638838 Oleksiy Mishchenko
39 a0638838 Oleksiy Mishchenko
    def address_string(self):
40 a0638838 Oleksiy Mishchenko
      return self.FAKE_ADDRESS
41 a0638838 Oleksiy Mishchenko
42 a0638838 Oleksiy Mishchenko
  def setUp(self):
43 a0638838 Oleksiy Mishchenko
    self.tmpfile = tempfile.NamedTemporaryFile()
44 a0638838 Oleksiy Mishchenko
    self.logfile = http.ApacheLogfile(self.tmpfile)
45 a0638838 Oleksiy Mishchenko
46 a0638838 Oleksiy Mishchenko
  def tearDown(self):
47 a0638838 Oleksiy Mishchenko
    self.tmpfile.close()
48 a0638838 Oleksiy Mishchenko
49 a0638838 Oleksiy Mishchenko
  def testFormatLogTime(self):
50 a0638838 Oleksiy Mishchenko
    self._TestInTimezone(1208646123.0, "Europe/London",
51 a0638838 Oleksiy Mishchenko
                         "19/Apr/2008:23:02:03 +0000")
52 a0638838 Oleksiy Mishchenko
    self._TestInTimezone(1208646123, "Europe/Zurich",
53 a0638838 Oleksiy Mishchenko
                         "19/Apr/2008:23:02:03 +0000")
54 a0638838 Oleksiy Mishchenko
    self._TestInTimezone(1208646123, "Australia/Sydney",
55 a0638838 Oleksiy Mishchenko
                         "19/Apr/2008:23:02:03 +0000")
56 a0638838 Oleksiy Mishchenko
57 a0638838 Oleksiy Mishchenko
  def _TestInTimezone(self, seconds, timezone, expected):
58 a0638838 Oleksiy Mishchenko
    """Tests HttpLogfile._FormatLogTime with a specific timezone
59 a0638838 Oleksiy Mishchenko

60 a0638838 Oleksiy Mishchenko
    """
61 a0638838 Oleksiy Mishchenko
    # Preserve environment
62 a0638838 Oleksiy Mishchenko
    old_TZ = os.environ.get("TZ", None)
63 a0638838 Oleksiy Mishchenko
    try:
64 a0638838 Oleksiy Mishchenko
      os.environ["TZ"] = timezone
65 a0638838 Oleksiy Mishchenko
      time.tzset()
66 a0638838 Oleksiy Mishchenko
      result = self.logfile._FormatLogTime(seconds)
67 a0638838 Oleksiy Mishchenko
    finally:
68 a0638838 Oleksiy Mishchenko
      # Restore environment
69 a0638838 Oleksiy Mishchenko
      if old_TZ is not None:
70 a0638838 Oleksiy Mishchenko
        os.environ["TZ"] = old_TZ
71 a0638838 Oleksiy Mishchenko
      elif "TZ" in os.environ:
72 a0638838 Oleksiy Mishchenko
        del os.environ["TZ"]
73 a0638838 Oleksiy Mishchenko
      time.tzset()
74 a0638838 Oleksiy Mishchenko
75 a0638838 Oleksiy Mishchenko
    self.assertEqual(result, expected)
76 a0638838 Oleksiy Mishchenko
77 a0638838 Oleksiy Mishchenko
78 a0638838 Oleksiy Mishchenko
  def testLogRequest(self):
79 a0638838 Oleksiy Mishchenko
    request = self.FakeRequest()
80 a0638838 Oleksiy Mishchenko
    self.logfile.LogRequest(request, "This is only a %s", "test")
81 a0638838 Oleksiy Mishchenko
82 a0638838 Oleksiy Mishchenko
83 a0638838 Oleksiy Mishchenko
if __name__ == '__main__':
84 a0638838 Oleksiy Mishchenko
  unittest.main()