|  | @@ -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);
 |