diff --git a/src/Tests/Tests.Core/ManagedElasticsearch/Clusters/IntrusiveOperationSeededCluster.cs b/src/Tests/Tests.Core/ManagedElasticsearch/Clusters/IntrusiveOperationSeededCluster.cs
new file mode 100644
index 00000000000..97c5eec2dcf
--- /dev/null
+++ b/src/Tests/Tests.Core/ManagedElasticsearch/Clusters/IntrusiveOperationSeededCluster.cs
@@ -0,0 +1,24 @@
+using Elastic.Managed.Ephemeral.Plugins;
+using Tests.Core.ManagedElasticsearch.NodeSeeders;
+
+namespace Tests.Core.ManagedElasticsearch.Clusters
+{
+ ///
+ /// Use this cluster for heavy API's, either on ES's side or the client (intricate setup etc)
+ ///
+ public class IntrusiveOperationSeededCluster : ClientTestClusterBase
+ {
+ public IntrusiveOperationSeededCluster() : base(new ClientTestClusterConfiguration(
+ ElasticsearchPlugin.IngestGeoIp, ElasticsearchPlugin.IngestAttachment
+ )
+ {
+ MaxConcurrency = 1
+ }) { }
+
+ protected override void SeedCluster()
+ {
+ var seeder = new DefaultSeeder(Client);
+ seeder.SeedNode();
+ }
+ }
+}
diff --git a/src/Tests/Tests/Cluster/ClusterReroute/ClusterRerouteApiTests.cs b/src/Tests/Tests/Cluster/ClusterReroute/ClusterRerouteApiTests.cs
index 7151d8516dc..93671b0556b 100644
--- a/src/Tests/Tests/Cluster/ClusterReroute/ClusterRerouteApiTests.cs
+++ b/src/Tests/Tests/Cluster/ClusterReroute/ClusterRerouteApiTests.cs
@@ -12,10 +12,10 @@
namespace Tests.Cluster.ClusterReroute
{
public class ClusterRerouteApiTests
- : ApiIntegrationTestBase
{
- public ClusterRerouteApiTests(IntrusiveOperationCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
+ public ClusterRerouteApiTests(IntrusiveOperationSeededCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
protected override bool ExpectIsValid => false;
diff --git a/src/Tests/Tests/XPack/CrossClusterReplication/CrossClusterReplicationFollowTests.cs b/src/Tests/Tests/XPack/CrossClusterReplication/CrossClusterReplicationFollowTests.cs
index 9df28ed047d..b489acfe591 100644
--- a/src/Tests/Tests/XPack/CrossClusterReplication/CrossClusterReplicationFollowTests.cs
+++ b/src/Tests/Tests/XPack/CrossClusterReplication/CrossClusterReplicationFollowTests.cs
@@ -21,6 +21,7 @@ namespace Tests.XPack.CrossClusterReplication
[SkipVersion("<6.5.0", "")]
public class CrossClusterReplicationFollowTests : CoordinatedIntegrationTestBase
{
+ private readonly WritableCluster _cluster;
private const string CloseIndexStep = nameof(CloseIndexStep);
private const string CountAfterStep = nameof(CountAfterStep);
private const string CountBeforeStep = nameof(CountBeforeStep);
@@ -73,14 +74,37 @@ public CrossClusterReplicationFollowTests(WritableCluster cluster, EndpointUsage
{
FollowIndexStep, u =>
u.Calls(
- v => new CreateFollowIndexRequest(CopyIndex(v))
+ v =>
{
- RemoteCluster = DefaultSeeder.RemoteClusterName,
- LeaderIndex = v
+ if (cluster.ClusterConfiguration.Version < "6.7.0")
+ {
+ return new CreateFollowIndexRequest(CopyIndex(v))
+ {
+ RemoteCluster = DefaultSeeder.RemoteClusterName,
+ LeaderIndex = v
+ };
+ }
+ return new CreateFollowIndexRequest(CopyIndex(v))
+ {
+ RemoteCluster = DefaultSeeder.RemoteClusterName,
+ LeaderIndex = v,
+ WaitForActiveShards = "1"
+ };
+ },
+ (v, d) =>
+ {
+ if (cluster.ClusterConfiguration.Version < "6.7.0")
+ {
+ return d
+ .RemoteCluster(DefaultSeeder.RemoteClusterName)
+ .LeaderIndex(v);
+ }
+
+ return d
+ .RemoteCluster(DefaultSeeder.RemoteClusterName)
+ .LeaderIndex(v)
+ .WaitForActiveShards("1");
},
- (v, d) => d
- .RemoteCluster(DefaultSeeder.RemoteClusterName)
- .LeaderIndex(v),
(v, c, f) => c.CreateFollowIndex(CopyIndex(v), f),
(v, c, f) => c.CreateFollowIndexAsync(CopyIndex(v), f),
(v, c, r) => c.CreateFollowIndex(r),
@@ -197,7 +221,10 @@ public CrossClusterReplicationFollowTests(WritableCluster cluster, EndpointUsage
(v, c, r) => c.UnfollowIndexAsync(r)
)
},
- }) { }
+ })
+ {
+ _cluster = cluster;
+ }
protected static string Prefix { get; } = $"f{Guid.NewGuid().ToString("N").Substring(0, 4)}";
@@ -318,6 +345,16 @@ [I] public async Task PauseBeforeCloseIsAcked() =>
[I] public async Task CloseIsAcked() => await Assert(CloseIndexStep, r => r.Acknowledged.Should().BeTrue());
[I] public async Task UnfollowAfterCloseIsAcked() =>
- await Assert(UnfollowAgainStep, r => r.Acknowledged.Should().BeTrue());
+ await Assert(UnfollowAgainStep, r =>
+ {
+ // Unfollowing an index after closing on 6.7.0 throws an exception.
+ if (_cluster.ClusterConfiguration.Version < "6.7.0")
+ {
+ r.Acknowledged.Should().BeTrue();
+ return;
+ }
+ r.IsValid.Should().BeFalse();
+ r.ServerError.Should().NotBeNull();
+ });
}
}