diff --git a/build/scripts/scripts.fsproj b/build/scripts/scripts.fsproj
index a4192b7d9c8..7685ad94296 100644
--- a/build/scripts/scripts.fsproj
+++ b/build/scripts/scripts.fsproj
@@ -69,7 +69,7 @@
-
+
diff --git a/src/Tests/Tests.Benchmarking/Tests.Benchmarking.csproj b/src/Tests/Tests.Benchmarking/Tests.Benchmarking.csproj
index 8a5fa1f165e..5e324b3a7e7 100644
--- a/src/Tests/Tests.Benchmarking/Tests.Benchmarking.csproj
+++ b/src/Tests/Tests.Benchmarking/Tests.Benchmarking.csproj
@@ -13,7 +13,7 @@
-
+
\ No newline at end of file
diff --git a/src/Tests/Tests.Configuration/TestConfigurationBase.cs b/src/Tests/Tests.Configuration/TestConfigurationBase.cs
index ad0e7add238..54e55f19923 100644
--- a/src/Tests/Tests.Configuration/TestConfigurationBase.cs
+++ b/src/Tests/Tests.Configuration/TestConfigurationBase.cs
@@ -13,6 +13,9 @@ public abstract class TestConfigurationBase
/// The Elasticsearch version to test against, defined for both unit and integration tests
public string ElasticsearchVersion { get; protected set; }
+ public bool ElasticsearchVersionIsSnapshot => !string.IsNullOrWhiteSpace(ElasticsearchVersion)
+ && (ElasticsearchVersion.Contains("SNAPSHOT") || ElasticsearchVersion.Contains("latest"));
+
/// Force a reseed (bootstrap) of the cluster even if checks indicate bootstrap already ran
public bool ForceReseed { get; protected set; }
diff --git a/src/Tests/Tests.Configuration/tests.default.yaml b/src/Tests/Tests.Configuration/tests.default.yaml
index 99aa089a777..eb2f168dd4d 100644
--- a/src/Tests/Tests.Configuration/tests.default.yaml
+++ b/src/Tests/Tests.Configuration/tests.default.yaml
@@ -9,7 +9,7 @@ mode: i
# the elasticsearch version that should be started
# Can be a snapshot version of sonatype or "latest" to get the latest snapshot of sonatype
-elasticsearch_version: 7.0.0
+elasticsearch_version: latest-7
# cluster filter allows you to only run the integration tests of a particular cluster (cluster suffix not needed)
# cluster_filter:
# whether we want to forcefully reseed on the node, if you are starting the tests with a node already running
diff --git a/src/Tests/Tests.Core/Tests.Core.csproj b/src/Tests/Tests.Core/Tests.Core.csproj
index edd9a919a43..fb18d33e5d0 100644
--- a/src/Tests/Tests.Core/Tests.Core.csproj
+++ b/src/Tests/Tests.Core/Tests.Core.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/src/Tests/Tests.Core/Xunit/SkipOnTeamCityAttribute.cs b/src/Tests/Tests.Core/Xunit/SkipOnCIAttribute.cs
similarity index 66%
rename from src/Tests/Tests.Core/Xunit/SkipOnTeamCityAttribute.cs
rename to src/Tests/Tests.Core/Xunit/SkipOnCIAttribute.cs
index e6249f77439..65301a76a0c 100644
--- a/src/Tests/Tests.Core/Xunit/SkipOnTeamCityAttribute.cs
+++ b/src/Tests/Tests.Core/Xunit/SkipOnCIAttribute.cs
@@ -3,12 +3,14 @@
namespace Tests.Core.Xunit
{
- public class SkipOnTeamCityAttribute : SkipTestAttributeBase
+ public class SkipOnCiAttribute : SkipTestAttributeBase
{
public override string Reason { get; } = "Skip running this test on TeamCity, this is usually a sign this test is flakey?";
public static bool RunningOnTeamCity => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TEAMCITY_VERSION"));
- public override bool Skip => RunningOnTeamCity;
+ public static bool RunningOnAzureDevops => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TF_BUILD"));
+ public static bool RunningOnAppVeyor => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("APPVEYOR_BUILD_VERSION"));
+ public override bool Skip => RunningOnTeamCity || RunningOnAppVeyor || RunningOnAzureDevops;
}
//
diff --git a/src/Tests/Tests.Domain/Tests.Domain.csproj b/src/Tests/Tests.Domain/Tests.Domain.csproj
index e4d257ec329..e058a99d2ec 100644
--- a/src/Tests/Tests.Domain/Tests.Domain.csproj
+++ b/src/Tests/Tests.Domain/Tests.Domain.csproj
@@ -12,7 +12,7 @@
-
+
diff --git a/src/Tests/Tests/Cat/CatFielddata/CatFielddataApiTests.cs b/src/Tests/Tests/Cat/CatFielddata/CatFielddataApiTests.cs
index 304dcfd758a..092a8893300 100644
--- a/src/Tests/Tests/Cat/CatFielddata/CatFielddataApiTests.cs
+++ b/src/Tests/Tests/Cat/CatFielddata/CatFielddataApiTests.cs
@@ -52,7 +52,7 @@ protected override void ExpectResponse(CatResponse response)
// TODO investigate flakiness
// build seed:64178 integrate 6.3.0 "readonly" "catfielddata"
// fails on TeamCity but not locally, assuming the different PC sizes come into play
- if (SkipOnTeamCityAttribute.RunningOnTeamCity || _initialSearchResponse == null || _initialSearchResponse.Total <= 0)
+ if (SkipOnCiAttribute.RunningOnTeamCity || _initialSearchResponse == null || _initialSearchResponse.Total <= 0)
return;
response.Records.Should().NotBeEmpty();
diff --git a/src/Tests/Tests/Cluster/RootNodeInfo/RootNodeInfoApiTests.cs b/src/Tests/Tests/Cluster/RootNodeInfo/RootNodeInfoApiTests.cs
index 4f7b14366f6..fbfd2f06c3b 100644
--- a/src/Tests/Tests/Cluster/RootNodeInfo/RootNodeInfoApiTests.cs
+++ b/src/Tests/Tests/Cluster/RootNodeInfo/RootNodeInfoApiTests.cs
@@ -37,7 +37,7 @@ protected override void ExpectResponse(RootNodeInfoResponse response)
response.Version.BuildDate.Should().BeAfter(default);
response.Version.BuildFlavor.Should().NotBeNullOrWhiteSpace();
response.Version.BuildHash.Should().NotBeNullOrWhiteSpace();
- response.Version.BuildSnapshot.Should().Be(TestConfiguration.Instance.ElasticsearchVersion.Contains("SNAPSHOT"));
+ response.Version.BuildSnapshot.Should().Be(TestConfiguration.Instance.ElasticsearchVersionIsSnapshot);
response.Version.BuildType.Should().NotBeNullOrWhiteSpace();
response.Version.MinimumIndexCompatibilityVersion.Should().NotBeNullOrWhiteSpace();
response.Version.MinimumWireCompatibilityVersion.Should().NotBeNullOrWhiteSpace();
diff --git a/src/Tests/Tests/Document/Multiple/BulkAll/BulkAllCancellationTokenApiTests.cs b/src/Tests/Tests/Document/Multiple/BulkAll/BulkAllCancellationTokenApiTests.cs
index 9ac3033b06b..3eda940c903 100644
--- a/src/Tests/Tests/Document/Multiple/BulkAll/BulkAllCancellationTokenApiTests.cs
+++ b/src/Tests/Tests/Document/Multiple/BulkAll/BulkAllCancellationTokenApiTests.cs
@@ -13,7 +13,7 @@ public class BulkAllCancellationTokenApiTests : BulkAllApiTestsBase
{
public BulkAllCancellationTokenApiTests(IntrusiveOperationCluster cluster) : base(cluster) { }
- [I] [SkipOnTeamCity]
+ [I] [SkipOnCi]
public void CancelBulkAll()
{
var index = CreateIndexName();
diff --git a/src/Tests/Tests/Document/Multiple/BulkAll/BulkAllDisposeApiTests.cs b/src/Tests/Tests/Document/Multiple/BulkAll/BulkAllDisposeApiTests.cs
index 3fc93b023d0..7dfc272af89 100644
--- a/src/Tests/Tests/Document/Multiple/BulkAll/BulkAllDisposeApiTests.cs
+++ b/src/Tests/Tests/Document/Multiple/BulkAll/BulkAllDisposeApiTests.cs
@@ -13,7 +13,7 @@ public class BulkAllDisposeApiTests : BulkAllApiTestsBase
{
public BulkAllDisposeApiTests(IntrusiveOperationCluster cluster) : base(cluster) { }
- [I] [SkipOnTeamCity]
+ [I] [SkipOnCi]
public void DisposingObservableCancelsBulkAll()
{
var index = CreateIndexName();
diff --git a/src/Tests/Tests/XPack/Info/XPackInfoApiTests.cs b/src/Tests/Tests/XPack/Info/XPackInfoApiTests.cs
index fa664705b51..cc5b3041a4e 100644
--- a/src/Tests/Tests/XPack/Info/XPackInfoApiTests.cs
+++ b/src/Tests/Tests/XPack/Info/XPackInfoApiTests.cs
@@ -3,12 +3,14 @@
using FluentAssertions;
using Nest;
using Tests.Core.ManagedElasticsearch.Clusters;
+using Tests.Core.Xunit;
using Tests.Framework.EndpointTests;
using Tests.Framework.EndpointTests.TestState;
namespace Tests.XPack.Info
{
[SkipVersion("<6.8.0", "All APIs exist in Elasticsearch 6.8.0")]
+ [SkipOnCi] //TODO https://github.com/elastic/elasticsearch/issues/45250
public class XPackInfoApiTests : CoordinatedIntegrationTestBase
{
private const string XPackInfoStep = nameof(XPackInfoStep);
diff --git a/src/Tests/Tests/XPack/License/GetBasicLicenseStatus/GetBasicLicenseStatusApiTests.cs b/src/Tests/Tests/XPack/License/GetBasicLicenseStatus/GetBasicLicenseStatusApiTests.cs
index 0d95111b8a8..15dc2dc8a36 100644
--- a/src/Tests/Tests/XPack/License/GetBasicLicenseStatus/GetBasicLicenseStatusApiTests.cs
+++ b/src/Tests/Tests/XPack/License/GetBasicLicenseStatus/GetBasicLicenseStatusApiTests.cs
@@ -11,7 +11,7 @@
namespace Tests.XPack.License.GetBasicLicenseStatus
{
[SkipVersion("<6.5.0", "")]
- [SkipOnTeamCity]
+ [SkipOnCi]
public class GetBasicLicenseStatusApiTests
: ApiIntegrationTestBase
{
diff --git a/src/Tests/Tests/XPack/License/GetTrialLicenseStatus/GetTrialLicenseStatusApiTests.cs b/src/Tests/Tests/XPack/License/GetTrialLicenseStatus/GetTrialLicenseStatusApiTests.cs
index c3ad692d825..da709498000 100644
--- a/src/Tests/Tests/XPack/License/GetTrialLicenseStatus/GetTrialLicenseStatusApiTests.cs
+++ b/src/Tests/Tests/XPack/License/GetTrialLicenseStatus/GetTrialLicenseStatusApiTests.cs
@@ -11,7 +11,7 @@
namespace Tests.XPack.License.GetTrialLicenseStatus
{
[SkipVersion("<6.1.0", "Only exists in Elasticsearch 6.1.0+")]
- [SkipOnTeamCity]
+ [SkipOnCi]
public class GetTrialLicenseStatusApiTests
: ApiIntegrationTestBase
diff --git a/src/Tests/Tests/XPack/MachineLearning/MachineLearningIntegrationTestBase.cs b/src/Tests/Tests/XPack/MachineLearning/MachineLearningIntegrationTestBase.cs
index c2078d663f0..6ed51022e2f 100644
--- a/src/Tests/Tests/XPack/MachineLearning/MachineLearningIntegrationTestBase.cs
+++ b/src/Tests/Tests/XPack/MachineLearning/MachineLearningIntegrationTestBase.cs
@@ -12,7 +12,7 @@
namespace Tests.XPack.MachineLearning
{
[SkipVersion("<5.5.0", "Machine Learning does not exist in previous versions")]
- [SkipOnTeamCity]
+ [SkipOnCi]
public abstract class MachineLearningIntegrationTestBase
: ApiIntegrationTestBase
where TResponse : class, IResponse
diff --git a/src/Tests/Tests/XPack/Security/ApiKey/SecurityApiKeyUsageTests.cs b/src/Tests/Tests/XPack/Security/ApiKey/SecurityApiKeyUsageTests.cs
index b0897337494..4e67da8d2ea 100644
--- a/src/Tests/Tests/XPack/Security/ApiKey/SecurityApiKeyUsageTests.cs
+++ b/src/Tests/Tests/XPack/Security/ApiKey/SecurityApiKeyUsageTests.cs
@@ -5,12 +5,41 @@
using Nest;
using Tests.Core.Extensions;
using Tests.Core.ManagedElasticsearch.Clusters;
+using Tests.Core.Xunit;
using Tests.Framework.EndpointTests;
using Tests.Framework.EndpointTests.TestState;
namespace Tests.XPack.Security.ApiKey
{
+ /*
+ * On the server internally create api key does a search. on CI this search often fails and the PUT for create api key returns with:
+ *
+ * - [1] BadResponse: Node: https://localhost:9200/ Took: 00:00:00.9531746
+# OriginalException: Elasticsearch.Net.ElasticsearchClientException: The remote server returned an error: (503) Server Unavailable.. Call: Status code 503 from: PUT /_security/api_key?pretty=true&error_trace=true. ServerError: Type: search_phase_execution_exception Reason: "all shards failed" ---> System.Net.WebException: The remote server returned an error: (503) Server Unavailable.
+ at System.Net.HttpWebRequest.GetResponse()
+ at Elasticsearch.Net.HttpWebRequestConnection.Request[TResponse](RequestData requestData) in D:\a\1\s\src\Elasticsearch.Net\Connection\HttpWebRequestConnection.cs:line 59
+ --- End of inner exception stack trace ---
+# Request:
+{"name":"nest-initializer-c241e819","role_descriptors":{}}
+# Response:
+{
+ "error" : {
+ "root_cause" : [ ],
+ "type" : "search_phase_execution_exception",
+ "reason" : "all shards failed",
+ "phase" : "query",
+ "grouped" : true,
+ "failed_shards" : [ ],
+ "stack_trace" : "Failed to execute phase [query], all shards failed\r\n\tat ....."
+ },
+ "status" : 503
+}
+
+ *
+ */
+
[SkipVersion("<7.0.0", "Implemented in version 7.0.0")]
+ [SkipOnCi] //TODO flakey: investigate see above for more information
public class SecurityApiKeyUsageTests
: ApiIntegrationTestBase