def test_empty_config_no_change(self): self.assertEqual( cluster.config_update_local( self.env_assist.get_env(), b"", {}, {}, {}, {} ), b"", )
def test_add_modify_remove_options(self): before = fixture_totem( cluster_uuid=None, transport_options={ "ip_version": "ipv4", "knet_pmtud_interval": "10", }, compression_options={ "level": "9", "threshold": "100" }, crypto_options={ "cipher": "none", "model": "openssl" }, totem_options={ "token": "3000", "join": "50" }, ) after = dedent("""\ totem { transport: knet token: 1000 ip_version: ipv6 knet_compression_level: 5 crypto_cipher: aes128 downcheck: 5 link_mode: active knet_compression_model: zlib crypto_hash: sha256 } """) self.assertEqual( cluster.config_update_local( self.env_assist.get_env(), before.encode(), { "ip_version": "ipv6", "link_mode": "active", "knet_pmtud_interval": "", }, { "level": "5", "model": "zlib", "threshold": "" }, { "cipher": "aes128", "hash": "sha256", "model": "" }, { "token": "1000", "downcheck": "5", "join": "" }, ), after.encode(), )
def test_corosyncconf_parse_error(self): self.env_assist.assert_raise_library_error( lambda: cluster.config_update_local( self.env_assist.get_env(), b"this is not\na valid corosync.conf file\n", {}, {}, {}, {}, )) self.env_assist.assert_reports([ fixture.error( report_codes. PARSE_ERROR_COROSYNC_CONF_LINE_IS_NOT_SECTION_NOR_KEY_VALUE) ], )
def test_invalid_custom_corosync_conf(self): self.env_assist.assert_raise_library_error( lambda: cluster.config_update_local( self.env_assist.get_env(), b"totem {\n option.name: value\n}", {}, {}, {}, {}, ), [ fixture.error( report_codes.COROSYNC_CONFIG_CANNOT_SAVE_INVALID_NAMES_VALUES, section_name_list=[], attribute_name_list=["totem.option.name"], attribute_value_pairs=[], ) ], expected_in_processor=False, )
def test_some_validator_errors(self): self.env_assist.assert_raise_library_error( lambda: cluster.config_update_local( self.env_assist.get_env(), fixture_totem(transport_type="udp").encode(), {"knet_pmtud_interval": "100"}, {}, {"cipher": "none", "hash": "none"}, {"token": "notanumber"}, ), ) self.env_assist.assert_reports( [ fixture.error( report_codes.INVALID_OPTION_VALUE, option_name="token", option_value="notanumber", allowed_values="a non-negative integer", cannot_be_empty=False, forbidden_characters=None, ), fixture.error( report_codes.INVALID_OPTIONS, option_names=["knet_pmtud_interval"], option_type="udp/udpu transport", allowed=["ip_version", "netmtu"], allowed_patterns=[], ), fixture.error( report_codes.COROSYNC_TRANSPORT_UNSUPPORTED_OPTIONS, option_type="crypto", actual_transport="udp/udpu", required_transports=["knet"], ), ] )
def get_lib_command(self): return lambda: cluster.config_update_local( self.env_assist.get_env(), b"", {}, {}, {}, {} )