Skip to content

Commit

Permalink
fixed tests
Browse files Browse the repository at this point in the history
Signed-off-by: Vinay Krishna Pudyodu <[email protected]>
  • Loading branch information
vinaykpud committed Feb 26, 2025
1 parent f9c54c5 commit 2d5b977
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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));

Expand All @@ -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())
Expand All @@ -114,8 +124,8 @@ private void bootstrapIndexWithOutSearchReplicas(ReplicationType replicationType
ensureGreen(INDEX_NAME);
}

private void bootstrapIndexWithSearchReplicas() throws InterruptedException {
startCluster(3);
private void bootstrapIndexWithSearchReplicas() {
List<String> nodes = internalCluster().startNodes(3);

Settings settings = Settings.builder()
.put(super.indexSettings())
Expand All @@ -126,18 +136,22 @@ 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();
}
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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -71,7 +73,16 @@ public void testFailoverWithSearchReplica_WithWriterReplicas() throws IOExceptio
);
ensureYellow(TEST_INDEX);
// add 2 nodes for the replicas
internalCluster().startDataOnlyNodes(2);
List<String> 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
Expand Down Expand Up @@ -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);
Expand All @@ -119,8 +139,17 @@ public void testFailoverWithSearchReplica_WithoutWriterReplicas() throws IOExcep
}

public void testSearchReplicaScaling() {
internalCluster().startNodes(2);
List<String> 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();
Expand All @@ -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);

Expand Down Expand Up @@ -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<String> 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);
Expand Down

0 comments on commit 2d5b977

Please sign in to comment.