Skip to content

Commit ac321a6

Browse files
[8.19] TEST Segregate test methods in ThreadPoolMergeExecutorServiceDiskSpaceTests wrt to the mocked filesystems (elastic#130430) (elastic#130522)
* assertTrue for submitMergeTask (elastic#130430) Previously, out of zealousness for testing efficiency, the mocked filesystems were reused across the test suite class. But this makes tests liable to interference wrt to filesystem stats calls. Moreover, if one test fails, it can trigger failures in other test methods. This PR recreates the mocked filesystems for every test method. Fixes elastic#129296 elastic#130205 * Ooops the warning response headers are different
1 parent f244912 commit ac321a6

File tree

1 file changed

+24
-57
lines changed

1 file changed

+24
-57
lines changed

server/src/test/java/org/elasticsearch/index/engine/ThreadPoolMergeExecutorServiceDiskSpaceTests.java

Lines changed: 24 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@
2727
import org.elasticsearch.threadpool.TestThreadPool;
2828
import org.elasticsearch.threadpool.ThreadPool;
2929
import org.junit.After;
30-
import org.junit.AfterClass;
31-
import org.junit.BeforeClass;
30+
import org.junit.Before;
3231

3332
import java.io.IOException;
3433
import java.nio.file.FileStore;
@@ -59,8 +58,8 @@
5958

6059
public class ThreadPoolMergeExecutorServiceDiskSpaceTests extends ESTestCase {
6160

62-
private static TestMockFileStore aFileStore = new TestMockFileStore("mocka");
63-
private static TestMockFileStore bFileStore = new TestMockFileStore("mockb");
61+
private static TestMockFileStore aFileStore;
62+
private static TestMockFileStore bFileStore;
6463
private static String aPathPart;
6564
private static String bPathPart;
6665
private static int mergeExecutorThreadCount;
@@ -69,8 +68,10 @@ public class ThreadPoolMergeExecutorServiceDiskSpaceTests extends ESTestCase {
6968
private static NodeEnvironment nodeEnvironment;
7069
private static boolean setThreadPoolMergeSchedulerSetting;
7170

72-
@BeforeClass
73-
public static void installMockUsableSpaceFS() throws Exception {
71+
@Before
72+
public void setupTestEnv() throws Exception {
73+
aFileStore = new TestMockFileStore("mocka");
74+
bFileStore = new TestMockFileStore("mockb");
7475
FileSystem current = PathUtils.getDefaultFileSystem();
7576
aPathPart = "a-" + randomUUID();
7677
bPathPart = "b-" + randomUUID();
@@ -96,20 +97,20 @@ public static void installMockUsableSpaceFS() throws Exception {
9697
nodeEnvironment = new NodeEnvironment(settings, TestEnvironment.newEnvironment(settings));
9798
}
9899

99-
@AfterClass
100-
public static void removeMockUsableSpaceFS() {
100+
@After
101+
public void removeMockUsableSpaceFS() {
102+
if (setThreadPoolMergeSchedulerSetting) {
103+
assertWarnings(
104+
"[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
105+
);
106+
}
101107
PathUtilsForTesting.teardown();
102108
aFileStore = null;
103109
bFileStore = null;
104110
testThreadPool.close();
105111
nodeEnvironment.close();
106112
}
107113

108-
@After
109-
public void cleanupThreadPool() {
110-
testThreadPool.scheduledTasks.clear();
111-
}
112-
113114
static class TestCapturingThreadPool extends TestThreadPool {
114115
final List<Tuple<TimeValue, Cancellable>> scheduledTasks = new ArrayList<>();
115116

@@ -319,8 +320,6 @@ public void testDiskSpaceMonitorStartsAsDisabled() throws Exception {
319320
)
320321
);
321322
}
322-
aFileStore.throwIoException = false;
323-
bFileStore.throwIoException = false;
324323
}
325324

326325
public void testAvailableDiskSpaceMonitorWhenFileSystemStatErrors() throws Exception {
@@ -406,8 +405,6 @@ public void testAvailableDiskSpaceMonitorWhenFileSystemStatErrors() throws Excep
406405
}
407406
});
408407
}
409-
aFileStore.throwIoException = false;
410-
bFileStore.throwIoException = false;
411408
}
412409

413410
public void testAvailableDiskSpaceMonitorSettingsUpdate() throws Exception {
@@ -516,11 +513,6 @@ public void testAvailableDiskSpaceMonitorSettingsUpdate() throws Exception {
516513
}
517514
}, 5, TimeUnit.SECONDS);
518515
}
519-
if (setThreadPoolMergeSchedulerSetting) {
520-
assertWarnings(
521-
"[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
522-
);
523-
}
524516
}
525517

526518
public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
@@ -563,7 +555,7 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
563555
testDoneLatch.await();
564556
return null;
565557
}).when(stallingMergeTask).abort();
566-
threadPoolMergeExecutorService.submitMergeTask(stallingMergeTask);
558+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(stallingMergeTask));
567559
// assert the merge task is holding up disk space budget
568560
expectedAvailableBudget.set(expectedAvailableBudget.get() - taskBudget);
569561
assertBusy(
@@ -573,7 +565,7 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
573565
ThreadPoolMergeScheduler.MergeTask mergeTask = mock(ThreadPoolMergeScheduler.MergeTask.class);
574566
when(mergeTask.estimatedRemainingMergeSize()).thenReturn(randomLongBetween(0L, expectedAvailableBudget.get()));
575567
when(mergeTask.schedule()).thenReturn(RUN);
576-
threadPoolMergeExecutorService.submitMergeTask(mergeTask);
568+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask));
577569
assertBusy(() -> {
578570
verify(mergeTask).schedule();
579571
verify(mergeTask).run();
@@ -594,11 +586,6 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
594586
assertThat(threadPoolMergeExecutorService.allDone(), is(true));
595587
});
596588
}
597-
if (setThreadPoolMergeSchedulerSetting) {
598-
assertWarnings(
599-
"[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
600-
);
601-
}
602589
}
603590

