Skip to content

Commit f5396b1

Browse files
Node repurpose tool
Changed NodeRepurposeCommandIT to validate indexes still exists after repurpose and do not exist after repurpose on all nodes.
1 parent 85cf0e6 commit f5396b1

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

server/src/test/java/org/elasticsearch/env/NodeRepurposeCommandIT.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public void testRepurpose() throws Exception {
3838
final String indexName = "test-repurpose";
3939

4040
logger.info("--> starting two nodes");
41-
List<String> nodes = internalCluster().startNodes(2);
41+
final List<String> nodes = internalCluster().startNodes(2);
4242

4343
logger.info("--> creating index");
4444
prepareCreate(indexName, Settings.builder()
@@ -52,8 +52,9 @@ public void testRepurpose() throws Exception {
5252

5353
ensureGreen();
5454

55+
assertTrue(client().prepareGet(indexName, "type1", "1").get().isExists());
56+
5557
final Settings noMasterNoDataSettings = Settings.builder()
56-
.put(internalCluster().getDefaultSettings())
5758
.put(Node.NODE_DATA_SETTING.getKey(), false)
5859
.put(Node.NODE_MASTER_SETTING.getKey(), false)
5960
.build();
@@ -80,15 +81,36 @@ public void testRepurpose() throws Exception {
8081
assertThat(lockedException.getMessage(), containsString(NodeRepurposeCommand.FAILED_TO_OBTAIN_NODE_LOCK_MSG));
8182

8283
logger.info("--> Starting node after repurpose");
83-
internalCluster().startNode(noMasterNoDataSettings);
84+
nodes.set(stoppedOrdinal, internalCluster().startNode(noMasterNoDataSettings));
85+
86+
ensureYellow();
87+
88+
assertTrue(client().prepareGet(indexName, "type1", "1").get().isExists());
89+
assertTrue(indexExists(indexName));
90+
91+
logger.info("--> Restarting and repurposing other node");
92+
93+
internalCluster().stopRandomNode(s -> true);
94+
internalCluster().stopRandomNode(s -> true);
95+
96+
executeRepurposeCommandForOrdinal(noMasterNoDataSettings, indexUUID, runningOrdinal);
97+
98+
internalCluster().startNodes(2);
99+
ensureGreen();
100+
101+
// indexes and docs gone.
102+
assertFalse(indexExists(indexName));
84103
}
85104

86105
private void executeRepurposeCommandForOrdinal(Settings settings, String indexUUID, int ordinal) throws Exception {
87106
boolean verbose = randomBoolean();
107+
Settings settingsWithPath = Settings.builder().put(internalCluster().getDefaultSettings()).put(settings).build();
108+
int expectedIndexCount = TestEnvironment.newEnvironment(settingsWithPath).dataFiles().length;
88109
Matcher<String> matcher = allOf(
89-
containsString(NodeRepurposeCommand.noMasterMessage(1, 1, TestEnvironment.newEnvironment(settings).dataFiles().length)),
110+
containsString(NodeRepurposeCommand.noMasterMessage(1, 1, expectedIndexCount)),
90111
not(contains(NodeRepurposeCommand.PRE_V7_MESSAGE)),
91112
NodeRepurposeCommandTests.conditionalNot(containsString(indexUUID), verbose == false));
92-
NodeRepurposeCommandTests.verifySuccess(settings, matcher, verbose, ordinal);
113+
NodeRepurposeCommandTests.verifySuccess(settingsWithPath, matcher,
114+
verbose, ordinal);
93115
}
94116
}

0 commit comments

Comments
 (0)