Пример #1
0
    def test_section(self):
        '''
        Test that unsupported section types are properly handled by the overlay.
        '''

        self.assert_fail(
            None,
            util.random_string(8),
            {util.random_string(4): util.random_string(16)},
            overlay.UnsupportedSectionTypeError,
        )
Пример #2
0
        def assert_ip_address(self, section, key, test_default=False):
            """
            Test that key, of type 'ip address', is properly handled by the object.
            """

            # Test default value, if specified.
            if test_default:
                self.assert_default(section, key)

            # Test valid values.
            self.assert_success(section, key, 3221225985, expected_value=ipaddress.ip_address(3221225985))
            self.assert_success(section, key, "192.0.2.1", expected_value=ipaddress.ip_address("192.0.2.1"))
            self.assert_success(section, key, ipaddress.ip_address("192.0.2.1"), ipaddress.ip_address("192.0.2.1"))

            self.assert_success(
                section,
                key,
                42540766411282592856903984951653826561,
                expected_value=ipaddress.ip_address(42540766411282592856903984951653826561),
            )
            self.assert_success(section, key, "2001:db8::1", ipaddress.ip_address("2001:db8::1"))
            self.assert_success(section, key, ipaddress.ip_address("2001:db8::1"), ipaddress.ip_address("2001:db8::1"))

            # Test invalid values.
            self.assert_fail(section, key, "", util.GetError)
            self.assert_fail(section, key, -1, util.GetError)
            self.assert_fail(section, key, util.random_string(32), util.GetError)
            self.assert_fail(section, key, ipaddress.ip_network("198.51.100.0/24"), util.GetError)
            self.assert_fail(section, key, ipaddress.ip_network("2001:db8::/32"), util.GetError)
Пример #3
0
    def test_overlay_conf(self):
        '''
        Test that 'overlay_conf' is properly handled by the daemon.
        '''

        overlay_conf_dir = self.global_conf["overlay_conf_dir"]
        self.global_conf["overlay_conf_dir"] = None

        # Test absolute paths.
        self.assert_success(
            None,
            "overlay_conf",
            [os.path.join(overlay_conf_dir, f) for f in os.listdir(overlay_conf_dir)],
        )

        # Test relative paths.
        self.assert_success(
            None,
            "overlay_conf",
            [os.path.relpath(os.path.join(overlay_conf_dir, f)) for f in os.listdir(overlay_conf_dir)],
        )

        # Test non-existent paths.
        self.assert_fail(None, "overlay_conf", [util.random_string(16)], FileNotFoundError)

        # Test invalid values.
        self.assert_fail(None, "overlay_conf", "", util.GetError)
        self.assert_fail(None, "overlay_conf", 1, l3overlay.daemon.ReadError)
        self.assert_fail(None, "overlay_conf", [""], util.GetError)
        self.assert_fail(None, "overlay_conf", [1], util.GetError)
Пример #4
0
        def assert_enum(self, section, key, enum, test_default=False):
            """
            Test that key, of type enum, is properly handled by the object.
            """

            # Test default value, if specified.
            if test_default:
                self.assert_default(section, key)

            # Test valid values.
            for e in enum:
                self.assert_success(section, key, e.upper(), expected_value=e)
                self.assert_success(section, key, e.lower(), expected_value=e)

            # Test invalid values.
            self.assert_fail(section, key, "", util.GetError)
            self.assert_fail(section, key, util.random_string(16), util.GetError)
            self.assert_fail(section, key, 1, util.GetError)
