|
7 | 7 | */
|
8 | 8 | package org.elasticsearch.cluster.coordination;
|
9 | 9 |
|
| 10 | +import org.apache.logging.log4j.Level; |
10 | 11 | import org.elasticsearch.Version;
|
11 | 12 | import org.elasticsearch.cluster.ClusterName;
|
12 | 13 | import org.elasticsearch.cluster.ClusterState;
|
|
25 | 26 | import org.elasticsearch.monitor.StatusInfo;
|
26 | 27 | import org.elasticsearch.test.ESTestCase;
|
27 | 28 | import org.elasticsearch.test.EqualsHashCodeTestUtils;
|
| 29 | +import org.elasticsearch.test.MockLogAppender; |
28 | 30 |
|
29 | 31 | import java.util.ArrayList;
|
30 | 32 | import java.util.Arrays;
|
@@ -54,6 +56,9 @@ public class ClusterFormationFailureHelperTests extends ESTestCase {
|
54 | 56 |
|
55 | 57 | private static final ElectionStrategy electionStrategy = ElectionStrategy.DEFAULT_INSTANCE;
|
56 | 58 |
|
| 59 | + // Hard-coding the class name here because it is also mentioned in the troubleshooting docs, so should not be renamed without care. |
| 60 | + private static final String LOGGER_NAME = "org.elasticsearch.cluster.coordination.ClusterFormationFailureHelper"; |
| 61 | + |
57 | 62 | public void testScheduling() {
|
58 | 63 | final long expectedDelayMillis;
|
59 | 64 | final Settings.Builder settingsBuilder = Settings.builder();
|
@@ -103,16 +108,23 @@ public void testScheduling() {
|
103 | 108 | final long startTimeMillis = deterministicTaskQueue.getCurrentTimeMillis();
|
104 | 109 | clusterFormationFailureHelper.start();
|
105 | 110 |
|
106 |
| - while (warningCount.get() == 0) { |
107 |
| - assertTrue(clusterFormationFailureHelper.isRunning()); |
108 |
| - if (deterministicTaskQueue.hasRunnableTasks()) { |
109 |
| - deterministicTaskQueue.runRandomTask(); |
110 |
| - } else { |
111 |
| - deterministicTaskQueue.advanceTime(); |
| 111 | + var mockLogAppender = new MockLogAppender(); |
| 112 | + mockLogAppender.addExpectation( |
| 113 | + new MockLogAppender.SeenEventExpectation("master not discovered", LOGGER_NAME, Level.WARN, "master not discovered") |
| 114 | + ); |
| 115 | + try (var ignored = mockLogAppender.capturing(ClusterFormationFailureHelper.class)) { |
| 116 | + while (warningCount.get() == 0) { |
| 117 | + assertTrue(clusterFormationFailureHelper.isRunning()); |
| 118 | + if (deterministicTaskQueue.hasRunnableTasks()) { |
| 119 | + deterministicTaskQueue.runRandomTask(); |
| 120 | + } else { |
| 121 | + deterministicTaskQueue.advanceTime(); |
| 122 | + } |
112 | 123 | }
|
113 | 124 | }
|
114 | 125 | assertThat(warningCount.get(), is(1L));
|
115 | 126 | assertThat(deterministicTaskQueue.getCurrentTimeMillis() - startTimeMillis, is(expectedDelayMillis));
|
| 127 | + mockLogAppender.assertAllExpectationsMatched(); |
116 | 128 |
|
117 | 129 | while (warningCount.get() < 5) {
|
118 | 130 | assertTrue(clusterFormationFailureHelper.isRunning());
|
|
0 commit comments