Skip to content

Commit d301f85

Browse files
committed
ElasticsearchNode should use DesiredPort from NodeConfiguration (#2794)
* ElasticsearchNode should use DesiredPort from NodeConfiguration Share ElasticsearchVersion instances * Allow more time for flaky integration tests Increase number of documents and wait time for BulkAll cancellation and dispose tests Increase request timeout for Watcher inline execution test (cherry picked from commit 9b0d36b)
1 parent 99dde04 commit d301f85

File tree

9 files changed

+51
-29
lines changed

9 files changed

+51
-29
lines changed

src/Tests/Document/Multiple/BulkAll/BulkAllApiTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void DisposingObservableCancelsBulkAll()
8080
var handle = new ManualResetEvent(false);
8181

8282
var size = 1000;
83-
var pages = 100;
83+
var pages = 1000;
8484
var seenPages = 0;
8585
var numberOfDocuments = size * pages;
8686
var documents = this.CreateLazyStreamOfDocuments(numberOfDocuments);
@@ -104,7 +104,7 @@ public void DisposingObservableCancelsBulkAll()
104104
observableBulk.Subscribe(bulkObserver);
105105

106106
//we wait N seconds to see some bulks
107-
handle.WaitOne(TimeSpan.FromSeconds(1));
107+
handle.WaitOne(TimeSpan.FromSeconds(3));
108108
observableBulk.Dispose();
109109
//we wait N seconds to give in flight request a chance to cancel
110110
handle.WaitOne(TimeSpan.FromSeconds(3));
@@ -123,7 +123,7 @@ public void CancelBulkAll()
123123
var handle = new ManualResetEvent(false);
124124

125125
var size = 1000;
126-
var pages = 100;
126+
var pages = 1000;
127127
var seenPages = 0;
128128
var numberOfDocuments = size * pages;
129129
var documents = this.CreateLazyStreamOfDocuments(numberOfDocuments);
@@ -149,7 +149,7 @@ public void CancelBulkAll()
149149
observableBulk.Subscribe(bulkObserver);
150150

151151
//we wait Nseconds to see some bulks
152-
handle.WaitOne(TimeSpan.FromSeconds(1));
152+
handle.WaitOne(TimeSpan.FromSeconds(3));
153153
tokenSource.Cancel();
154154
//we wait Nseconds to give in flight request a chance to cancel
155155
handle.WaitOne(TimeSpan.FromSeconds(3));

src/Tests/Framework/Configuration/EnvironmentConfiguration.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class EnvironmentConfiguration : TestConfigurationBase
1111
{
1212
public override bool TestAgainstAlreadyRunningElasticsearch { get; protected set; } = false;
1313
public override bool ForceReseed { get; protected set; } = true;
14-
public override ElasticsearchVersion ElasticsearchVersion { get; protected set; } = new ElasticsearchVersion("2.0.0");
14+
public override ElasticsearchVersion ElasticsearchVersion { get; protected set; } = ElasticsearchVersion.GetOrAdd("2.0.0");
1515
public override TestMode Mode { get; protected set; } = TestMode.Unit;
1616
public override string ClusterFilter { get; protected set; }
1717
public override string TestFilter { get; protected set; }
@@ -23,7 +23,7 @@ public EnvironmentConfiguration()
2323
var version = Environment.GetEnvironmentVariable("NEST_INTEGRATION_VERSION");
2424
if (!string.IsNullOrEmpty(version)) Mode = TestMode.Integration;
2525

26-
this.ElasticsearchVersion = new ElasticsearchVersion(string.IsNullOrWhiteSpace(version) ? "2.0.0" : version);
26+
this.ElasticsearchVersion = ElasticsearchVersion.GetOrAdd(string.IsNullOrWhiteSpace(version) ? "2.0.0" : version);
2727
this.ClusterFilter = Environment.GetEnvironmentVariable("NEST_INTEGRATION_CLUSTER");
2828
this.TestFilter = Environment.GetEnvironmentVariable("NEST_TEST_FILTER");
2929
}

src/Tests/Framework/Configuration/Versions/ElasticsearchVersion.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Concurrent;
33
using System.Linq;
4+
using System.Net;
45
using System.Threading;
56
using System.Xml.Linq;
67
using Version = SemVer.Version;
@@ -14,6 +15,7 @@ public class ElasticsearchVersion : Version
1415
private static readonly object _lock = new { };
1516
private static readonly ConcurrentDictionary<string, string> SnapshotVersions = new ConcurrentDictionary<string, string>();
1617
private static readonly string SonaTypeUrl = "https://oss.sonatype.org/content/repositories/snapshots/org/elasticsearch/distribution/zip/elasticsearch";
18+
private static readonly ConcurrentDictionary<string, ElasticsearchVersion> Versions = new ConcurrentDictionary<string, ElasticsearchVersion>();
1719
private static readonly string OldDownloadUrl = "https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch";
1820

1921
private string RootUrl => this.IsSnapshot
@@ -119,5 +121,8 @@ public ElasticsearchVersion(string version) : base(TranslateConfigVersion(versio
119121
public bool IsSnapshot => this.Version?.ToLower().Contains("snapshot") ?? false;
120122

121123
public override string ToString() => this.Version;
124+
125+
public static ElasticsearchVersion GetOrAdd(string version) =>
126+
Versions.GetOrAdd(version, v => new ElasticsearchVersion(v));
122127
}
123128
}

src/Tests/Framework/Configuration/YamlConfiguration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public YamlConfiguration(string configurationFile)
2323
.ToDictionary(ConfigName, ConfigValue);
2424

2525
this.Mode = GetTestMode(config["mode"]);
26-
this.ElasticsearchVersion = new ElasticsearchVersion(config["elasticsearch_version"]);
26+
this.ElasticsearchVersion = ElasticsearchVersion.GetOrAdd(config["elasticsearch_version"]);
2727
this.ForceReseed = bool.Parse(config["force_reseed"]);
2828
this.TestAgainstAlreadyRunningElasticsearch = bool.Parse(config["test_against_already_running_elasticsearch"]);
2929
this.ClusterFilter = config.ContainsKey("cluster_filter") ? config["cluster_filter"] : null;

src/Tests/Framework/ManagedElasticsearch/Nodes/ElasticsearchNode.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,21 @@ public class ElasticsearchNode : IDisposable
2626
private readonly NodeConfiguration _config;
2727

2828
public ElasticsearchVersion Version => _config.ElasticsearchVersion;
29+
2930
public NodeFileSystem FileSystem { get; }
3031

3132
public bool Started { get; private set; }
3233

33-
public int Port { get; private set; } = 9200;
34+
public int Port { get; private set; }
35+
36+
private bool RunningOnCI { get; }
3437

3538
public ElasticsearchNode(NodeConfiguration config)
3639
{
3740
this._config = config;
3841
this.FileSystem = config.FileSystem;
39-
42+
this.RunningOnCI = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TEAMCITY_VERSION"));
43+
this.Port = config.DesiredPort;
4044
if (this._config.RunIntegrationTests && !this._config.TestAgainstAlreadyRunningElasticsearch) return;
4145
}
4246

@@ -88,7 +92,7 @@ public void Start(string[] settings)
8892
{
8993
var subscription = Observable.Using(() => process, p => p.Start())
9094
.Select(c => new ElasticsearchConsoleOut(this._config.ElasticsearchVersion, c.Error, c.Data))
91-
.Subscribe(s => this.HandleConsoleMessage(s, handle), e => { throw e; }, () => handle.Set());
95+
.Subscribe(s => this.HandleConsoleMessage(s, handle), e => throw e, () => handle.Set());
9296
this._composite.Add(subscription);
9397

9498
if (!handle.WaitOne(timeout, true))
@@ -111,20 +115,24 @@ private bool UseAlreadyRunningInstance()
111115

112116
private void HandleConsoleMessage(ElasticsearchConsoleOut consoleOut, XplatManualResetEvent handle)
113117
{
114-
Console.WriteLine(consoleOut.Data);
115118
//no need to snoop for metadata if we already started
116119
if (!this._config.RunIntegrationTests || this.Started) return;
117120

118-
if (consoleOut.Error && !this.Started && !string.IsNullOrWhiteSpace(consoleOut.Data))
119-
throw new Exception("Error out:" + consoleOut.Data);
121+
//if we are running on CI and not started dump elasticsearch stdout/err
122+
{
123+
if (consoleOut.Error) Console.Error.WriteLine(consoleOut.Data);
124+
else Console.WriteLine(consoleOut.Data);
125+
}
126+
127+
if (consoleOut.Error && !this.Started && !string.IsNullOrWhiteSpace(consoleOut.Data)) throw new Exception(consoleOut.Data);
120128

121129
string version;
122130
int? pid;
123131
int port;
124132

125133
if (this.ProcessId == null && consoleOut.TryParseNodeInfo(out version, out pid))
126134
{
127-
var startedVersion = new ElasticsearchVersion(version);
135+
var startedVersion = ElasticsearchVersion.GetOrAdd(version);
128136
this.ProcessId = pid;
129137
if (this.Version != startedVersion)
130138
throw new Exception($"Booted elasticsearch is version {startedVersion} but the test config dictates {this.Version}");

src/Tests/Framework/ManagedElasticsearch/Nodes/NodeConfiguration.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ public NodeConfiguration(ITestConfiguration configuration, ClusterBase cluster)
5656
this.DesiredPort = cluster.DesiredPort;
5757

5858
var attr = v.Major >= 5 ? "attr." : "";
59-
var indexedOrStored = v > new ElasticsearchVersion("5.0.0-alpha1") ? "stored" : "indexed";
60-
var shieldOrSecurity = v > new ElasticsearchVersion("5.0.0-alpha1") ? "xpack.security" : "shield";
61-
var es = v > new ElasticsearchVersion("5.0.0-alpha2") ? "" : "es.";
59+
var indexedOrStored = v > ElasticsearchVersion.GetOrAdd("5.0.0-alpha1") ? "stored" : "indexed";
60+
var shieldOrSecurity = v > ElasticsearchVersion.GetOrAdd("5.0.0-alpha1") ? "xpack.security" : "shield";
61+
var es = v > ElasticsearchVersion.GetOrAdd("5.0.0-alpha2") ? "" : "es.";
6262
var b = this.XPackEnabled.ToString().ToLowerInvariant();
6363
var sslEnabled = this.EnableSsl.ToString().ToLowerInvariant();
6464
this.DefaultNodeSettings = new List<string>
@@ -74,6 +74,8 @@ public NodeConfiguration(ITestConfiguration configuration, ClusterBase cluster)
7474
$"{es}node.{attr}testingcluster=true",
7575
$"{es}{shieldOrSecurity}.enabled={b}",
7676
};
77+
if (v >= new ElasticsearchVersion("5.4.0"))
78+
this.DefaultNodeSettings.Add($"{es}search.remote.connect=true");
7779
}
7880

7981
public string[] CreateSettings(string[] additionalSettings)

src/Tests/Framework/ManagedElasticsearch/Plugins/ElasticsearchPluginCollection.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@ public class ElasticsearchPluginCollection : KeyedCollection<ElasticsearchPlugin
88
public static ElasticsearchPluginCollection Supported { get; } =
99
new ElasticsearchPluginCollection
1010
{
11-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.DeleteByQuery, version => version < new ElasticsearchVersion("5.0.0")),
12-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.CloudAzure, version => version < new ElasticsearchVersion("5.0.0")),
13-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.License, version => version < new ElasticsearchVersion("5.0.0")),
14-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.Shield, version => version < new ElasticsearchVersion("5.0.0")),
15-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.Watcher, version => version < new ElasticsearchVersion("5.0.0")),
16-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.Graph, v => v >= new ElasticsearchVersion("2.3.0") && v < new ElasticsearchVersion("5.0.0")),
11+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.DeleteByQuery, version => version < ElasticsearchVersion.GetOrAdd("5.0.0")),
12+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.CloudAzure, version => version < ElasticsearchVersion.GetOrAdd("5.0.0")),
13+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.License, version => version < ElasticsearchVersion.GetOrAdd("5.0.0")),
14+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.Shield, version => version < ElasticsearchVersion.GetOrAdd("5.0.0")),
15+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.Watcher, version => version < ElasticsearchVersion.GetOrAdd("5.0.0")),
16+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.Graph, v => v >= ElasticsearchVersion.GetOrAdd("2.3.0") && v < ElasticsearchVersion.GetOrAdd("5.0.0")),
1717

