|
|
@@ -43,10 +43,14 @@ import org.elasticsearch.search.SearchShardTarget;
|
|
|
import org.elasticsearch.test.ESTestCase;
|
|
|
import org.elasticsearch.threadpool.ThreadPool;
|
|
|
import org.elasticsearch.xpack.core.XPackSettings;
|
|
|
+import org.elasticsearch.xpack.core.watcher.trigger.Trigger;
|
|
|
import org.elasticsearch.xpack.core.watcher.watch.Watch;
|
|
|
import org.elasticsearch.xpack.core.watcher.watch.WatchStatus;
|
|
|
+import org.elasticsearch.xpack.watcher.condition.InternalAlwaysCondition;
|
|
|
import org.elasticsearch.xpack.watcher.execution.ExecutionService;
|
|
|
import org.elasticsearch.xpack.watcher.execution.TriggeredWatchStore;
|
|
|
+import org.elasticsearch.xpack.watcher.input.none.ExecutableNoneInput;
|
|
|
+import org.elasticsearch.xpack.watcher.trigger.TriggerEngine;
|
|
|
import org.elasticsearch.xpack.watcher.trigger.TriggerService;
|
|
|
import org.elasticsearch.xpack.watcher.watch.WatchParser;
|
|
|
import org.joda.time.DateTime;
|
|
|
@@ -204,6 +208,36 @@ public class WatcherServiceTests extends ESTestCase {
|
|
|
assertThat(watches, hasSize(activeWatchCount));
|
|
|
}
|
|
|
|
|
|
+ public void testPausingWatcherServiceAlsoPausesTriggerService() {
|
|
|
+ String engineType = "foo";
|
|
|
+ TriggerEngine triggerEngine = mock(TriggerEngine.class);
|
|
|
+ when(triggerEngine.type()).thenReturn(engineType);
|
|
|
+ TriggerService triggerService = new TriggerService(Settings.EMPTY, Collections.singleton(triggerEngine));
|
|
|
+
|
|
|
+ Trigger trigger = mock(Trigger.class);
|
|
|
+ when(trigger.type()).thenReturn(engineType);
|
|
|
+
|
|
|
+ Watch watch = mock(Watch.class);
|
|
|
+ when(watch.trigger()).thenReturn(trigger);
|
|
|
+ when(watch.condition()).thenReturn(InternalAlwaysCondition.INSTANCE);
|
|
|
+ ExecutableNoneInput noneInput = new ExecutableNoneInput(logger);
|
|
|
+ when(watch.input()).thenReturn(noneInput);
|
|
|
+
|
|
|
+ triggerService.add(watch);
|
|
|
+ assertThat(triggerService.count(), is(1L));
|
|
|
+
|
|
|
+ WatcherService service = new WatcherService(Settings.EMPTY, triggerService, mock(TriggeredWatchStore.class),
|
|
|
+ mock(ExecutionService.class), mock(WatchParser.class), mock(Client.class), executorService) {
|
|
|
+ @Override
|
|
|
+ void stopExecutor() {
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ service.pauseExecution("pausing");
|
|
|
+ assertThat(triggerService.count(), is(0L));
|
|
|
+ verify(triggerEngine).pauseExecution();
|
|
|
+ }
|
|
|
+
|
|
|
private static DiscoveryNode newNode() {
|
|
|
return new DiscoveryNode("node", ESTestCase.buildNewFakeTransportAddress(), Collections.emptyMap(),
|
|
|
new HashSet<>(asList(DiscoveryNode.Role.values())), Version.CURRENT);
|