def info_test(self): """Test info messages. """ checker = StorageChecker() def error_check(storage, constraints, report_error, report_warning): report_error("error") def warning_check(storage, constraints, report_error, report_warning): report_warning("warning") def skipped_check(storage, constraints, report_error, report_warning): report_warning("skipped") checker.add_constraint("x", None) checker.add_check(error_check) checker.add_check(warning_check) checker.add_check(skipped_check) report = checker.check(None, skip=(skipped_check, )) self.assertListEqual(report.info, [ "Storage check started with constraints {'x': None}.", "Run sanity check error_check.", "Found sanity error: error", "Run sanity check warning_check.", "Found sanity warning: warning", "Skipped sanity check skipped_check.", "Storage check finished with failure(s)." ])
def simple_constraints_test(self): """Test simple constraint adding.""" checker = StorageChecker() # Try to add a new constraint with a wrong method. self.assertRaises(KeyError, checker.set_constraint, "x", None) # Try to add a new constraint two times. checker.add_constraint("x", None) self.assertRaises(KeyError, checker.add_constraint, "x", None)
def dictionary_constraints_test(self): """Test the dictionary constraints.""" checker = StorageChecker() checker.add_constraint("x", {"a": 1, "b": 2, "c": 3}) self.assertIn("x", checker.constraints) self.assertEqual(checker.constraints["x"], {"a": 1, "b": 2, "c": 3}) checker.set_constraint("x", {"e": 4, "f": 5}) self.assertIn("x", checker.constraints) self.assertEqual(checker.constraints["x"], {"e": 4, "f": 5})
def dictionary_constraints_test(self): """Test the dictionary constraints.""" checker = StorageChecker() checker.add_new_constraint("x", {"a": 1, "b": 2, "c": 3}) self.assertIn("x", checker.constraints) self.assertEqual(checker.constraints["x"], {"a": 1, "b": 2, "c": 3}) checker.update_constraint("x", {"a": None, "d": 4}) self.assertIn("x", checker.constraints) self.assertEqual(checker.constraints["x"], {"a": None, "b": 2, "c": 3, "d": 4}) checker.add_constraint("x", {"e": 4, "f": 5}) self.assertIn("x", checker.constraints) self.assertEqual(checker.constraints["x"], {"e": 4, "f": 5})
def check_constraints_test(self): """Test constraints checking.""" checker = StorageChecker() def check(storage, constraints, report_error, report_warning): report_warning("%s" % constraints) checker.add_check(check) report = checker.check(None) self.assertListEqual(report.warnings, ["{}"]) checker.add_new_constraint("x", 1) report = checker.check(None) self.assertListEqual(report.warnings, ["{'x': 1}"]) checker.add_constraint("x", 0) report = checker.check(None) self.assertListEqual(report.warnings, ["{'x': 0}"])
def simple_constraints_test(self): """Test simple constraint adding.""" checker = StorageChecker() # Try to add a new constraint with a wrong method. self.assertRaises(KeyError, checker.add_constraint, "x", None) # Try to add a new constraint two times. checker.add_new_constraint("x", None) self.assertRaises(KeyError, checker.add_new_constraint, "x", None) # Try to update a constraint with a wrong method. checker.add_constraint("x", 1) self.assertRaises(AttributeError, checker.update_constraint, "x", None) # Update a constraint. checker.add_constraint("x", {"a": 1, "b": 2}) checker.update_constraint("x", {"c": 3}) self.assertEqual(checker.constraints["x"], {"a": 1, "b": 2, "c": 3})
def complicated_test(self): """Run a complicated check.""" checker = StorageChecker() # Set the checks, def check_x(storage, constraints, report_error, report_warning): if constraints["x"] != 1: report_error("x is not equal to 1") def check_y(storage, constraints, report_error, report_warning): if constraints["y"] != 2: report_error("y is not equal to 2") def check_z(storage, constraints, report_error, report_warning): if constraints["z"] != 3: report_error("z is not equal to 3") checker.add_check(check_x) checker.add_check(check_y) checker.add_check(check_z) # Set the constraints. checker.add_new_constraint("x", 1) checker.add_new_constraint("y", 2) checker.add_new_constraint("z", 3) # Run the checker. OK report = checker.check(None) self.assertEqual(report.success, True) self.assertListEqual(report.errors, []) self.assertListEqual(report.warnings, []) # Set constraints to different values. checker.add_constraint("x", 0) checker.add_constraint("y", 1) checker.add_constraint("z", 2) # Run the checker. FAIL report = checker.check(None) self.assertEqual(report.success, False) self.assertListEqual(report.errors, [ "x is not equal to 1", "y is not equal to 2", "z is not equal to 3" ]) self.assertListEqual(report.warnings, []) # Run the checker. Test SKIP. report = checker.check(None, skip=(check_y,)) self.assertEqual(report.success, False) self.assertListEqual(report.errors, [ "x is not equal to 1", "z is not equal to 3" ]) self.assertListEqual(report.warnings, []) # Run the checker. Test CONSTRAINTS. constraints = {"x": 1, "y": 2, "z": 3} report = checker.check(None, constraints=constraints) self.assertEqual(report.success, True) self.assertListEqual(report.errors, []) self.assertListEqual(report.warnings, []) # Remove checks. checker.remove_check(check_x) checker.remove_check(check_y) checker.remove_check(check_z) report = checker.check(None) self.assertEqual(report.success, True) self.assertListEqual(report.errors, []) self.assertListEqual(report.warnings, [])