Пример #5
0
    def test_node(self):
        '''
        Test that 'node-*' is properly handled by the overlay.
        '''

        # Remove the node list from the overlay list.
        for key in self.overlay_conf["overlay"].copy():
            if key.startswith("node-"):
                del self.overlay_conf["overlay"][key]

        # Test that no nodes causes it to fail.
        self.assert_fail(None, None, None, overlay.NoNodeListError)

        # Add invalid data to the list.
        self.assert_fail("overlay", "node-1", 1, util.GetError)
        self.assert_fail(
            "overlay",
            "node-1",
            "%s 192.0.2.1 fail" % self.overlay_conf["overlay"]["this-node"],
            util.GetError,
        )

        # Test that 'this-node' is missing, by having a single-node list
        # that does not contain 'this-node'.
        self.assert_fail(
            "overlay",
            "node-1",
            "%s 192.0.2.1" % util.random_string(6),
            overlay.MissingThisNodeError,
        )

        # Successful adds.
        self.overlay_conf["overlay"]["node-1"] = "%s 192.0.2.1" % self.overlay_conf["overlay"]["this-node"]

        # Do nothing, but assert a successful run due to
        # 'this-node' being added to the test configuration.
        self.assert_success(None, None, None)

        # Test a run with a second correct test node.
        self.assert_success(
            "overlay",
            "node-2",
            "test-overlay-2 192.0.2.2",
        )
Пример #6
0
    def assert_boolean(self, section, key, test_default=False):
        '''
        Test that key, of type boolean, is properly handled by the object.
        '''

        no_key = "no_%s" % key

        default = self.global_conf.pop(key)
        no_default = self.global_conf.pop(no_key)

        # Test default value, if specified.
        if test_default:
            self.global_conf[key] = False
            self.global_conf[no_key] = True
            obj = self.assert_success(section, key, False)
            value = self.value_get(obj, section, key)
            self.assert_success(section, key, value, expected_value=value)
            self.global_conf[key] = default
            self.global_conf[no_key] = no_default

        # Test valid values.
        self.global_conf.pop(key)
        self.global_conf[no_key] = True
        self.assert_success(section, key, True, expected_value=True)
        self.assert_success(section, key, "true", expected_value=True)
        self.assert_success(section, key, 1, expected_value=True)
        self.assert_success(section, key, 2, expected_value=True)
        self.global_conf[key] = default
        self.global_conf[no_key] = no_default

        self.global_conf[key] = False
        self.global_conf.pop(no_key)
        self.assert_success(section, no_key, False, expected_key=key, expected_value=False)
        self.assert_success(section, no_key, "false", expected_key=key, expected_value=False)
        self.assert_success(section, no_key, 0, expected_key=key, expected_value=False)
        self.assert_success(section, no_key, -1, expected_key=key, expected_value=False)
        self.global_conf[key] = default
        self.global_conf[no_key] = no_default

        # Test invalid values.
        self.assert_fail(section, key, "", util.GetError)
        self.assert_fail(section, key, util.random_string(6), util.GetError)
Пример #7
0
        def assert_boolean(self, section, key, test_default=False):
            """
            Test that key, of type boolean, is properly handled by the object.
            """

            # Test default value, if specified.
            if test_default:
                self.assert_default(section, key)

            # Test valid values.
            self.assert_success(section, key, True, expected_value=True)
            self.assert_success(section, key, "true", expected_value=True)
            self.assert_success(section, key, 1, expected_value=True)
            self.assert_success(section, key, 2, expected_value=True)

            self.assert_success(section, key, False, expected_value=False)
            self.assert_success(section, key, "false", expected_value=False)
            self.assert_success(section, key, 0, expected_value=False)
            self.assert_success(section, key, -1, expected_value=False)

            # Test invalid values.
            self.assert_fail(section, key, "", util.GetError)
            self.assert_fail(section, key, util.random_string(6), util.GetError)
Пример #8
0
    def test_this_node(self):
        '''
        Test that 'this-node' is properly handled by the overlay.
        '''

        this_node = self.overlay_conf["overlay"]["this-node"]
        self.assert_success(
            "overlay",
            "this-node",
            self.overlay_conf["overlay"]["this-node"],
            (
                this_node,
                ipaddress.ip_address(next(
                    (
                        v for k, v in self.overlay_conf["overlay"].items() if
                                k.startswith("node-") and v.startswith(this_node)
                    ),
                ).split(" ")[1]),
            )
        )

        self.assert_fail("overlay", "this-node",
            util.random_string(6), overlay.MissingThisNodeError)