def test_onhour(self): t = datetime.datetime(year=2015, month=12, day=1, hour=7, minute=5, tzinfo=zoneinfo.gettz('America/New_York')) with mock_datetime_now(t, datetime): i = instance(Tags=[ {'Key': 'maid_offhours', 'Value': 'tz=est'}]) self.assertEqual(OnHour({})(i), True) self.assertEqual(OnHour({'onhour': 8})(i), False)
def test_custom_bad_tz(self): t = datetime.datetime.now(zoneinfo.gettz('America/New_York')) t = t.replace(year=2016, month=5, day=26, hour=7, minute=00) with mock_datetime_now(t, datetime): i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'off=(m-f,19);on=(m-f,7);tz=et'}]) self.assertEqual(OnHour({})(i), True) i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'off=(m-f,20);on=(m-f,7);tz=abc'}]) self.assertEqual(OnHour({})(i), False)
def test_tz_long_form_resolve(self): pacific = zoneinfo.gettz("America/Los_Angeles") nzt = zoneinfo.gettz("Pacific/Auckland") gmt = zoneinfo.gettz("Etc/GMT") easter_island = zoneinfo.gettz("Chile/EasterIsland") self.assertEqual(OnHour({}).get_tz('america/los_angeles'), pacific) self.assertEqual(OnHour({}).get_tz('pst'), pacific) self.assertEqual(OnHour({}).get_tz('pacific/auckland'), nzt) self.assertEqual(OnHour({}).get_tz('gmt'), gmt) self.assertEqual( OnHour({}).get_tz('chile/easterisland'), easter_island)
def test_onhour(self): t = datetime.datetime( year=2015, month=12, day=1, hour=7, minute=5, tzinfo=zoneinfo.gettz("America/New_York"), ) with mock_datetime_now(t, datetime): i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}]) self.assertEqual(OnHour({})(i), True) self.assertEqual(OnHour({"onhour": 8})(i), False)
def test_arizona_tz(self): t = datetime.datetime.now(zoneinfo.gettz("America/New_York")) t = t.replace(year=2016, month=5, day=26, hour=7, minute=00) with mock_datetime_now(t, datetime): i = instance(Tags=[{ "Key": "maid_offhours", "Value": "off=(m-f,19);on=(m-f,7);tz=at" }]) self.assertEqual(OnHour({})(i), True) i = instance(Tags=[{ "Key": "maid_offhours", "Value": "off=(m-f,20);on=(m-f,6);tz=ast" }]) self.assertEqual(OnHour({})(i), False)
def test_tz_only(self): t = datetime.datetime.now(zoneinfo.gettz('America/New_York')) t = t.replace(year=2016, month=5, day=26, hour=7, minute=00) with mock_datetime_now(t, datetime): i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}]) self.assertEqual(OnHour({})(i), True)
def test_opt_in_behavior(self): # Given the addition of opt out behavior, verify if its # not configured that we don't touch an instance that # has no downtime tag i = instance(Tags=[]) i2 = instance(Tags=[{'Key': 'maid_offhours', 'Value': ''}]) i3 = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'on'}]) t = datetime.datetime( year=2015, month=12, day=1, hour=19, minute=5, tzinfo=zoneinfo.gettz('America/New_York')) f = OffHour({}) with mock_datetime_now(t, datetime): self.assertEqual(f(i), False) self.assertEqual(f(i2), True) self.assertEqual(f(i3), True) t = datetime.datetime( year=2015, month=12, day=1, hour=7, minute=5, tzinfo=zoneinfo.gettz('America/New_York')) f = OnHour({}) with mock_datetime_now(t, datetime): self.assertEqual(f(i), False) self.assertEqual(f(i2), True) self.assertEqual(f(i3), True)
def test_custom_onhours(self): t = datetime.datetime.now(tzutil.gettz("America/New_York")) t = t.replace(year=2016, month=5, day=26, hour=7, minute=00) results = [] with mock_datetime_now(t, datetime): for i in [ instance( Tags=[ { "Key": "maid_offhours", "Value": "off=(m-f,19);on=(m-f,7);tz=et", } ] ), instance( Tags=[ { "Key": "maid_offhours", "Value": "off=(m-f,20);on=(m-f,9);tz=et", } ] ), ]: results.append(OnHour({})(i)) self.assertEqual(results, [True, False])
def test_custom_onhours(self): t = datetime.datetime.now(zoneinfo.gettz('America/New_York')) t = t.replace(year=2016, month=5, day=26, hour=7, minute=00) results = [] with mock_datetime_now(t, datetime): for i in [instance(Tags=[{'Key': 'maid_offhours', 'Value': 'off=(m-f,19);on=(m-f,7);tz=et'}]), instance(Tags=[{'Key': 'maid_offhours', 'Value': 'off=(m-f,20);on=(m-f,9);tz=et'}])]: results.append(OnHour({})(i)) self.assertEqual(results, [True, False])
def test_everyday_onhour(self): # weekends on means we match times on the weekend start_day = 14 # sunday t = datetime.datetime(year=2016, day=start_day, month=8, hour=7, minute=20) i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}]) f = OnHour({"weekends": False}) results = [] with mock_datetime_now(t, datetime) as dt: for n in range(7): dt.target = t.replace(day=start_day + n) results.append(f(i)) self.assertEqual(results, [True] * 7)
def test_weekends_only_offhour_support(self): # start day is a sunday, weekend only means we only stop # on friday evening. start_day = 14 t = datetime.datetime(year=2016, day=start_day, month=8, hour=7, minute=20) i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}]) f = OnHour({"weekends-only": True}) results = [] with mock_datetime_now(t, datetime) as dt: for n in range(7): dt.target = t.replace(day=start_day + n) results.append(f(i)) self.assertEqual(results, [False, True, False, False, False, False, False])
def xtest_time_match_stops_after_skew(self): hour = 7 t = datetime.datetime( year=2015, month=12, day=1, hour=hour, minute=5, tzinfo=zoneinfo.gettz('America/New_York')) i = instance(Tags=[ {'Key': 'maid_offhours', 'Value': 'tz=est'}]) f = OnHour({'skew': 1}) results = [] with mock_datetime_now(t, datetime) as dt: for n in range(0, 4): dt.target = t.replace(hour=hour + n) results.append(f(i)) self.assertEqual(results, [True, True, False, False])
def xtest_time_match_stops_after_skew(self): hour = 7 t = datetime.datetime( year=2015, month=12, day=1, hour=hour, minute=5, tzinfo=tzutil.gettz("America/New_York"), ) i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}]) f = OnHour({"skew": 1}) results = [] with mock_datetime_now(t, datetime) as dt: for n in range(0, 4): dt.target = t.replace(hour=hour + n) results.append(f(i)) self.assertEqual(results, [True, True, False, False])
def test_on_tag(self): t = datetime.datetime.now(zoneinfo.gettz("America/New_York")) t = t.replace(year=2016, month=5, day=26, hour=7, minute=00) with mock_datetime_now(t, datetime): i = instance(Tags=[{"Key": "maid_offhours", "Value": "on"}]) self.assertEqual(OnHour({})(i), True)
def test_tz_long_form_resolve(self): pacific = zoneinfo.gettz("America/Los_Angeles") nzt = zoneinfo.gettz("Pacific/Auckland") self.assertEqual(OnHour({}).get_tz('america/los_angeles'), pacific) self.assertEqual(OnHour({}).get_tz('pacific/auckland'), nzt)