Exemplo n.º 1
0
 def test_process(self):
     f = OffHour({"opt-out": True})
     instances = [
         instance(Tags=[]),
         instance(Tags=[{"Key": "maid_offhours", "Value": ""}]),
         instance(Tags=[{"Key": "maid_offhours", "Value": "on"}]),
         instance(Tags=[{"Key": "maid_offhours", "Value": "off"}]),
         instance(
             Tags=[
                 {
                     "Key": "maid_offhours",
                     "Value": "off=(m-f,5);zebrablue,on=(t-w,5)",
                 }
             ]
         ),
     ]
     t = datetime.datetime(
         year=2015,
         month=12,
         day=1,
         hour=19,
         minute=5,
         tzinfo=tzutil.gettz("America/New_York"),
     )
     with mock_datetime_now(t, datetime):
         self.assertEqual(
             f.process(instances), [instances[0], instances[1], instances[2]]
         )
Exemplo n.º 2
0
 def test_offhours_get_value(self):
     off = OffHour({"default_tz": "ct"})
     i = instance(Tags=[{"Key": "maid_offhours", "Value": "Offhours tz=PT"}])
     self.assertEqual(off.get_tag_value(i), "offhours tz=pt")
     self.assertFalse(off.parser.has_resource_schedule(off.get_tag_value(i), "off"))
     self.assertTrue(off.parser.keys_are_valid(off.get_tag_value(i)))
     self.assertEqual(off.parser.raw_data(off.get_tag_value(i)), {"tz": "pt"})
Exemplo n.º 3
0
 def test_validate(self):
     self.assertRaises(
         FilterValidationError, OffHour({'default_tz': 'zmta'}).validate)
     self.assertRaises(
         FilterValidationError, OffHour({'offhour': 25}).validate)
     i = OffHour({})
     self.assertEqual(i.validate(), i)
Exemplo n.º 4
0
 def test_process(self):
     f = OffHour({"opt-out": True})
     instances = [
         instance(Tags=[]),
         instance(Tags=[{
             "Key": "maid_offhours",
             "Value": ""
         }]),
         instance(Tags=[{
             "Key": "maid_offhours",
             "Value": "on"
         }]),
         instance(Tags=[{
             "Key": "maid_offhours",
             "Value": "off"
         }]),
         instance(Tags=[{
             "Key": "maid_offhours",
             "Value": "off=(m-f,5);zebrablue,on=(t-w,5)",
         }]),
     ]
     t = datetime.datetime(
         year=2015,
         month=12,
         day=1,
         hour=19,
         minute=5,
         tzinfo=zoneinfo.gettz("America/New_York"),
     )
     with mock_datetime_now(t, datetime):
         self.assertEqual(f.process(instances),
                          [instances[0], instances[1], instances[2]])
 def test_process(self):
     f = OffHour({'opt-out': True})
     instances = [
         instance(Tags=[]),
         instance(Tags=[{
             'Key': 'maid_offhours',
             'Value': ''
         }]),
         instance(Tags=[{
             'Key': 'maid_offhours',
             'Value': 'on'
         }]),
         instance(Tags=[{
             'Key': 'maid_offhours',
             'Value': 'off'
         }]),
         instance(Tags=[{
             'Key': 'maid_offhours',
             'Value': "off=(m-f,5);zebrablue,on=(t-w,5)"
         }])
     ]
     t = datetime.datetime(year=2015,
                           month=12,
                           day=1,
                           hour=19,
                           minute=5,
                           tzinfo=zoneinfo.gettz('America/New_York'))
     with mock_datetime_now(t, datetime):
         self.assertEqual(f.process(instances),
                          [instances[0], instances[1], instances[2]])
 def test_validate(self):
     self.assertRaises(
         FilterValidationError, OffHour({'default_tz': 'zmta'}).validate)
     self.assertRaises(
         FilterValidationError, OffHour({'offhour': 25}).validate)
     i = OffHour({})
     self.assertEqual(i.validate(), i)
