Example #1
0
    def test_prepare_without_plugins(self, mock_rm, mock_ensure_dir,
                                     mock_decompress):
        apply_config_calls = []

        def null_apply_config(source_root_path, target_root_path, config_vars):
            apply_config_calls.append(
                (source_root_path, target_root_path, config_vars))

        installer = provisioner.ElasticsearchInstaller(
            car=team.Car(
                name="unit-test-car",
                config_paths=["~/.rally/benchmarks/teams/default/my-car"],
                variables={"heap": "4g"}),
            node_name="rally-node-0",
            node_root_dir="~/.rally/benchmarks/races/unittest",
            all_node_ips=["10.17.22.22", "10.17.22.23"],
            ip="10.17.22.23",
            http_port=9200)

        p = provisioner.BareProvisioner(
            cluster_settings={"indices.query.bool.max_clause_count": 50000},
            es_installer=installer,
            plugin_installers=[],
            preserve=True,
            apply_config=null_apply_config)

        node_config = p.prepare(
            {"elasticsearch": "/opt/elasticsearch-5.0.0.tar.gz"})
        self.assertEqual(installer.car, node_config.car)
        self.assertEqual("/opt/elasticsearch-5.0.0", node_config.binary_path)
        self.assertEqual(["/opt/elasticsearch-5.0.0/data"],
                         node_config.data_paths)

        self.assertEqual(1, len(apply_config_calls))
        source_root_path, target_root_path, config_vars = apply_config_calls[0]

        self.assertEqual("~/.rally/benchmarks/teams/default/my-car",
                         source_root_path)
        self.assertEqual("/opt/elasticsearch-5.0.0", target_root_path)
        self.assertEqual(
            {
                "cluster_settings": {
                    "indices.query.bool.max_clause_count": 50000,
                },
                "heap": "4g",
                "cluster_name": "rally-benchmark",
                "node_name": "rally-node-0",
                "data_paths": ["/opt/elasticsearch-5.0.0/data"],
                "log_path": "~/.rally/benchmarks/races/unittest/logs/server",
                "heap_dump_path":
                "~/.rally/benchmarks/races/unittest/heapdump",
                "node_ip": "10.17.22.23",
                "network_host": "10.17.22.23",
                "http_port": "9200-9300",
                "transport_port": "9300-9400",
                "all_node_ips": "[\"10.17.22.22\",\"10.17.22.23\"]",
                "minimum_master_nodes": 2,
                "node_count_per_host": 1,
                "install_root_path": "/opt/elasticsearch-5.0.0"
            }, config_vars)
