Esempio n. 1
0
 def test_empty_config_no_change(self):
     self.assertEqual(
         cluster.config_update_local(
             self.env_assist.get_env(), b"", {}, {}, {}, {}
         ),
         b"",
     )
Esempio n. 2
0
 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(),
     )
Esempio n. 3
0
 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)
     ], )
Esempio n. 4
0
 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,
     )
Esempio n. 5
0
 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"],
             ),
         ]
     )
Esempio n. 6
0
 def get_lib_command(self):
     return lambda: cluster.config_update_local(
         self.env_assist.get_env(), b"", {}, {}, {}, {}
     )