Exemplo n.º 7
0
    def test_custom_bad_hours(self):
        t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
        t = t.replace(year=2016, month=5, day=26, hour=19, minute=00)
        # default error handling is to exclude the resource

        with mock_datetime_now(t, datetime):
            # This isn't considered a bad value, its basically omitted.
            i = instance(Tags=[{
                'Key': 'maid_offhours',
                'Value': 'off=();tz=et'
            }])
            self.assertEqual(OffHour({})(i), True)

            i = instance(Tags=[{
                'Key': 'maid_offhours',
                'Value': 'off=(m-f,90);on=(m-f,7);tz=et'
            }])
            #malformed value
            self.assertEqual(OffHour({})(i), False)

        t = t.replace(year=2016, month=5, day=26, hour=13, minute=00)
        with mock_datetime_now(t, datetime):
            i = instance(Tags=[{
                'Key': 'maid_offhours',
                'Value': 'off=();tz=et'
            }])
            #will go to default values, but not work due to default time
            self.assertEqual(OffHour({})(i), False)

            i = instance(Tags=[{
                'Key': 'maid_offhours',
                'Value': 'off=(m-f,90);on=(m-f,7);tz=et'
            }])
            self.assertEqual(OffHour({})(i), False)
Exemplo n.º 8
0
 def test_resource_schedule_error(self):
     t = datetime.datetime.now(tzutil.gettz("America/New_York"))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     f = OffHour({})
     f.process_resource_schedule = lambda: False
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}])
         self.assertEqual(f(i), False)
Exemplo n.º 9
0
 def test_resource_schedule_error(self):
     t = datetime.datetime.now(tzutil.gettz("America/New_York"))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     f = OffHour({})
     f.process_resource_schedule = lambda: False
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}])
         self.assertEqual(f(i), False)
Exemplo n.º 10
0
 def test_resource_schedule_error(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     f = OffHour({})
     f.process_resource_schedule = lambda: False
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
         self.assertEqual(f(i), False)
Exemplo n.º 11
0
 def test_resource_schedule_error(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     f = OffHour({})
     f.process_resource_schedule = lambda: False
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[
             {'Key': 'maid_offhours', 'Value': 'tz=est'}])
         self.assertEqual(f(i), False)
Exemplo n.º 12
0
 def test_validate(self):
     url_test = 's3://test-dest/holidays.csv'
     self.assertRaises(
         FilterValidationError, OffHour({'default_tz': 'zmta'}).validate)
     self.assertRaises(
         FilterValidationError, OffHour({'offhour': 25}).validate)
     self.assertRaises(
         FilterValidationError, OffHour({'skip-days': ['2017-01-01'], 'skip-days-from': {'expr': 0, 'format': 'csv', 'url': url_test}}).validate)
     i = OffHour({})
     self.assertEqual(i.validate(), i)
Exemplo n.º 13
0
 def test_offhours_get_value(self):
     off = OffHour({'default_tz': 'ct'})
     i = instance(Tags=[
         {'Key': 'maid_offhours', 'Value': 'Offhours tz=PT'}])
     self.assertEqual(off.get_tag_value(i), "offhours tz=pt")
     self.assertFalse(off.parser.has_resource_schedule(
         off.get_tag_value(i), 'off'))
     self.assertTrue(off.parser.keys_are_valid(
         off.get_tag_value(i)))
     self.assertEqual(off.parser.raw_data(
         off.get_tag_value(i)), {'tz': 'pt'})
Exemplo n.º 14
0
 def test_current_time_test(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
         f = OffHour({})
         p = f.get_tag_value(i)
         self.assertEqual(p, 'tz=est')
         tz = f.get_tz('est')
         self.assertEqual(str(tz), "tzfile('America/New_York')")
         self.assertEqual(datetime.datetime.now(tz), t)
         self.assertEqual(t.hour, 19)
Exemplo n.º 15
0
 def test_current_time_test(self):
     t = datetime.datetime.now(tzutil.gettz("America/New_York"))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}])
         f = OffHour({})
         p = f.get_tag_value(i)
         self.assertEqual(p, "tz=est")
         tz = f.get_tz("est")
         self.assertTrue('America/New_York' in str(tz)
                         or 'US/Eastern' in str(tz))
         self.assertEqual(datetime.datetime.now(tz), t)
         self.assertEqual(t.hour, 19)