1818
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.MapperMurmer3),
1919
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.AnalysisKuromoji),
2020
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.AnalysisIcu),
2121

22-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.MapperAttachments, version => version >= new ElasticsearchVersion("2.4.0")),
23-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.XPack, version => version >= new ElasticsearchVersion("5.0.0")),
24-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.IngestGeoIp, version => version >= new ElasticsearchVersion("5.0.0")),
25-
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.IngestAttachment, version => version >= new ElasticsearchVersion("5.0.0")),
22+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.MapperAttachments, version => version >= ElasticsearchVersion.GetOrAdd("2.4.0")),
23+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.XPack, version => version >= ElasticsearchVersion.GetOrAdd("5.0.0")),
24+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.IngestGeoIp, version => version >= ElasticsearchVersion.GetOrAdd("5.0.0")),
25+
new ElasticsearchPluginConfiguration(ElasticsearchPlugin.IngestAttachment, version => version >= ElasticsearchVersion.GetOrAdd("5.0.0")),
2626
};
2727

2828
protected override ElasticsearchPlugin GetKeyForItem(ElasticsearchPluginConfiguration item) => item.Plugin;

src/Tests/Framework/ManagedElasticsearch/Tasks/ValidationTasks/ValidateRunningVersion.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ public override void Validate(IElasticClient client, NodeConfiguration configura
1717
if (!alreadyUp.IsValid) return;
1818
var v = configuration.ElasticsearchVersion;
1919

20-
var alreadyUpVersion = new ElasticsearchVersion(alreadyUp.Version.Number);
21-
var alreadyUpSnapshotVersion = new ElasticsearchVersion(alreadyUp.Version.Number + "-SNAPSHOT");
20+
var alreadyUpVersion = ElasticsearchVersion.GetOrAdd(alreadyUp.Version.Number);
21+
var alreadyUpSnapshotVersion = ElasticsearchVersion.GetOrAdd(alreadyUp.Version.Number + "-SNAPSHOT");
2222
if (v != alreadyUpVersion && v != alreadyUpSnapshotVersion)
2323
throw new Exception($"running elasticsearch is version {alreadyUpVersion} but the test config dictates {v}");
2424
}

src/Tests/XPack/Watcher/ExecuteWatch/ExecuteWatchApiTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,9 @@ protected override LazyResponses ClientUsage() => Calls(
549549
.Body("{}")
550550
)
551551
)
552+
)
553+
.RequestConfiguration(r => r
554+
.RequestTimeout(TimeSpan.FromMinutes(2))
552555
);
553556

554557
protected override ExecuteWatchRequest Initializer =>
@@ -616,6 +619,10 @@ protected override LazyResponses ClientUsage() => Calls(
616619
Method = HttpInputMethod.Post,
617620
Body = "{}"
618621
}
622+
},
623+
RequestConfiguration = new RequestConfiguration
624+
{
625+
RequestTimeout = TimeSpan.FromMinutes(2)
619626
}
620627
};
621628

0 commit comments

Comments
 (0)