[Fact] void SeedHostsAreRead()
        {
            var yaml     = $@"discovery.seed_hosts: [host1, host2]";
            var fs       = FakeElasticsearchYaml(yaml);
            var optsFile = new ElasticsearchYamlConfiguration(_path, fs);
            var settings = optsFile.Settings;

            settings.SeedHosts.Should().NotBeEmpty().And.HaveCount(2);
            optsFile.Save();
        }
Beispiel #2
0
        [Fact] void InitialMasterNodesAreReadFromStringCommaSeparated()
        {
            var yaml     = $@"cluster.initial_master_nodes: host1, host2";
            var fs       = FakeElasticsearchYaml(yaml);
            var optsFile = new ElasticsearchYamlConfiguration(_path, fs);
            var settings = optsFile.Settings;

            settings.InitialMasterNodes.Should().NotBeEmpty().And.HaveCount(2);
            optsFile.Save();
        }
        [Fact] void InitialMasterNodeAreRead()
        {
            var yaml     = $@"InitialMasterNode: [host1, host2]";
            var fs       = FakeElasticsearchYaml(yaml);
            var optsFile = new ElasticsearchYamlConfiguration(_path, fs);
            var settings = optsFile.Settings;

            settings.InitialMasterNodes.Should().NotBeEmpty().And.HaveCount(2);
            optsFile.Save();
        }
        [Fact] void UnicastHostsAreStillRead()
        {
            var folder   = @"C:\ProgramData\Elastic\Elasticsearch\";
            var yaml     = $@"discovery.zen.ping.unicast.hosts: [host1, host2]";
            var fs       = FakeElasticsearchYaml(yaml);
            var optsFile = new ElasticsearchYamlConfiguration(_path, fs);
            var settings = optsFile.Settings;

            settings.UnicastHosts.Should().NotBeEmpty().And.HaveCount(2);
            optsFile.Save();
        }
Beispiel #5
0
        [Fact] void UnderstandsObjectNotation()
        {
            var clusterName = "my-cluster";
            var yaml        = $"cluster:\r\n  name: {clusterName}\r\n  blocks:\r\n    read_only: true";
            var fs          = FakeElasticsearchYaml(yaml);
            var optsFile    = new ElasticsearchYamlConfiguration(_path, fs);

            optsFile.Settings.ClusterName.Should().Be(clusterName);
            optsFile.Settings.ClusterName = "x";
            optsFile.Settings["cluster.blocks.read_only"] = false;
            optsFile.Save();

            var fileContentsAfterSave = fs.File.ReadAllText(_path);
            var updatedYaml           = $"cluster.name: x\r\ncluster.blocks.read_only: false\r\n";

            fileContentsAfterSave.Replace("\r\n", "").Should().Be(updatedYaml.Replace("\r\n", ""));
        }
        [Fact] void KnownSettingsAreReadCorrectly()
        {
            var nodeName    = "DESKTOP-O4M5B2Q";
            var clusterName = "my-cluster";
            var networkHost = "127.0.0.1";
            var folder      = @"C:\ProgramData\Elastic\Elasticsearch\";
            var yaml        = $@"bootstrap.memory_lock: true
cluster.name: {clusterName}
network.host: {networkHost}
node.data: true
node.ingest: true
node.master: true
node.max_local_storage_nodes: 1
node.name: {nodeName}
path.data: {folder}data
path.logs: {folder}logs
xpack.license.self_generated.type: trial
xpack.security.enabled: false
xpack.random_setting: something
";
            var fs          = FakeElasticsearchYaml(yaml);
            var optsFile    = new ElasticsearchYamlConfiguration(_path, fs);
            var settings    = optsFile.Settings;

            settings.NodeName.Should().Be(nodeName);
            settings.ClusterName.Should().Be(clusterName);
            settings.NetworkHost.Should().Be(networkHost);
            settings.DataNode.Should().BeTrue();
            settings.IngestNode.Should().BeTrue();
            settings.MemoryLock.Should().BeTrue();
            settings.DataPath.Should().Be(folder + "data");
            settings.LogsPath.Should().Be(folder + "logs");
            settings.MaxLocalStorageNodes.Should().Be(1);
            settings.XPackSecurityEnabled.Should().BeFalse();
            settings.XPackLicenseSelfGeneratedType.Should().Be(nameof(XPackLicenseMode.Trial).ToLowerInvariant());
            settings.Keys.Where(k => k.StartsWith("xpack")).Should().HaveCount(1);
            optsFile.Save();

            var fileContentsAfterSave = fs.File.ReadAllText(_path);

            fileContentsAfterSave.Replace("\r", "").Should().Be(yaml.Replace("\r", ""));
        }
        [Fact] void UnknownSettingsAreNotLost()
        {
            var nodeName    = "DESKTOP-O4M5B2Q";
            var clusterName = "my-cluster";
            var yaml        = $@"cluster.name: {clusterName}
node.name: {nodeName}
some.plugin.setting: true
";
            var fs          = FakeElasticsearchYaml(yaml);
            var optsFile    = new ElasticsearchYamlConfiguration(_path, fs);
            var settings    = optsFile.Settings;

            settings.NodeName.Should().Be(nodeName);
            settings.ClusterName.Should().Be(clusterName);
            optsFile.Save();

            var fileContentsAfterSave = fs.File.ReadAllText(_path);

            fileContentsAfterSave.Replace("\r", "").Should().Be(yaml.Replace("\r", ""));
        }
        [Fact] void ReflectsChanges()
        {
            var clusterName = "my-cluster";
            var yaml        = $@"cluster.name: {clusterName}
some.plugin.setting: true
";
            var fs          = FakeElasticsearchYaml(yaml);
            var optsFile    = new ElasticsearchYamlConfiguration(_path, fs);

            optsFile.Settings.ClusterName            = "x";
            optsFile.Settings["some.plugin.setting"] = false;
            optsFile.Save();

            var fileContentsAfterSave = fs.File.ReadAllText(_path);
            var updatedYaml           = $@"cluster.name: x
some.plugin.setting: false
";

            fileContentsAfterSave.Replace("\r", "").Should().Be(updatedYaml.Replace("\r", ""));
        }
Beispiel #9
0
        [Fact] void KnownSettingsAreReadCorrectly()
        {
            var nodeName    = "DESKTOP-O4M5B2Q";
            var clusterName = "my-cluster";
            var networkHost = "127.0.0.1";
            var folder      = @"C:\ProgramData\Elastic\Elasticsearch\";
            var yaml        = $@"bootstrap.memory_lock: true
cluster.name: {clusterName}
network.host: {networkHost}
node.data: true
node.ingest: true
node.master: true
node.max_local_storage_nodes: 1
node.name: {nodeName}
path.data: {folder}data
path.logs: {folder}logs
";
            var fs          = FakeElasticsearchYaml(yaml);
            var optsFile    = new ElasticsearchYamlConfiguration(_path, fs);
            var settings    = optsFile.Settings;

            settings.NodeName.Should().Be(nodeName);
            settings.ClusterName.Should().Be(clusterName);
            settings.NetworkHost.Should().Be(networkHost);
            settings.DataNode.Should().BeTrue();
            settings.IngestNode.Should().BeTrue();
            settings.MemoryLock.Should().BeTrue();
            settings.DataPath.Should().Be(folder + "data");
            settings.LogsPath.Should().Be(folder + "logs");
            settings.MaxLocalStorageNodes.Should().Be(1);
            optsFile.Save();

            var fileContentsAfterSave = fs.File.ReadAllText(_path);

            fileContentsAfterSave.Replace("\r", "").Should().Be(yaml.Replace("\r", ""));
        }