From 2d5b977e996b068b406130f24ec0d4fe6adb134a Mon Sep 17 00:00:00 2001 From: Vinay Krishna Pudyodu Date: Tue, 25 Feb 2025 21:15:27 -0800 Subject: [PATCH] fixed tests Signed-off-by: Vinay Krishna Pudyodu --- ...SearchReplicaReplicationAndRecoveryIT.java | 45 +++++++++++++++ .../replication/SearchReplicaRestoreIT.java | 32 ++++++++--- .../indices/settings/SearchOnlyReplicaIT.java | 56 ++++++++++++++++++- 3 files changed, 121 insertions(+), 12 deletions(-) diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/replication/SearchReplicaReplicationAndRecoveryIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/replication/SearchReplicaReplicationAndRecoveryIT.java index 7d4dd62cdca61..bfb84c0cd4b41 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/replication/SearchReplicaReplicationAndRecoveryIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/replication/SearchReplicaReplicationAndRecoveryIT.java @@ -85,6 +85,15 @@ public void testReplication() throws Exception { createIndex(INDEX_NAME); ensureYellowAndNoInitializingShards(INDEX_NAME); final String replica = internalCluster().startDataOnlyNode(); + + // set search only role on node + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", replica)) + .execute() + .actionGet(); + ensureGreen(INDEX_NAME); final int docCount = 10; @@ -107,6 +116,15 @@ public void testSegmentReplicationStatsResponseWithSearchReplica() throws Except .put(IndexMetadata.SETTING_REPLICATION_TYPE, ReplicationType.SEGMENT) .build() ); + + // set search only role on node + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", nodes.get(0))) + .execute() + .actionGet(); + ensureGreen(INDEX_NAME); final int docCount = 5; @@ -191,6 +209,15 @@ public void testRecoveryAfterDocsIndexed() throws Exception { refresh(INDEX_NAME); final String replica = internalCluster().startDataOnlyNode(); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", replica)) + .execute() + .actionGet(); + ensureGreen(INDEX_NAME); assertDocCounts(10, replica); @@ -258,6 +285,15 @@ public void testStopPrimary_RestoreOnNewNode() throws Exception { assertDocCounts(docCount, primary); final String replica = internalCluster().startDataOnlyNode(); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", replica)) + .execute() + .actionGet(); + ensureGreen(INDEX_NAME); assertDocCounts(docCount, replica); // stop the primary @@ -294,6 +330,15 @@ public void testFailoverToNewPrimaryWithPollingReplication() throws Exception { refresh(INDEX_NAME); final String replica = internalCluster().startDataOnlyNode(); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", replica)) + .execute() + .actionGet(); + ensureGreen(INDEX_NAME); assertDocCounts(10, replica); diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/replication/SearchReplicaRestoreIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/replication/SearchReplicaRestoreIT.java index e8d65e07c7dd9..ec7b5dc17c4dc 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/replication/SearchReplicaRestoreIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/replication/SearchReplicaRestoreIT.java @@ -22,6 +22,7 @@ import java.util.List; import static org.opensearch.cluster.metadata.IndexMetadata.SETTING_NUMBER_OF_SEARCH_REPLICAS; +import static org.opensearch.cluster.routing.allocation.decider.SearchReplicaAllocationDecider.SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING; import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertAcked; import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertHitCount; @@ -72,7 +73,16 @@ public void testSearchReplicaRestore_WhenSnapshotOnSegRep_RestoreOnSegRepWithSea Settings.builder().put(SETTING_NUMBER_OF_SEARCH_REPLICAS, 1).build() ); ensureYellowAndNoInitializingShards(RESTORED_INDEX_NAME); - internalCluster().startDataOnlyNode(); + String replicaNode = internalCluster().startDataOnlyNode(); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", replicaNode)) + .execute() + .actionGet(); + ensureGreen(RESTORED_INDEX_NAME); assertEquals(1, getNumberOfSearchReplicas(RESTORED_INDEX_NAME)); @@ -98,7 +108,7 @@ public void testSearchReplicaRestore_WhenSnapshotOnSegRepWithSearchReplica_Resto } private void bootstrapIndexWithOutSearchReplicas(ReplicationType replicationType) throws InterruptedException { - startCluster(2); + internalCluster().startNodes(2); Settings settings = Settings.builder() .put(super.indexSettings()) @@ -114,8 +124,8 @@ private void bootstrapIndexWithOutSearchReplicas(ReplicationType replicationType ensureGreen(INDEX_NAME); } - private void bootstrapIndexWithSearchReplicas() throws InterruptedException { - startCluster(3); + private void bootstrapIndexWithSearchReplicas() { + List nodes = internalCluster().startNodes(3); Settings settings = Settings.builder() .put(super.indexSettings()) @@ -126,6 +136,15 @@ private void bootstrapIndexWithSearchReplicas() throws InterruptedException { .build(); createIndex(INDEX_NAME, settings); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", nodes.get(0))) + .execute() + .actionGet(); + ensureGreen(INDEX_NAME); for (int i = 0; i < DOC_COUNT; i++) { client().prepareIndex(INDEX_NAME).setId(String.valueOf(i)).setSource("foo", "bar").get(); @@ -133,11 +152,6 @@ private void bootstrapIndexWithSearchReplicas() throws InterruptedException { flushAndRefresh(INDEX_NAME); } - private void startCluster(int numOfNodes) { - internalCluster().startClusterManagerOnlyNode(); - internalCluster().startDataOnlyNodes(numOfNodes); - } - private void createRepoAndSnapshot(String repositoryName, String repositoryType, String snapshotName, String indexName) { createRepository(repositoryName, repositoryType, randomRepoPath().toAbsolutePath()); createSnapshot(repositoryName, snapshotName, List.of(indexName)); diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/settings/SearchOnlyReplicaIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/settings/SearchOnlyReplicaIT.java index f524f4d1298c1..afb4ecc41f859 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/settings/SearchOnlyReplicaIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/settings/SearchOnlyReplicaIT.java @@ -25,10 +25,12 @@ import org.opensearch.test.OpenSearchIntegTestCase; import java.io.IOException; +import java.util.List; import static org.opensearch.cluster.metadata.IndexMetadata.SETTING_NUMBER_OF_SEARCH_REPLICAS; import static org.opensearch.cluster.metadata.IndexMetadata.SETTING_REPLICATION_TYPE; import static org.opensearch.cluster.routing.UnassignedInfo.INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING; +import static org.opensearch.cluster.routing.allocation.decider.SearchReplicaAllocationDecider.SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING; import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertHitCount; @OpenSearchIntegTestCase.ClusterScope(scope = OpenSearchIntegTestCase.Scope.TEST, numDataNodes = 0) @@ -71,7 +73,16 @@ public void testFailoverWithSearchReplica_WithWriterReplicas() throws IOExceptio ); ensureYellow(TEST_INDEX); // add 2 nodes for the replicas - internalCluster().startDataOnlyNodes(2); + List replicas = internalCluster().startDataOnlyNodes(2); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", replicas.get(0))) + .execute() + .actionGet(); + ensureGreen(TEST_INDEX); // assert shards are on separate nodes & all active @@ -106,6 +117,15 @@ public void testFailoverWithSearchReplica_WithoutWriterReplicas() throws IOExcep client().prepareIndex(TEST_INDEX).setId("1").setSource("foo", "bar").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get(); // start a node for our search replica String replica = internalCluster().startDataOnlyNode(); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", replica)) + .execute() + .actionGet(); + ensureGreen(TEST_INDEX); assertActiveSearchShards(numSearchReplicas); assertHitCount(client(replica).prepareSearch(TEST_INDEX).setSize(0).setPreference("_only_local").get(), 1); @@ -119,8 +139,17 @@ public void testFailoverWithSearchReplica_WithoutWriterReplicas() throws IOExcep } public void testSearchReplicaScaling() { - internalCluster().startNodes(2); + List nodes = internalCluster().startNodes(2); createIndex(TEST_INDEX); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings(Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", nodes.get(0))) + .execute() + .actionGet(); + ensureGreen(TEST_INDEX); // assert settings Metadata metadata = client().admin().cluster().prepareState().get().getState().metadata(); @@ -138,6 +167,16 @@ public void testSearchReplicaScaling() { .setSettings(Settings.builder().put(SETTING_NUMBER_OF_SEARCH_REPLICAS, 2)) .get(); + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings( + Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", String.join(", ", nodes)) + ) + .execute() + .actionGet(); + ensureGreen(TEST_INDEX); assertActiveSearchShards(2); @@ -167,7 +206,18 @@ public void testSearchReplicaRoutingPreference() throws IOException { ensureYellow(TEST_INDEX); client().prepareIndex(TEST_INDEX).setId("1").setSource("foo", "bar").setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get(); // add 2 nodes for the replicas - internalCluster().startDataOnlyNodes(2); + List replicaNodes = internalCluster().startDataOnlyNodes(2); + + // search node setting + client().admin() + .cluster() + .prepareUpdateSettings() + .setTransientSettings( + Settings.builder().put(SEARCH_REPLICA_ROUTING_INCLUDE_GROUP_SETTING.getKey() + "_name", replicaNodes.get(0)) + ) + .execute() + .actionGet(); + ensureGreen(TEST_INDEX); assertActiveShardCounts(numSearchReplicas, numWriterReplicas);