def test_result_max(self): sla1 = failure_rate.FailureRate({"max": 25.0}) sla2 = failure_rate.FailureRate({"max": 75.0}) # 50% failure rate for sla in [sla1, sla2]: sla.add_iteration({"error": ["error"]}) sla.add_iteration({"error": []}) self.assertFalse(sla1.result()["success"]) # 25.0% < 50.0% self.assertTrue(sla2.result()["success"]) # 75.0% > 50.0% self.assertEqual("Failed", sla1.status()) self.assertEqual("Passed", sla2.status())
def test_result_min(self): sla1 = failure_rate.FailureRate({"min": 80.0}) sla2 = failure_rate.FailureRate({"min": 60.5}) # 75% failure rate for sla in [sla1, sla2]: sla.add_iteration({"error": ["error"]}) sla.add_iteration({"error": []}) sla.add_iteration({"error": ["error"]}) sla.add_iteration({"error": ["error"]}) self.assertFalse(sla1.result()["success"]) # 80.0% > 75.0% self.assertTrue(sla2.result()["success"]) # 60.5% < 75.0% self.assertEqual("Failed", sla1.status()) self.assertEqual("Passed", sla2.status())
def test_result_min_max(self): sla1 = failure_rate.FailureRate({"min": 50, "max": 90}) sla2 = failure_rate.FailureRate({"min": 5, "max": 20}) sla3 = failure_rate.FailureRate({"min": 24.9, "max": 25.1}) # 25% failure rate for sla in [sla1, sla2, sla3]: sla.add_iteration({"error": ["error"]}) sla.add_iteration({"error": []}) sla.add_iteration({"error": []}) sla.add_iteration({"error": []}) self.assertFalse(sla1.result()["success"]) # 25.0% < 50.0% self.assertFalse(sla2.result()["success"]) # 25.0% > 20.0% self.assertTrue(sla3.result()["success"]) # 24.9% < 25.0% < 25.1% self.assertEqual("Failed", sla1.status()) self.assertEqual("Failed", sla2.status()) self.assertEqual("Passed", sla3.status())
def test_add_iteration(self): sla = failure_rate.FailureRate({"max": 35.0}) self.assertTrue(sla.add_iteration({"error": []})) self.assertTrue(sla.add_iteration({"error": []})) self.assertTrue(sla.add_iteration({"error": []})) self.assertTrue(sla.add_iteration({"error": ["error"]})) # 33% self.assertFalse(sla.add_iteration({"error": ["error"]})) # 40%
def test_merge(self, errors): single_sla = failure_rate.FailureRate({"max": 25}) for ee in errors: for e in ee: single_sla.add_iteration({"error": ["error"] if e else []}) slas = [failure_rate.FailureRate({"max": 25}) for _ in errors] for idx, sla in enumerate(slas): for e in errors[idx]: sla.add_iteration({"error": ["error"] if e else []}) merged_sla = slas[0] for sla in slas[1:]: merged_sla.merge(sla) self.assertEqual(single_sla.success, merged_sla.success) self.assertEqual(single_sla.errors, merged_sla.errors) self.assertEqual(single_sla.total, merged_sla.total)
def test_result_no_iterations(self): sla = failure_rate.FailureRate({"max": 10.0}) self.assertTrue(sla.result()["success"])