Example #2
0
    def test_prepare_distribution_ge_63_with_plugins(self, mock_rm,
                                                     mock_ensure_dir,
                                                     mock_install,
                                                     mock_decompress):
        """
        Test that plugin.mandatory is set to the meta plugin name (e.g. `x-pack`) and not
        the specific plugin name (e.g. `x-pack-security`) for Elasticsearch >=6.3.0

        See: https://github.com/elastic/elasticsearch/pull/28710
        """
        apply_config_calls = []

        def null_apply_config(source_root_path, target_root_path, config_vars):
            apply_config_calls.append(
                (source_root_path, target_root_path, config_vars))

        installer = provisioner.ElasticsearchInstaller(
            car=team.Car(names="unit-test-car",
                         root_path=None,
                         config_paths=[
                             HOME_DIR +
                             "/.rally/benchmarks/teams/default/my-car"
                         ],
                         variables={
                             "heap": "4g",
                             "runtime.jdk": "8",
                             "runtime.jdk.bundled": "true"
                         }),
            java_home="/usr/local/javas/java8",
            node_name="rally-node-0",
            node_root_dir=HOME_DIR + "/.rally/benchmarks/races/unittest",
            all_node_ips=["10.17.22.22", "10.17.22.23"],
            all_node_names=["rally-node-0", "rally-node-1"],
            ip="10.17.22.23",
            http_port=9200)

        p = provisioner.BareProvisioner(
            cluster_settings={"indices.query.bool.max_clause_count": 50000},
            es_installer=installer,
            plugin_installers=[
                provisioner.PluginInstaller(
                    BareProvisionerTests.MockRallyTeamXPackPlugin(),
                    java_home="/usr/local/javas/java8",
                    hook_handler_class=BareProvisionerTests.NoopHookHandler)
            ],
            distribution_version="6.3.0",
            apply_config=null_apply_config)

        node_config = p.prepare(
            {"elasticsearch": "/opt/elasticsearch-6.3.0.tar.gz"})
        self.assertEqual({}, node_config.car_env)
        self.assertEqual("8", node_config.car_runtime_jdks)
        self.assertEqual("/opt/elasticsearch-6.3.0", node_config.binary_path)
        self.assertEqual(["/opt/elasticsearch-6.3.0/data"],
                         node_config.data_paths)

        self.assertEqual(1, len(apply_config_calls))
        source_root_path, target_root_path, config_vars = apply_config_calls[0]

        self.assertEqual(HOME_DIR + "/.rally/benchmarks/teams/default/my-car",
                         source_root_path)
        self.assertEqual("/opt/elasticsearch-6.3.0", target_root_path)

        self.maxDiff = None

        self.assertEqual(
            {
                "cluster_settings": {
                    "indices.query.bool.max_clause_count": 50000,
                    "plugin.mandatory": ["x-pack"]
                },
                "heap": "4g",
                "runtime.jdk": "8",
                "runtime.jdk.bundled": "true",
                "cluster_name": "rally-benchmark",
                "node_name": "rally-node-0",
                "data_paths": ["/opt/elasticsearch-6.3.0/data"],
                "log_path":
                HOME_DIR + "/.rally/benchmarks/races/unittest/logs/server",
                "heap_dump_path":
                HOME_DIR + "/.rally/benchmarks/races/unittest/heapdump",
                "node_ip": "10.17.22.23",
                "network_host": "10.17.22.23",
                "http_port": "9200",
                "transport_port": "9300",
                "all_node_ips": "[\"10.17.22.22\",\"10.17.22.23\"]",
                "all_node_names": "[\"rally-node-0\",\"rally-node-1\"]",
                "minimum_master_nodes": 2,
                "install_root_path": "/opt/elasticsearch-6.3.0",
                "plugin_name": "x-pack-security",
                "xpack_security_enabled": True
            }, config_vars)
Example #3
0
    def test_prepare_without_plugins(self, mock_rm, mock_ensure_dir,
                                     mock_decompress):
        apply_config_calls = []

        def null_apply_config(source_root_path, target_root_path, config_vars):
            apply_config_calls.append(
                (source_root_path, target_root_path, config_vars))

        installer = provisioner.ElasticsearchInstaller(
            car=team.Car(names="unit-test-car",
                         root_path=None,
                         config_paths=[
                             HOME_DIR +
                             "/.rally/benchmarks/teams/default/my-car"
                         ],
                         variables={
                             "heap": "4g",
                             "runtime.jdk": "8",
                             "runtime.jdk.bundled": "true"
                         }),
            java_home="/usr/local/javas/java8",
            node_name="rally-node-0",
            node_root_dir=HOME_DIR + "/.rally/benchmarks/races/unittest",
            all_node_ips=["10.17.22.22", "10.17.22.23"],
            all_node_names=["rally-node-0", "rally-node-1"],
            ip="10.17.22.23",
            http_port=9200)

        p = provisioner.BareProvisioner(es_installer=installer,
                                        plugin_installers=[],
                                        apply_config=null_apply_config)

        node_config = p.prepare(
            {"elasticsearch": "/opt/elasticsearch-5.0.0.tar.gz"})
        self.assertEqual("8", node_config.car_runtime_jdks)
        self.assertEqual("/opt/elasticsearch-5.0.0", node_config.binary_path)
        self.assertEqual(["/opt/elasticsearch-5.0.0/data"],
                         node_config.data_paths)

        self.assertEqual(1, len(apply_config_calls))
        source_root_path, target_root_path, config_vars = apply_config_calls[0]

        self.assertEqual(HOME_DIR + "/.rally/benchmarks/teams/default/my-car",
                         source_root_path)
        self.assertEqual("/opt/elasticsearch-5.0.0", target_root_path)
        self.assertEqual(
            {
                "cluster_settings": {},
                "heap": "4g",
                "runtime.jdk": "8",
                "runtime.jdk.bundled": "true",
                "cluster_name": "rally-benchmark",
                "node_name": "rally-node-0",
                "data_paths": ["/opt/elasticsearch-5.0.0/data"],
                "log_path":
                HOME_DIR + "/.rally/benchmarks/races/unittest/logs/server",
                "heap_dump_path":
                HOME_DIR + "/.rally/benchmarks/races/unittest/heapdump",
                "node_ip": "10.17.22.23",
                "network_host": "10.17.22.23",
                "http_port": "9200",
                "transport_port": "9300",
                "all_node_ips": "[\"10.17.22.22\",\"10.17.22.23\"]",
                "all_node_names": "[\"rally-node-0\",\"rally-node-1\"]",
                "minimum_master_nodes": 2,
                "install_root_path": "/opt/elasticsearch-5.0.0"
            }, config_vars)