Exemplo n.º 16
0
 def test_offhours_skip(self):
     t = datetime.datetime(year=2015,
                           month=12,
                           day=1,
                           hour=19,
                           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(OffHour({})(i), True)
         self.assertEqual(OffHour({'skip-days': ['2015-12-01']})(i), False)
         self.assertEqual(
             OffHour({'skip-days': ['2017-01-01', '2015-12-01']})(i), False)
         self.assertEqual(OffHour({'skip-days': ['2015-12-02']})(i), True)
Exemplo n.º 17
0
 def test_current_time_test(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[
             {'Key': 'maid_offhours', 'Value': 'tz=est'}])
         f = OffHour({})
         p = f.get_tag_value(i)
         self.assertEqual(p, 'tz=est')
         tz = f.get_tz('est')
         self.assertEqual(str(tz), "tzfile('America/New_York')")
         self.assertEqual(
             datetime.datetime.now(tz), t)
         self.assertEqual(t.hour, 19)
Exemplo n.º 18
0
 def test_current_time_test(self):
     t = datetime.datetime.now(tzutil.gettz("America/New_York"))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}])
         f = OffHour({})
         p = f.get_tag_value(i)
         self.assertEqual(p, "tz=est")
         tz = f.get_tz("est")
         self.assertTrue(
             'America/New_York' in str(tz) or
             'US/Eastern' in str(tz))
         self.assertEqual(datetime.datetime.now(tz), t)
         self.assertEqual(t.hour, 19)
Exemplo n.º 19
0
 def test_process(self):
     f = OffHour({'opt-out': True})
     instances = [
         instance(Tags=[]),
         instance(
             Tags=[{'Key': 'maid_offhours', 'Value': 'off'}]),
         instance(
             Tags=[
                 {'Key': 'maid_offhours',
                  'Value': "off=(m-f,5);zebrablue,on=(t-w,5)"}])]
     t = datetime.datetime(
         year=2015, month=12, day=1, hour=19, minute=5,
         tzinfo=zoneinfo.gettz('America/New_York'))
     with mock_datetime_now(t, datetime):
         self.assertEqual(f.process(instances), [instances[0]])
Exemplo n.º 20
0
    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)
Exemplo n.º 21
0
    def test_custom_offhours(self):
        t = datetime.datetime.now(tzutil.gettz("America/New_York"))
        t = t.replace(year=2016, month=5, day=26, hour=19, 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,7);tz=et",
                        }
                    ]
                ),
            ]:
                results.append(OffHour({})(i))
            self.assertEqual(results, [True, False])
Exemplo n.º 22
0
 def test_offhours_real_world_values(self):
     t = datetime.datetime.now(zoneinfo.gettz("America/New_York"))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         results = [
             OffHour({})(i) for i in [
                 instance(Tags=[{
                     "Key": "maid_offhours",
                     "Value": ""
                 }]),
                 instance(Tags=[{
                     "Key": "maid_offhours",
                     "Value": "on"
                 }]),
                 instance(Tags=[{
                     "Key": "maid_offhours",
                     "Value": '"Offhours tz=ET"'
                 }]),
                 instance(Tags=[{
                     "Key": "maid_offhours",
                     "Value": "Offhours tz=PT"
                 }]),
             ]
         ]
         # unclear what this is really checking
         self.assertEqual(results, [True, True, True, True])
