예제 #1
0
 def simple_info_test(self):
     """Test simple info messages. """
     checker = StorageChecker()
     report = checker.check(None)
     self.assertListEqual(report.info, [
         "Storage check started with constraints {}.",
         "Storage check finished with success."
     ])
예제 #2
0
    def nocheck_test(self):
        """Test a check with no checks."""
        checker = StorageChecker()
        report = checker.check(None)

        self.assertEqual(report.success, True)
        self.assertEqual(report.failure, False)
        self.assertListEqual(report.errors, [])
        self.assertListEqual(report.warnings, [])
예제 #3
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.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)
예제 #4
0
    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_new_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)."
        ])
예제 #5
0
    def simple_warning_test(self):
        """Test an simple warning report."""
        checker = StorageChecker()

        def check(storage, constraints, report_error, report_warning):
            report_warning("warning")

        checker.add_check(check)
        report = checker.check(None)
        self.assertEqual(report.success, False)
        self.assertListEqual(report.errors, [])
        self.assertListEqual(report.warnings, ["warning"])
예제 #6
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})
예제 #7
0
    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})
예제 #8
0
 def default_settings_test(self):
     """Check the default storage checker."""
     checker = StorageChecker()
     checker.set_default_constraints()
     checker.set_default_checks()
예제 #9
0
    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, [])
예제 #10
0
    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}"])