Example #4
0
    def test_prepare_distribution_lt_63_with_plugins(self, mock_rm,
                                                     mock_ensure_dir,
                                                     mock_install,
                                                     mock_decompress):
        """
        Test that plugin.mandatory is set to the specific plugin name (e.g. `x-pack-security`) and not
        the meta plugin name (e.g. `x-pack`) for Elasticsearch <6.3

        See: https://github.com/elastic/elasticsearch/pull/28710
        """
        apply_config_calls = []

        def null_apply_config(source_root_path, target_root_path, config_vars):
            apply_config_calls.append(
                (source_root_path, target_root_path, config_vars))

        installer = provisioner.ElasticsearchInstaller(
            car=team.Car(
                names="unit-test-car",
                root_path=None,
                config_paths=[
                    HOME_DIR + "/.rally/benchmarks/teams/default/my-car"
                ],
                variables={
                    "heap": "4g",
                    "runtime.jdk": "8",
                    "runtime.jdk.bundled": "true",
                },
            ),
            java_home="/usr/local/javas/java8",
            node_name="rally-node-0",
            node_root_dir=HOME_DIR + "/.rally/benchmarks/races/unittest",
            all_node_ips=["10.17.22.22", "10.17.22.23"],
            all_node_names=["rally-node-0", "rally-node-1"],
            ip="10.17.22.23",
            http_port=9200,
        )

        p = provisioner.BareProvisioner(
            es_installer=installer,
            plugin_installers=[
                provisioner.PluginInstaller(
                    self.MockRallyTeamXPackPlugin(),
                    java_home="/usr/local/javas/java8",
                    hook_handler_class=self.NoopHookHandler,
                )
            ],
            distribution_version="6.2.3",
            apply_config=null_apply_config,
        )

        node_config = p.prepare(
            {"elasticsearch": "/opt/elasticsearch-5.0.0.tar.gz"})
        assert node_config.car_runtime_jdks == "8"
        assert node_config.binary_path == "/opt/elasticsearch-5.0.0"
        assert node_config.data_paths == ["/opt/elasticsearch-5.0.0/data"]

        assert len(apply_config_calls) == 1
        source_root_path, target_root_path, config_vars = apply_config_calls[0]

        assert source_root_path == HOME_DIR + "/.rally/benchmarks/teams/default/my-car"
        assert target_root_path == "/opt/elasticsearch-5.0.0"

        self.maxDiff = None

        assert config_vars == {
            "cluster_settings": {
                "plugin.mandatory": ["x-pack-security"]
            },
            "heap": "4g",
            "runtime.jdk": "8",
            "runtime.jdk.bundled": "true",
            "cluster_name": "rally-benchmark",
            "node_name": "rally-node-0",
            "data_paths": ["/opt/elasticsearch-5.0.0/data"],
            "log_path":
            HOME_DIR + "/.rally/benchmarks/races/unittest/logs/server",
            "heap_dump_path":
            HOME_DIR + "/.rally/benchmarks/races/unittest/heapdump",
            "node_ip": "10.17.22.23",
            "network_host": "10.17.22.23",
            "http_port": "9200",
            "transport_port": "9300",
            "all_node_ips": '["10.17.22.22","10.17.22.23"]',
            "all_node_names": '["rally-node-0","rally-node-1"]',
            "minimum_master_nodes": 2,
            "install_root_path": "/opt/elasticsearch-5.0.0",
            "plugin_name": "x-pack-security",
            "xpack_security_enabled": True,
        }