Exemplo n.º 23
0
 def test_offhours_skip(self):
     t = datetime.datetime(
         year=2015,
         month=12,
         day=1,
         hour=19,
         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(OffHour({})(i), True)
         self.assertEqual(OffHour({"skip-days": ["2015-12-01"]})(i), False)
         self.assertEqual(
             OffHour({"skip-days": ["2017-01-01", "2015-12-01"]})(i), False)
         self.assertEqual(OffHour({"skip-days": ["2015-12-02"]})(i), True)
Exemplo n.º 24
0
 def test_validate(self):
     url_test = "s3://test-dest/holidays.csv"
     self.assertRaises(
         PolicyValidationError, OffHour({"default_tz": "zmta"}).validate
     )
     self.assertRaises(PolicyValidationError, OffHour({"offhour": 25}).validate)
     self.assertRaises(
         PolicyValidationError,
         OffHour(
             {
                 "skip-days": ["2017-01-01"],
                 "skip-days-from": {"expr": 0, "format": "csv", "url": url_test},
             }
         ).validate,
     )
     i = OffHour({})
     self.assertEqual(i.validate(), i)
Exemplo n.º 25
0
 def test_offhour_weekend_support(self):
     start_day = 26
     t = datetime.datetime(year=2016, day=start_day, month=2, hour=19, minute=20)
     i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}])
     f = OffHour({})
     results = []
     with mock_datetime_now(t, datetime) as dt:
         for n in range(0, 4):
             dt.target = t.replace(day=start_day + n)
             results.append(f(i))
     self.assertEqual(results, [True, False, False, True])
Exemplo n.º 26
0
    def test_custom_offhours(self):
        t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
        t = t.replace(year=2016, month=5, day=26, hour=19, 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,7);tz=et'}])]:
                results.append(OffHour({})(i))
            self.assertEqual(results, [True, False])
Exemplo n.º 27
0
 def test_offhours(self):
     t = datetime.datetime(
         year=2015,
         month=12,
         day=1,
         hour=19,
         minute=5,
         tzinfo=tzutil.gettz("America/New_York"),
     )
     with mock_datetime_now(t, datetime):
         i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}])
         self.assertEqual(OffHour({})(i), True)
Exemplo n.º 28
0
 def test_offhours_real_world_values(self):
     t = datetime.datetime.now(zoneinfo.gettz('America/New_York'))
     t = t.replace(year=2015, month=12, day=1, hour=19, minute=5)
     with mock_datetime_now(t, datetime):
         for i in [
                 instance(Tags=[
                     {'Key': 'maid_offhours', 'Value': ''}]),
                 instance(Tags=[
                     {'Key': 'maid_offhours', 'Value': '"Offhours tz=ET"'}]),
                 instance(Tags=[
                     {'Key': 'maid_offhours', 'Value': 'Offhours tz=PT'}])]:
             self.assertEqual(OffHour({})(i), True)
