|
42 | 42 | import org.apache.druid.indexing.common.task.Tasks; |
43 | 43 | import org.apache.druid.indexing.common.task.TestAppenderatorsManager; |
44 | 44 | import org.apache.druid.indexing.overlord.TestTaskRunner; |
| 45 | +import org.apache.druid.indexing.worker.config.WorkerConfig; |
45 | 46 | import org.apache.druid.java.util.common.FileUtils; |
46 | 47 | import org.apache.druid.java.util.http.client.response.StringFullResponseHolder; |
47 | 48 | import org.apache.druid.query.policy.NoopPolicyEnforcer; |
@@ -115,10 +116,15 @@ public static Collection<Object[]> getParameters() |
115 | 116 |
|
116 | 117 | private WorkerTaskManager createWorkerTaskManager() |
117 | 118 | { |
118 | | - return createWorkerTaskManager(FileUtils.createTempDir()); |
| 119 | + return createWorkerTaskManager(FileUtils.createTempDir(), new WorkerConfig()); |
119 | 120 | } |
120 | 121 |
|
121 | 122 | private WorkerTaskManager createWorkerTaskManager(File baseDir) |
| 123 | + { |
| 124 | + return createWorkerTaskManager(baseDir, new WorkerConfig()); |
| 125 | + } |
| 126 | + |
| 127 | + private WorkerTaskManager createWorkerTaskManager(File baseDir, WorkerConfig workerConfig) |
122 | 128 | { |
123 | 129 | TaskConfig taskConfig = new TaskConfigBuilder() |
124 | 130 | .setBaseDir(baseDir.toString()) |
@@ -185,6 +191,7 @@ private WorkerTaskManager createWorkerTaskManager(File baseDir) |
185 | 191 | location |
186 | 192 | ), |
187 | 193 | taskConfig, |
| 194 | + workerConfig, |
188 | 195 | overlordClient |
189 | 196 | ) |
190 | 197 | { |
@@ -626,4 +633,59 @@ public void test_disabledState_malformedFileToleratedAndStartsEnabled() throws E |
626 | 633 | workerTaskManager.start(); |
627 | 634 | Assert.assertTrue(workerTaskManager.isWorkerEnabled()); |
628 | 635 | } |
| 636 | + |
| 637 | + @Test |
| 638 | + public void test_startAlwaysEnabled_ignoresAndDeletesPersistedDisabledState() throws Exception |
| 639 | + { |
| 640 | + EasyMock.expect(overlordClient.withRetryPolicy(EasyMock.anyObject())).andReturn(overlordClient).anyTimes(); |
| 641 | + EasyMock.replay(overlordClient); |
| 642 | + |
| 643 | + final File baseTaskDir = FileUtils.createTempDir(); |
| 644 | + |
| 645 | + workerTaskManager = createWorkerTaskManager(baseTaskDir); |
| 646 | + workerTaskManager.start(); |
| 647 | + workerTaskManager.workerDisabled(); |
| 648 | + Assert.assertFalse(workerTaskManager.isWorkerEnabled()); |
| 649 | + Assert.assertTrue(workerTaskManager.getStateFile().exists()); |
| 650 | + workerTaskManager.stop(); |
| 651 | + |
| 652 | + final WorkerConfig workerConfig = new WorkerConfig().cloneBuilder() |
| 653 | + .setStartAlwaysEnabled(true) |
| 654 | + .build(); |
| 655 | + workerTaskManager = createWorkerTaskManager(baseTaskDir, workerConfig); |
| 656 | + workerTaskManager.start(); |
| 657 | + Assert.assertTrue(workerTaskManager.isWorkerEnabled()); |
| 658 | + Assert.assertFalse(workerTaskManager.getStateFile().exists()); |
| 659 | + } |
| 660 | + |
| 661 | + @Test |
| 662 | + public void test_startAlwaysEnabled_doesNotCreateStateFileWhenAbsent() throws Exception |
| 663 | + { |
| 664 | + EasyMock.expect(overlordClient.withRetryPolicy(EasyMock.anyObject())).andReturn(overlordClient).anyTimes(); |
| 665 | + EasyMock.replay(overlordClient); |
| 666 | + |
| 667 | + final WorkerConfig workerConfig = new WorkerConfig().cloneBuilder() |
| 668 | + .setStartAlwaysEnabled(true) |
| 669 | + .build(); |
| 670 | + workerTaskManager = createWorkerTaskManager(FileUtils.createTempDir(), workerConfig); |
| 671 | + workerTaskManager.start(); |
| 672 | + Assert.assertTrue(workerTaskManager.isWorkerEnabled()); |
| 673 | + Assert.assertFalse(workerTaskManager.getStateFile().exists()); |
| 674 | + } |
| 675 | + |
| 676 | + @Test |
| 677 | + public void test_startAlwaysEnabled_runtimeDisableStillPersistsToStateFile() throws Exception |
| 678 | + { |
| 679 | + EasyMock.expect(overlordClient.withRetryPolicy(EasyMock.anyObject())).andReturn(overlordClient).anyTimes(); |
| 680 | + EasyMock.replay(overlordClient); |
| 681 | + |
| 682 | + final WorkerConfig workerConfig = new WorkerConfig().cloneBuilder() |
| 683 | + .setStartAlwaysEnabled(true) |
| 684 | + .build(); |
| 685 | + workerTaskManager = createWorkerTaskManager(FileUtils.createTempDir(), workerConfig); |
| 686 | + workerTaskManager.start(); |
| 687 | + workerTaskManager.workerDisabled(); |
| 688 | + Assert.assertFalse(workerTaskManager.isWorkerEnabled()); |
| 689 | + Assert.assertTrue(workerTaskManager.getStateFile().exists()); |
| 690 | + } |
629 | 691 | } |
0 commit comments