private Bucket collect(CollectPhase collectNode) throws Throwable { ContextPreparer contextPreparer = internalCluster().getDataNodeInstance(ContextPreparer.class); JobContextService contextService = internalCluster().getDataNodeInstance(JobContextService.class); SharedShardContexts sharedShardContexts = new SharedShardContexts(internalCluster().getDataNodeInstance(IndicesService.class)); JobExecutionContext.Builder builder = contextService.newBuilder(collectNode.jobId()); NodeOperation nodeOperation = NodeOperation.withDownstream( collectNode, mock(ExecutionPhase.class), (byte) 0, "remoteNode"); List<ListenableFuture<Bucket>> results = contextPreparer.prepareOnRemote( collectNode.jobId(), ImmutableList.of(nodeOperation), builder, sharedShardContexts); JobExecutionContext context = contextService.createContext(builder); context.start(); return results.get(0).get(2, TimeUnit.SECONDS); }