blob: e4ff67a56b277ae9fa85a80c4e9c18f116e9b560 [file] [log] [blame]
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Module for timed_event unittests."""
# pylint: disable=g-missing-super-call
import datetime
import unittest
import config_reader
import datastore_client
import mock
import task_config_reader
import time_converter
import timed_event
from google.appengine.ext import ndb
from google.appengine.ext import testbed
class FakeTask(object):
def __init__(self, name, day=None, hour=None):
self.name = name
self.day = day
self.hour = hour
class TimedEventTestCase(unittest.TestCase):
def setUp(self):
mock_utc_now = mock.patch('time_converter.utc_now')
self._mock_utc_now = mock_utc_now.start()
self.addCleanup(mock_utc_now.stop)
self.testbed = testbed.Testbed()
self.testbed.activate()
self.addCleanup(self.testbed.deactivate)
self.testbed.init_datastore_v3_stub()
self.testbed.init_memcache_stub()
ndb.get_context().clear_cache()
self.config = config_reader.ConfigReader(None)
class NightlyEventTestCase(TimedEventTestCase):
_KLASS = timed_event.Nightly
_DEFAULT_PST_HOUR = _KLASS.DEFAULT_PST_HOUR
_DEFAULT_UTC_HOUR = time_converter.convert_time_info(
time_converter.TimeInfo(None, _DEFAULT_PST_HOUR)).hour
def testCreateNightlyEventWithoutLastExec(self):
"""Create a nightly event without last_exec_utc in datastore."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(2017, 8, 1, 4,
tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertFalse(event.should_handle)
def testCreateNightlyEventWithValidLastExecShouldNotHandle(self):
"""Create a nightly event with last_exec_utc but shouldn't be handled."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(2017, 8, 1, 4,
tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD, expected_last_exec_utc)
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertFalse(event.should_handle)
def testCreateCantHandleNightlyEventWithValidLastExecWithGAETesting(self):
"""Test a can't-be-handled event can be handled in testing on GAE."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(2017, 8, 1, 4,
tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD, expected_last_exec_utc)
with mock.patch('global_config.GAE_TESTING', return_value=True):
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertTrue(event.should_handle)
def testCreateNightlyEventWithValidLastExecShouldHandle(self):
"""Create a nightly event with last_exec_utc and should be handled."""
utc_now = datetime.datetime(2017, 8, 1, 5, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(2017, 8, 1, 4,
tzinfo=time_converter.UTC_TZ)
expected_cur_exec_utc = datetime.datetime(2017, 8, 1, 5,
tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD, expected_last_exec_utc)
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_cur_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertTrue(event.should_handle)
def testCreateNightlyEventWithOutdatedLastExec(self):
"""Create a nightly event with outdated last_exec_utc."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(2017, 8, 1, 4,
tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD,
expected_last_exec_utc - datetime.timedelta(hours=3))
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertFalse(event.should_handle)
def testCreateNightlyEventWithOutdatedLastExecWithGAETesting(self):
"""Test an event with old last exec can be handled in testing on GAE."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(2017, 8, 1, 4,
tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD,
expected_last_exec_utc - datetime.timedelta(hours=3))
with mock.patch('global_config.GAE_TESTING', return_value=True):
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertTrue(event.should_handle)
def testFilterTasksWithTaskHourForNightlyEvent(self):
"""Test filter_tasks with tasks which contain settings of hour."""
default_pst_hour = time_converter.convert_time_info(
time_converter.TimeInfo(None, 0),
source_tz=time_converter.UTC_TZ,
target_tz=time_converter.PST_TZ).hour
utc_now = datetime.datetime(2017, 8, 1, 0, 15,
tzinfo=time_converter.UTC_TZ)
self._mock_utc_now.return_value = utc_now
event = self._KLASS(
task_config_reader.EventSettings(True, None),
datetime.datetime(2017, 7, 31, 23, tzinfo=time_converter.UTC_TZ))
# It's in PST time.
task_list = [FakeTask('test1', day=None, hour=default_pst_hour+1),
FakeTask('test2', day=None, hour=default_pst_hour),
FakeTask('test3', day=None, hour=0),
FakeTask('test4', day=None, hour=default_pst_hour)]
event.set_task_list(task_list)
self.assertEqual(len(event.task_list), len(task_list))
event.filter_tasks()
# Verify only tasks that should be run at 0:00 in UTC are kept,
# since current time is 0:15.
self.assertEqual(len(event.task_list), 2)
self.assertEqual(sorted([t.name for t in event.task_list]),
['test2', 'test4'])
def testFilterTasksWithDefaultHourForNightlyEvent(self):
"""Test filter_tasks with tasks which don't contain settings of hour."""
utc_now = datetime.datetime(2017, 8, 1, self._DEFAULT_UTC_HOUR, 15,
tzinfo=time_converter.UTC_TZ)
self._mock_utc_now.return_value = utc_now
event = self._KLASS(
task_config_reader.EventSettings(True, None),
datetime.datetime(2017, 8, 1, 3, tzinfo=time_converter.UTC_TZ))
# It's in PST time.
task_list = [FakeTask('test1', day=None, hour=self._DEFAULT_PST_HOUR - 1),
FakeTask('test2', day=None, hour=self._DEFAULT_PST_HOUR),
FakeTask('test3', day=None, hour=self._DEFAULT_PST_HOUR + 1),
FakeTask('test4', day=None, hour=None)]
event.set_task_list(task_list)
self.assertEqual(len(event.task_list), len(task_list))
event.filter_tasks()
# Verify only tasks that should be run at 21:00 (the default pst hour
# for nightly events) are kept.
self.assertEqual(len(event.task_list), 2)
self.assertEqual(sorted([t.name for t in event.task_list]),
['test2', 'test4'])
def testFilterTasksWithTaskHourWithGAETesting(self):
"""Verify all tasks are kept when testing on GAE."""
utc_now = datetime.datetime(2017, 8, 1, 0, 15,
tzinfo=time_converter.UTC_TZ)
self._mock_utc_now.return_value = utc_now
with mock.patch('global_config.GAE_TESTING', return_value=True):
event = self._KLASS(
task_config_reader.EventSettings(True, None),
datetime.datetime(2017, 7, 31, 23, tzinfo=time_converter.UTC_TZ))
task_list = [FakeTask('test1', day=None, hour=3),
FakeTask('test2', day=None, hour=0),
FakeTask('test3', day=None, hour=4),
FakeTask('test4', day=None, hour=0)]
event.set_task_list(task_list)
self.assertEqual(len(event.task_list), len(task_list))
event.filter_tasks()
self.assertEqual(len(event.task_list), 4)
self.assertEqual(sorted([t.name for t in event.task_list]),
['test1', 'test2', 'test3', 'test4'])
def testSetTaskListForNightlyEvent(self):
"""Verify tasks' timeinfo are correctly converted to UTC."""
self._mock_utc_now.return_value = datetime.datetime.now(
time_converter.UTC_TZ)
event = self._KLASS(
task_config_reader.EventSettings(True, None), None)
# It's in PST time.
task_list = [FakeTask('test1', day=None, hour=self._DEFAULT_PST_HOUR),
FakeTask('test2', day=None, hour=0),
FakeTask('test3', day=None, hour=self._DEFAULT_PST_HOUR+1),
FakeTask('test4', day=None, hour=None)]
event.set_task_list(task_list)
tasks_with_default_utc_hour = [
t.name for t in event.task_list if t.hour == self._DEFAULT_UTC_HOUR]
self.assertEqual(sorted(tasks_with_default_utc_hour),
['test1', 'test4'])
class WeeklyEventTestCase(TimedEventTestCase):
_KLASS = timed_event.Weekly
_DEFAULT_PST_DAY = _KLASS.DEFAULT_PST_DAY
_DEFAULT_PST_HOUR = _KLASS.DEFAULT_PST_HOUR
_DEFAULT_UTC_TIMEINFO = time_converter.convert_time_info(
time_converter.TimeInfo(_DEFAULT_PST_DAY, _DEFAULT_PST_HOUR))
_DEFAULT_UTC_DAY = _DEFAULT_UTC_TIMEINFO.weekday
_DEFAULT_UTC_HOUR = _DEFAULT_UTC_TIMEINFO.hour
def testCreateWeeklyEventWithoutLastExec(self):
"""Create a weekly event without last_exec_utc in datastore."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(
2017, 8, 1, 4, tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertFalse(event.should_handle)
def testCreateWeeklyEventWithoutLastExecWithGAETesting(self):
"""Test an event without last exec can be handled in testing on GAE."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(
2017, 8, 1, 4, tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
with mock.patch('global_config.GAE_TESTING', return_value=True):
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertTrue(event.should_handle)
def testCreateWeeklyEventWithValidLastExecShouldNotHandle(self):
"""Create a weekly event with last_exec_utc but shouldn't be handled."""
utc_now = datetime.datetime(2017, 8, 1, self._DEFAULT_UTC_HOUR-1, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(
2017, 8, 1, self._DEFAULT_UTC_HOUR-1, tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD, expected_last_exec_utc)
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertFalse(event.should_handle)
def testCreateCantHandleWeeklyEventWithValidLastExecWithGAETesting(self):
"""Test a can't-be-handled event can be handled in testing on GAE."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(
2017, 8, 1, 4, tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD, expected_last_exec_utc)
with mock.patch('global_config.GAE_TESTING', return_value=True):
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertTrue(event.should_handle)
def testCreateWeeklyEventWithValidLastExecShouldHandle(self):
"""Create a nightly event with last_exec_utc and should be handled."""
utc_now = datetime.datetime(2017, 8, 1, self._DEFAULT_UTC_HOUR, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(
2017, 7, 31, self._DEFAULT_UTC_HOUR, tzinfo=time_converter.UTC_TZ)
expected_cur_exec_utc = datetime.datetime(
2017, 8, 1, self._DEFAULT_UTC_HOUR, tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD, expected_last_exec_utc)
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_cur_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertTrue(event.should_handle)
def testCreateWeeklyEventWithOutdatedLastExec(self):
"""Create a weekly event with outdated last_exec_utc."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(
2017, 8, 1, 4, tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD,
expected_last_exec_utc - datetime.timedelta(days=3))
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertFalse(event.should_handle)
def testCreateWeeklyEventWithOutdatedLastExecWithGAETesting(self):
"""Test an event with old last exec can be handled in testing on GAE."""
utc_now = datetime.datetime(2017, 8, 1, 4, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(
2017, 8, 1, 4, tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD,
expected_last_exec_utc - datetime.timedelta(days=3))
with mock.patch('global_config.GAE_TESTING', return_value=True):
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_last_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertTrue(event.should_handle)
def testCreateWeeklyEventWithEventHourSettings(self):
"""Create a weekly event with setting event hour."""
self.config.add_section(self._KLASS.section_name())
# Set weekly default kick off time to everyday 14:00 PST (21:00 UTC).
self.config.set(self._KLASS.section_name(), 'hour', '14')
expected_utc_hour = time_converter.convert_time_info(
time_converter.TimeInfo(self._DEFAULT_PST_DAY, 14)).hour
utc_now = datetime.datetime(2017, 8, 1, expected_utc_hour, 15,
tzinfo=time_converter.UTC_TZ)
expected_last_exec_utc = datetime.datetime(
2017, 7, 31, expected_utc_hour, tzinfo=time_converter.UTC_TZ)
expected_cur_exec_utc = datetime.datetime(
2017, 8, 1, expected_utc_hour, tzinfo=time_converter.UTC_TZ)
task_config = task_config_reader.TaskConfig(self.config)
self._mock_utc_now.return_value = utc_now
last_exec_client = datastore_client.LastExecutionRecordStore()
last_exec_client.set_last_execute_time(
self._KLASS.KEYWORD, expected_last_exec_utc)
event = self._KLASS(
task_config.get_event_setting(self._KLASS.section_name()),
last_exec_client.get_last_execute_time(self._KLASS.KEYWORD))
self.assertEqual(event.target_exec_utc, expected_cur_exec_utc)
self.assertEqual(event.last_exec_utc, expected_last_exec_utc)
self.assertTrue(event.should_handle)
def testFilterTasksWithTaskDayForWeeklyEvent(self):
"""Test filter_tasks with tasks which contain settings of day."""
utc_now = datetime.datetime(2017, 8, 6, self._DEFAULT_UTC_HOUR, 15,
tzinfo=time_converter.UTC_TZ)
self._mock_utc_now.return_value = utc_now
event = self._KLASS(
task_config_reader.EventSettings(True, None),
datetime.datetime(2017, 8, 5, self._DEFAULT_UTC_HOUR,
tzinfo=time_converter.UTC_TZ))
# It's in PST time.
task_list = [FakeTask('test1', day=5),
FakeTask('test2', day=0),
FakeTask('test3', day=3),
FakeTask('test4', day=5)]
event.set_task_list(task_list)
self.assertEqual(len(event.task_list), len(task_list))
event.filter_tasks()
# Verify only tasks that should be run at Saturday 23:00 in PST are kept,
# since 2017-08-06 6:00 is Sunday in UTC.
self.assertEqual(len(event.task_list), 2)
self.assertEqual(sorted([t.name for t in event.task_list]),
['test1', 'test4'])
def testFilterTasksWithDefaultDayForWeeklyEvent(self):
"""Test filter_tasks with tasks which don't contain settings of day."""
utc_now = datetime.datetime(2017, 8, 6, self._DEFAULT_UTC_HOUR, 15,
tzinfo=time_converter.UTC_TZ)
self._mock_utc_now.return_value = utc_now
event = self._KLASS(
task_config_reader.EventSettings(True, None),
datetime.datetime(2017, 8, 5, self._DEFAULT_UTC_HOUR,
tzinfo=time_converter.UTC_TZ))
# It's in PST time.
task_list = [FakeTask('test1', day=5),
FakeTask('test2', day=6),
FakeTask('test3', day=4),
FakeTask('test4', day=None)]
event.set_task_list(task_list)
self.assertEqual(len(event.task_list), len(task_list))
event.filter_tasks()
# Verify only tasks that should be run at Saturday 23:00 in PST are kept,
# since 2017-08-06 6:00 is Sunday in UTC.
# If a task's day is not set, by default it should be run at
# 6:00 at every Sunday in UTC (equals to 23:00 at every Saturday in PST).
self.assertEqual(len(event.task_list), 2)
self.assertEqual(sorted([t.name for t in event.task_list]),
['test1', 'test4'])
def testFilterTasksWithTaskDayWithGAETesting(self):
"""Verify all tasks are kept in testing on GAE."""
utc_now = datetime.datetime(2017, 8, 6, self._DEFAULT_UTC_HOUR, 15,
tzinfo=time_converter.UTC_TZ)
self._mock_utc_now.return_value = utc_now
with mock.patch('global_config.GAE_TESTING', return_value=True):
event = self._KLASS(
task_config_reader.EventSettings(True, None),
datetime.datetime(2017, 8, 5, self._DEFAULT_UTC_HOUR,
tzinfo=time_converter.UTC_TZ))
task_list = [FakeTask('test1', day=6),
FakeTask('test2', day=0),
FakeTask('test3', day=3),
FakeTask('test4', day=6)]
event.set_task_list(task_list)
self.assertEqual(len(event.task_list), len(task_list))
event.filter_tasks()
self.assertEqual(len(event.task_list), 4)
self.assertEqual(sorted([t.name for t in event.task_list]),
['test1', 'test2', 'test3', 'test4'])
def testSetTaskListForWeeklyEventCheckWeekday(self):
"""Verify tasks' timeinfo are correctly converted to UTC."""
self._mock_utc_now.return_value = datetime.datetime.now(
time_converter.UTC_TZ)
event = self._KLASS(
task_config_reader.EventSettings(True, None), None)
# It's in PST time.
task_list = [FakeTask('test1', day=self._DEFAULT_PST_DAY),
FakeTask('test2', day=0),
FakeTask('test3', day=self._DEFAULT_PST_DAY-1),
FakeTask('test4', day=None)]
event.set_task_list(task_list)
tasks_with_default_utc_day = [
t.name for t in event.task_list if t.day == self._DEFAULT_UTC_DAY]
self.assertEqual(sorted(tasks_with_default_utc_day),
['test1', 'test4'])
def testSetTaskListForWeeklyEventCheckHour(self):
"""Verify tasks' timeinfo are correctly converted to UTC."""
self._mock_utc_now.return_value = datetime.datetime.now(
time_converter.UTC_TZ)
event = self._KLASS(
task_config_reader.EventSettings(True, None), None)
# It's in PST time.
task_list = [FakeTask('test1', day=self._DEFAULT_PST_DAY),
FakeTask('test2', day=self._DEFAULT_PST_DAY, hour=0),
FakeTask('test3', day=self._DEFAULT_PST_DAY,
hour=self._DEFAULT_PST_HOUR)]
event.set_task_list(task_list)
tasks_with_default_utc_hour = [
t.name for t in event.task_list if t.hour == self._DEFAULT_UTC_HOUR]
self.assertEqual(sorted(tasks_with_default_utc_hour),
['test1', 'test3'])