Beispiel #1
0
    def test_mem_alarm_high_check_not_required_parameters(self):
        snippet = template_format.parse(not_string_alarm_template)
        snippet['Resources']['MEMAlarmHigh']['Properties'].pop('meter_name')
        stack = utils.parse_stack(snippet)

        resource_defns = stack.t.resource_definitions(stack)
        rsrc = alarm.AodhAlarm(
            'MEMAlarmHigh', resource_defns['MEMAlarmHigh'], stack)
        error = self.assertRaises(exception.StackValidationFailed,
                                  rsrc.validate)
        self.assertEqual(
            "Property error: Resources.MEMAlarmHigh.Properties: "
            "Property meter_name not assigned",
            six.text_type(error))

        for p in ('period', 'evaluation_periods', 'statistic',
                  'comparison_operator'):
            snippet = template_format.parse(not_string_alarm_template)
            snippet['Resources']['MEMAlarmHigh']['Properties'].pop(p)
            stack = utils.parse_stack(snippet)

            resource_defns = stack.t.resource_definitions(stack)
            rsrc = alarm.AodhAlarm(
                'MEMAlarmHigh', resource_defns['MEMAlarmHigh'], stack)
            self.assertIsNone(rsrc.validate())
Beispiel #2
0
    def test_alarm_live_state(self):
        snippet = template_format.parse(alarm_template)
        self.stack = utils.parse_stack(snippet)
        resource_defns = self.stack.t.resource_definitions(self.stack)
        self.rsrc_defn = resource_defns['MEMAlarmHigh']
        self.client = mock.Mock()
        self.patchobject(alarm.AodhAlarm, 'client', return_value=self.client)

        alarm_res = alarm.AodhAlarm('alarm', self.rsrc_defn, self.stack)
        alarm_res.create()
        value = {
            'description': 'Scale-up if MEM > 50% for 1 minute',
            'alarm_actions': [],
            'time_constraints': [],
            'threshold_rule': {
                'meter_name': 'MemoryUtilization',
                'statistic': 'avg',
                'period': '60',
                'evaluation_periods': '1',
                'threshold': '50',
                'matching_metadata': {},
                'comparison_operator': 'gt',
                'query': [{
                    'field': 'c',
                    'op': 'ne',
                    'value': 'z'
                }]
            }
        }
        self.client.alarm.get.return_value = value
        expected_data = {
            'description': 'Scale-up if MEM > 50% for 1 minute',
            'alarm_actions': [],
            'statistic': 'avg',
            'period': '60',
            'evaluation_periods': '1',
            'threshold': '50',
            'matching_metadata': {},
            'comparison_operator': 'gt',
            'query': [{
                'field': 'c',
                'op': 'ne',
                'value': 'z'
            }],
            'repeat_actions': None,
            'ok_actions': None,
            'insufficient_data_actions': None,
            'severity': None,
            'enabled': None
        }
        reality = alarm_res.get_live_state(alarm_res.properties)
        self.assertEqual(expected_data, reality)
Beispiel #3
0
    def test_mem_alarm_high_not_correct_string_parameters(self):
        orig_snippet = template_format.parse(not_string_alarm_template)
        for p in ('period', 'evaluation_periods'):
            snippet = copy.deepcopy(orig_snippet)
            snippet['Resources']['MEMAlarmHigh']['Properties'][p] = '60a'
            stack = utils.parse_stack(snippet)

            resource_defns = stack.t.resource_definitions(stack)
            rsrc = alarm.AodhAlarm('MEMAlarmHigh',
                                   resource_defns['MEMAlarmHigh'], stack)
            error = self.assertRaises(exception.StackValidationFailed,
                                      rsrc.validate)
            self.assertEqual(
                "Property error: Resources.MEMAlarmHigh.Properties.%s: "
                "Value '60a' is not an integer" % p, six.text_type(error))
Beispiel #4
0
    def test_mem_alarm_high_not_integer_parameters(self):
        orig_snippet = template_format.parse(not_string_alarm_template)
        for p in ('period', 'evaluation_periods'):
            snippet = copy.deepcopy(orig_snippet)
            snippet['Resources']['MEMAlarmHigh']['Properties'][p] = [60]
            stack = utils.parse_stack(snippet)

            resource_defns = stack.t.resource_definitions(stack)
            rsrc = alarm.AodhAlarm('MEMAlarmHigh',
                                   resource_defns['MEMAlarmHigh'], stack)
            # python 3.4.3 returns another error message
            # so try to handle this by regexp
            msg = ("Property error: Resources.MEMAlarmHigh.Properties.%s: "
                   "int\(\) argument must be a string(, a bytes-like "
                   "object)? or a number, not 'list'" % p)
            self.assertRaisesRegexp(exception.StackValidationFailed, msg,
                                    rsrc.validate)