604591
public void testBackloggedMergeTasksDoNotHoldUpBudget() throws Exception {
@@ -652,7 +639,7 @@ && randomBoolean()) {
652639
testDoneLatch.await();
653640
return null;
654641
}).when(mergeTask).abort();
655-
threadPoolMergeExecutorService.submitMergeTask(mergeTask);
642+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask));
656643
if (mergeTask.schedule() == RUN) {
657644
runningMergeTasks.add(mergeTask);
658645
} else {
@@ -677,7 +664,7 @@ && randomBoolean()) {
677664
return RUN;
678665
}
679666
}).when(mergeTask).schedule();
680-
threadPoolMergeExecutorService.submitMergeTask(mergeTask);
667+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask));
681668
backloggingMergeTasksScheduleCountMap.put(mergeTask, 1);
682669
}
683670
int checkRounds = randomIntBetween(1, 10);
@@ -710,7 +697,7 @@ && randomBoolean()) {
710697
long taskBudget = randomLongBetween(1L, backloggedMergeTaskDiskSpaceBudget);
711698
when(mergeTask.estimatedRemainingMergeSize()).thenReturn(taskBudget);
712699
when(mergeTask.schedule()).thenReturn(RUN);
713-
threadPoolMergeExecutorService.submitMergeTask(mergeTask);
700+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask));
714701
assertBusy(() -> {
715702
verify(mergeTask).schedule();
716703
verify(mergeTask).run();
@@ -737,11 +724,6 @@ && randomBoolean()) {
737724
assertThat(threadPoolMergeExecutorService.allDone(), is(true));
738725
});
739726
}
740-
if (setThreadPoolMergeSchedulerSetting) {
741-
assertWarnings(
742-
"[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
743-
);
744-
}
745727
}
746728

747729
public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() throws Exception {
@@ -820,7 +802,7 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
820802
runningOrAbortingMergeTasksList.add(mergeTask);
821803
latchesBlockingMergeTasksList.add(blockMergeTaskLatch);
822804
}
823-
threadPoolMergeExecutorService.submitMergeTask(mergeTask);
805+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask));
824806
}
825807
// currently running (or aborting) merge tasks have consumed some of the available budget
826808
while (runningOrAbortingMergeTasksList.isEmpty() == false) {
@@ -852,8 +834,8 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
852834
// merge task 2 can run because it is under budget
853835
when(mergeTask2.estimatedRemainingMergeSize()).thenReturn(underBudget);
854836
}
855-
threadPoolMergeExecutorService.submitMergeTask(mergeTask1);
856-
threadPoolMergeExecutorService.submitMergeTask(mergeTask2);
837+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask1));
838+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask2));
857839
assertBusy(() -> {
858840
if (task1Runs) {
859841
verify(mergeTask1).schedule();
@@ -887,11 +869,6 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
887869
bFileStore.usableSpace = Long.MAX_VALUE;
888870
assertBusy(() -> assertThat(threadPoolMergeExecutorService.allDone(), is(true)));
889871
}
890-
if (setThreadPoolMergeSchedulerSetting) {
891-
assertWarnings(
892-
"[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
893-
);
894-
}
895872
}
896873

897874
public void testEnqueuedMergeTasksAreUnblockedWhenEstimatedMergeSizeChanges() throws Exception {
@@ -986,11 +963,6 @@ public void testEnqueuedMergeTasksAreUnblockedWhenEstimatedMergeSizeChanges() th
986963
}
987964
});
988965
}
989-
if (setThreadPoolMergeSchedulerSetting) {
990-
assertWarnings(
991-
"[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
992-
);
993-
}
994966
}
995967

996968
public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws Exception {
@@ -1053,7 +1025,7 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
10531025
testDoneLatch.await();
10541026
return null;
10551027
}).when(mergeTask).abort();
1056-
threadPoolMergeExecutorService.submitMergeTask(mergeTask);
1028+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask));
10571029
if (mergeTask.schedule() == RUN) {
10581030
runningMergeTasks.add(mergeTask);
10591031
} else {
@@ -1078,7 +1050,7 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
10781050
when(mergeTask.estimatedRemainingMergeSize()).thenReturn(taskBudget);
10791051
Schedule schedule = randomFrom(RUN, ABORT);
10801052
when(mergeTask.schedule()).thenReturn(schedule);
1081-
threadPoolMergeExecutorService.submitMergeTask(mergeTask);
1053+
assertTrue(threadPoolMergeExecutorService.submitMergeTask(mergeTask));
10821054
if (schedule == RUN) {
10831055
overBudgetTasksToRunList.add(mergeTask);
10841056
} else {
@@ -1145,11 +1117,6 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
11451117
);
11461118
});
11471119
}
1148-
if (setThreadPoolMergeSchedulerSetting) {
1149-
assertWarnings(
1150-
"[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
1151-
);
1152-
}
11531120
}
11541121

11551122
private static <T> T getLast(final Iterable<T> elements) {

0 commit comments

Comments
 (0)