# 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()