| # Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import contextlib |
| import datetime |
| import os |
| import time |
| import unittest |
| |
| import common |
| |
| from autotest_lib.client.common_lib import time_utils |
| |
| |
| @contextlib.contextmanager |
| def set_time_zone(tz): |
| """Temporarily set the timezone to the specified value. |
| |
| This is needed because the unittest can be run in a server not in PST. |
| |
| @param tz: Name of the timezone for test, e.g., US/Pacific |
| """ |
| old_environ = os.environ.copy() |
| try: |
| os.environ['TZ'] = tz |
| time.tzset() |
| yield |
| finally: |
| os.environ.clear() |
| os.environ.update(old_environ) |
| time.tzset() |
| |
| |
| class time_utils_unittest(unittest.TestCase): |
| """Unittest for time_utils function.""" |
| |
| TIME_STRING = "2014-08-20 14:23:56" |
| TIME_SECONDS = 1408569836 |
| TIME_OBJ = datetime.datetime(year=2014, month=8, day=20, hour=14, |
| minute=23, second=56) |
| |
| def test_date_string_to_epoch_time(self): |
| """Test date parsing in date_string_to_epoch_time().""" |
| with set_time_zone('US/Pacific'): |
| parsed_seconds = time_utils.date_string_to_epoch_time( |
| self.TIME_STRING) |
| self.assertEqual(self.TIME_SECONDS, parsed_seconds) |
| |
| |
| def test_epoch_time_to_date_string(self): |
| """Test function epoch_time_to_date_string.""" |
| with set_time_zone('US/Pacific'): |
| time_string = time_utils.epoch_time_to_date_string( |
| self.TIME_SECONDS) |
| self.assertEqual(self.TIME_STRING, time_string) |
| |
| |
| def test_to_epoch_time_success(self): |
| """Test function to_epoch_time.""" |
| with set_time_zone('US/Pacific'): |
| self.assertEqual(self.TIME_SECONDS, |
| time_utils.to_epoch_time(self.TIME_STRING)) |
| |
| self.assertEqual(self.TIME_SECONDS, |
| time_utils.to_epoch_time(self.TIME_OBJ)) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |