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, )
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)
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)
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)
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", )
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)
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)
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)