Best Python code snippet using localstack_python
test_cloudwatch.py
Source:test_cloudwatch.py
...76 |TEST_3 | - - - - - | INSUFFICIENT_DATA| Retain state| ALARM | OK | 3 |77 |TEST_4 | 0 X X - X | ALARM | ALARM | ALARM | ALARM | 0 |78 |TEST_5 | - - X - - | ALARM | Retain state| ALARM | OK | 2 -> Premature alarm |79 """80 def mock_metric_alarm_details(alarm_arn):81 details = {82 "AlarmName": "test-alarm",83 "StateValue": initial_state,84 "TreatMissingData": treat_missing,85 "DatapointsToAlarm": 3,86 "EvaluationPeriods": 3,87 "Period": 5,88 "ComparisonOperator": "LessThanThreshold",89 "Threshold": 2,90 }91 return details92 def mock_collect_metric_data(alarm_details, client):93 if metric_data == self.TEST_1_DATA:94 return [2.5, None, 1, None, 1.7]95 if metric_data == self.TEST_2_DATA:96 return [3.0, None, None, None, None]97 if metric_data == self.TEST_3_DATA:98 return [None, None, None, None, None]99 if metric_data == self.TEST_4_DATA:100 return [3.0, 1.5, 1.0, None, 1.5]101 if metric_data == self.TEST_5_DATA:102 return [None, None, 1.0, None, None]103 run_and_assert_calculate_alarm_state(104 mock_metric_alarm_details, mock_collect_metric_data, expected_calls, expected_state105 )106 @pytest.mark.parametrize(107 "initial_state,expected_state,expected_calls,treat_missing,metric_data",108 [109 # 0 - X - X110 ("OK", "ALARM", 1, "missing", TEST_1_M_OF_N),111 ("OK", "ALARM", 1, "ignore", TEST_1_M_OF_N),112 ("OK", "ALARM", 1, "breaching", TEST_1_M_OF_N),113 ("OK", "ALARM", 1, "notBreaching", TEST_1_M_OF_N),114 # 0 0 X 0 X115 ("OK", "ALARM", 1, "missing", TEST_2_M_OF_N),116 ("OK", "ALARM", 1, "ignore", TEST_2_M_OF_N),117 ("OK", "ALARM", 1, "breaching", TEST_2_M_OF_N),118 ("OK", "ALARM", 1, "notBreaching", TEST_2_M_OF_N),119 # 0 - X - -120 ("INSUFFICIENT_DATA", "OK", 1, "missing", TEST_3_M_OF_N),121 ("INSUFFICIENT_DATA", "OK", 1, "ignore", TEST_3_M_OF_N),122 ("INSUFFICIENT_DATA", "ALARM", 1, "breaching", TEST_3_M_OF_N),123 ("INSUFFICIENT_DATA", "OK", 1, "notBreaching", TEST_3_M_OF_N),124 # - - - - 0125 ("INSUFFICIENT_DATA", "OK", 1, "missing", TEST_4_M_OF_N),126 ("INSUFFICIENT_DATA", "OK", 1, "ignore", TEST_4_M_OF_N),127 ("INSUFFICIENT_DATA", "ALARM", 1, "breaching", TEST_4_M_OF_N),128 ("INSUFFICIENT_DATA", "OK", 1, "notBreaching", TEST_4_M_OF_N),129 # - - - X -130 ("INSUFFICIENT_DATA", "ALARM", 1, "missing", TEST_5_M_OF_N),131 ("INSUFFICIENT_DATA", "INSUFFICIENT_DATA", 0, "ignore", TEST_5_M_OF_N),132 ("INSUFFICIENT_DATA", "ALARM", 1, "breaching", TEST_5_M_OF_N),133 ("INSUFFICIENT_DATA", "OK", 1, "notBreaching", TEST_5_M_OF_N),134 ],135 )136 def test_calculate_alarm_state_2_out_of_3(137 self, initial_state, expected_state, expected_calls, treat_missing, metric_data138 ):139 """140 Tests Table 2 depicted in the docs: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation141 Datapoints to Alarm = 2 and Evaluation Periods = 3142 Cloudwatch uses 5 latest datapoints for evaluation:143 0 = ok144 X = breaking threshold145 - = no data available146 |Test | Data points | MISSING | IGNORE | BREACHING | NOT BREACHING | # missing datapoints |147 |--------------|--------------|------------------|-------------|-----------|---------------| ---------------------|148 |TEST_1_M_OF_N | 0 - X - X | ALARM | ALARM | ALARM | ALARM | 0 |149 |TEST_2_M_OF_N | 0 0 X 0 X | ALARM | ALARM | ALARM | ALARM | 0 |150 |TEST_3_M_OF_N | 0 - X - - | OK | OK | ALARM | OK | 1 |151 |TEST_4_M_OF_N | - - - - 0 | OK | OK | ALARM | OK | 2 |152 |TEST_5_M_OF_N | - - - X - | ALARM | Retain state| ALARM | OK | 2 -> Premature alarm |153 """154 def mock_metric_alarm_details(alarm_arn):155 details = {156 "AlarmName": "test-alarm",157 "StateValue": initial_state,158 "TreatMissingData": treat_missing,159 "DatapointsToAlarm": 2,160 "EvaluationPeriods": 3,161 "Period": 5,162 "ComparisonOperator": "LessThanThreshold",163 "Threshold": 2,164 }165 return details166 def mock_collect_metric_data(alarm_details, client):167 if metric_data == self.TEST_1_M_OF_N:168 return [2.5, None, 1, None, 1.7]169 if metric_data == self.TEST_2_M_OF_N:170 return [3.0, 4.0, 1.0, 3.5, 1.5]171 if metric_data == self.TEST_3_M_OF_N:172 return [4.0, None, 1.2, None, None]173 if metric_data == self.TEST_4_M_OF_N:174 return [None, None, None, None, 8]175 if metric_data == self.TEST_5_M_OF_N:176 return [None, None, None, 1.0, None]177 run_and_assert_calculate_alarm_state(178 mock_metric_alarm_details, mock_collect_metric_data, expected_calls, expected_state179 )180 def test_calculate_alarm_state_with_datapoints_value_zero(self):181 def mock_metric_alarm_details(alarm_arn):182 details = {183 "AlarmName": "test-alarm",184 "StateValue": "OK",185 "TreatMissingData": "notBreaching",186 "EvaluationPeriods": 1,187 "Period": 5,188 "ComparisonOperator": "LessThanThreshold",189 "Threshold": 1,190 }191 return details192 def mock_collect_metric_data(alarm_details, client):193 return [0.0, None, 0.0]194 run_and_assert_calculate_alarm_state(195 mock_metric_alarm_details, mock_collect_metric_data, 1, "ALARM"...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!