Exemplo n.º 29
0
 def test_everyday_offhour(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=19, minute=20)
     i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=est"}])
     f = OffHour({"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)
Exemplo n.º 30
0
 def test_offhours_get_value(self):
     off = OffHour({"default_tz": "ct"})
     i = instance(Tags=[{"Key": "maid_offhours", "Value": "Offhours tz=PT"}])
     self.assertEqual(off.get_tag_value(i), "offhours tz=pt")
     self.assertFalse(off.parser.has_resource_schedule(off.get_tag_value(i), "off"))
     self.assertTrue(off.parser.keys_are_valid(off.get_tag_value(i)))
     self.assertEqual(off.parser.raw_data(off.get_tag_value(i)), {"tz": "pt"})
Exemplo n.º 31
0
 def test_onhour_weekend_support(self):
     start_day = 14
     t = datetime.datetime(
         year=2016, day=start_day, month=2, hour=19, minute=20)
     i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=est'}])
     f = OffHour({'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, False, False, False, False, True, False])
Exemplo n.º 32
0
    def test_opt_out_behavior(self):
        # Some users want to match based on policy filters to
        # a resource subset with default opt out behavior
        t = datetime.datetime(
            year=2015, month=12, day=1, hour=19, minute=5,
            tzinfo=zoneinfo.gettz('America/New_York'))
        f = OffHour({'opt-out': True})

        with mock_datetime_now(t, datetime):
            i = instance(Tags=[])
            self.assertEqual(f(i), True)
            i = instance(
                Tags=[{'Key': 'maid_offhours', 'Value': 'off'}])
            self.assertEqual(f(i), False)
            self.assertEqual(f.opted_out, [i])
Exemplo n.º 33
0
 def test_offhours_get_value(self):
     off = OffHour({'default_tz': 'ct'})
     i = instance(Tags=[
         {'Key': 'maid_offhours', 'Value': 'Offhours tz=PT'}])
     self.assertEqual(off.get_tag_value(i), "offhours tz=pt")
     self.assertFalse(off.parser.has_resource_schedule(
         off.get_tag_value(i), 'off'))
     self.assertTrue(off.parser.keys_are_valid(
         off.get_tag_value(i)))
     self.assertEqual(off.parser.raw_data(
         off.get_tag_value(i)), {'tz': 'pt'})
Exemplo n.º 34
0
 def test_offhours_get_value_fallback(self):
     sched = "off=[(S,1)];on=[(M,6)];tz=pst"
     off = OffHour({"default_tz": "ct", "fallback-schedule": sched})
     i = instance(Tags=[])
     self.assertEqual(off.get_tag_value(i), sched.lower())
     self.assertTrue(
         off.parser.has_resource_schedule(off.get_tag_value(i), "off"))
     self.assertTrue(
         off.parser.has_resource_schedule(off.get_tag_value(i), "on"))
     self.assertTrue(off.parser.keys_are_valid(off.get_tag_value(i)))
     self.assertEqual(off.parser.raw_data(off.get_tag_value(i)), {
         'off': '[(s,1)]',
         'on': '[(m,6)]',
         'tz': 'pst'
     })
Exemplo n.º 35
0
 def test_validate(self):
     url_test = "s3://test-dest/holidays.csv"
     self.assertRaises(
         PolicyValidationError, OffHour({"default_tz": "zmta"}).validate
     )
     self.assertRaises(PolicyValidationError, OffHour({"offhour": 25}).validate)
     self.assertRaises(
         PolicyValidationError,
         OffHour(
             {
                 "skip-days": ["2017-01-01"],
                 "skip-days-from": {"expr": 0, "format": "csv", "url": url_test},
             }
         ).validate,
     )
     i = OffHour({})
     self.assertEqual(i.validate(), i)
Exemplo n.º 36
0
    def test_opt_out_behavior(self):
        # Some users want to match based on policy filters to
        # a resource subset with default opt out behavior
        t = datetime.datetime(
            year=2015,
            month=12,
            day=1,
            hour=19,
            minute=5,
            tzinfo=tzutil.gettz("America/New_York"),
        )
        f = OffHour({"opt-out": True})

        with mock_datetime_now(t, datetime):
            i = instance(Tags=[])
            self.assertEqual(f(i), True)
            i = instance(Tags=[{"Key": "maid_offhours", "Value": ""}])
            self.assertEqual(f(i), True)
            i = instance(Tags=[{"Key": "maid_offhours", "Value": "on"}])
            self.assertEqual(f(i), True)
            i = instance(Tags=[{"Key": "maid_offhours", "Value": "off"}])
            self.assertEqual(f(i), False)
            self.assertEqual(f.opted_out, [i])
Exemplo n.º 37
0
 def test_validate(self):
     url_test = 's3://test-dest/holidays.csv'
     self.assertRaises(FilterValidationError,
                       OffHour({
                           'default_tz': 'zmta'
                       }).validate)
     self.assertRaises(FilterValidationError,
                       OffHour({
                           'offhour': 25
                       }).validate)
     self.assertRaises(
         FilterValidationError,
         OffHour({
             'skip-days': ['2017-01-01'],
             'skip-days-from': {
                 'expr': 0,
                 'format': 'csv',
                 'url': url_test
             }
         }).validate)
     i = OffHour({})
     self.assertEqual(i.validate(), i)
Exemplo n.º 38
0
 def test_cant_parse_tz(self):
     i = instance(Tags=[{'Key': 'maid_offhours', 'Value': 'tz=evt'}])
     self.assertEqual(OffHour({})(i), False)
Exemplo n.º 39
0
 def test_cant_parse_tz(self):
     i = instance(Tags=[{"Key": "maid_offhours", "Value": "tz=evt"}])
     self.assertEqual(OffHour({})(i), False)