43
46
ev = EvaluatorSub(notifier)
44
47
ev.api_client = mock.MagicMock()
45
ev._refresh(mock.MagicMock(), mock.MagicMock(), mock.MagicMock())
48
ev._refresh(mock.MagicMock(), mock.MagicMock(),
49
mock.MagicMock(), mock.MagicMock())
46
50
self.assertTrue(self.called)
52
def test_base_time_constraints(self):
53
alarm = mock.MagicMock()
54
alarm.time_constraints = [
56
'description': 'test',
57
'start': '0 11 * * *', # daily at 11:00
58
'duration': 10800, # 3 hours
61
'description': 'test',
62
'start': '0 23 * * *', # daily at 23:00
63
'duration': 10800, # 3 hours
66
cls = evaluator.Evaluator
67
timeutils.set_time_override(datetime.datetime(2014, 1, 1, 12, 0, 0))
68
self.assertTrue(cls.within_time_constraint(alarm))
70
timeutils.set_time_override(datetime.datetime(2014, 1, 2, 1, 0, 0))
71
self.assertTrue(cls.within_time_constraint(alarm))
73
timeutils.set_time_override(datetime.datetime(2014, 1, 2, 5, 0, 0))
74
self.assertFalse(cls.within_time_constraint(alarm))
76
def test_base_time_constraints_complex(self):
77
alarm = mock.MagicMock()
78
alarm.time_constraints = [
80
'description': 'test',
81
# Every consecutive 2 minutes (from the 3rd to the 57th) past
82
# every consecutive 2 hours (between 3:00 and 12:59) on every day.
83
'start': '3-57/2 3-12/2 * * *',
87
cls = evaluator.Evaluator
90
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 3, 3, 0))
91
self.assertTrue(cls.within_time_constraint(alarm))
92
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 3, 31, 0))
93
self.assertTrue(cls.within_time_constraint(alarm))
94
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 3, 57, 0))
95
self.assertTrue(cls.within_time_constraint(alarm))
97
# test minutes outside
98
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 3, 2, 0))
99
self.assertFalse(cls.within_time_constraint(alarm))
100
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 3, 4, 0))
101
self.assertFalse(cls.within_time_constraint(alarm))
102
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 3, 58, 0))
103
self.assertFalse(cls.within_time_constraint(alarm))
106
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 3, 31, 0))
107
self.assertTrue(cls.within_time_constraint(alarm))
108
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 5, 31, 0))
109
self.assertTrue(cls.within_time_constraint(alarm))
110
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 11, 31, 0))
111
self.assertTrue(cls.within_time_constraint(alarm))
114
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 1, 31, 0))
115
self.assertFalse(cls.within_time_constraint(alarm))
116
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 4, 31, 0))
117
self.assertFalse(cls.within_time_constraint(alarm))
118
timeutils.set_time_override(datetime.datetime(2014, 1, 5, 12, 31, 0))
119
self.assertFalse(cls.within_time_constraint(alarm))
121
def test_base_time_constraints_timezone(self):
122
alarm = mock.MagicMock()
123
alarm.time_constraints = [
125
'description': 'test',
126
'start': '0 11 * * *', # daily at 11:00
127
'duration': 10800, # 3 hours
128
'timezone': 'Europe/Ljubljana'}
130
cls = evaluator.Evaluator
131
dt_eu = datetime.datetime(2014, 1, 1, 12, 0, 0,
132
tzinfo=pytz.timezone('Europe/Ljubljana'))
133
dt_us = datetime.datetime(2014, 1, 1, 12, 0, 0,
134
tzinfo=pytz.timezone('US/Eastern'))
135
timeutils.set_time_override(dt_eu.astimezone(pytz.UTC))
136
self.assertTrue(cls.within_time_constraint(alarm))
138
timeutils.set_time_override(dt_us.astimezone(pytz.UTC))
139
self.assertFalse(cls.within_time_constraint(alarm))