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())
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)
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))
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)