protected void testSteppingTask(final String feedName, final Path dir) {
        final List<Exception> exceptions = new ArrayList<>();

        // feedCriteria.setFeedType(FeedType.REFERENCE);
//        final Optional<FeedDoc> feeds = feedDocCache.get(feedName);
//        assertThat(feeds.isPresent()).as("No feeds found").isTrue();
        final List<DocRef> pipelines = pipelineStore.findByName(feedName);
        assertThat(pipelines != null && pipelines.size() > 0)
                .as("No pipelines found")
                .isTrue();
        assertThat(pipelines.size()).as("Expected 1 pipeline")
                .isEqualTo(1);

        final DocRef pipelineRef = pipelines.get(0);
//        final FeedDoc feed = feeds.get();

        LOGGER.info("Testing: {}, {}, {}",
                feedName,
                dir.toAbsolutePath().normalize(),
                pipelineRef.getName());

        final ExpressionOperator expression = ExpressionOperator.builder()
                .addTextTerm(MetaFields.FEED, Condition.EQUALS, feedName)
                .addOperator(ExpressionOperator.builder().op(Op.OR)
                        .addTextTerm(MetaFields.TYPE, Condition.EQUALS, StreamTypeNames.RAW_REFERENCE)
                        .addTextTerm(MetaFields.TYPE, Condition.EQUALS, StreamTypeNames.RAW_EVENTS)
                        .build())
                .build();

        final FindMetaCriteria findMetaCriteria = new FindMetaCriteria(expression);

        final PipelineStepRequest.Builder requestBuilder = PipelineStepRequest.builder();
        requestBuilder.pipeline(pipelineRef);
        requestBuilder.criteria(findMetaCriteria);
        requestBuilder.timeout(Long.MAX_VALUE);

        SteppingResult response = new SteppingResult(
                null,
                null,
                null,
                null,
                null,
                null,
                false,
                null,
                false,
                false);
        response = step(StepType.FORWARD, 40, requestBuilder, response);
        // Check that we get no overflow.
        response = step(StepType.FORWARD, 10, requestBuilder, response);
        response = step(StepType.BACKWARD, 9, requestBuilder, response);
        response = step(StepType.REFRESH, 9, requestBuilder, response);
        response = step(StepType.BACKWARD, 30, requestBuilder, response);
        // Check that we get no overflow.
        response = step(StepType.BACKWARD, 10, requestBuilder, response);
        response = step(StepType.FORWARD, 9, requestBuilder, response);
        response = step(StepType.REFRESH, 9, requestBuilder, response);

        // Jump to the last record.
        response = step(StepType.LAST, 2, requestBuilder, response);
        // Make sure there is no overflow.
        response = step(StepType.FORWARD, 1, requestBuilder, response);
        // Come back 2.
        response = step(StepType.BACKWARD, 2, requestBuilder, response);
        // Jump to the first record.
        response = step(StepType.FIRST, 2, requestBuilder, response);
        // Make sure there is no overflow.
        response = step(StepType.BACKWARD, 1, requestBuilder, response);
        // Go forward 2.
        response = step(StepType.FORWARD, 2, requestBuilder, response);

        final SharedStepData stepData = response.getStepData();
        for (final String elementId : stepData.getElementMap().keySet()) {
            final SharedElementData elementData = stepData.getElementData(elementId);
            assertThat(elementData.getIndicators() != null
                    && elementData.getIndicators().getMaxSeverity() != null).as(
                    "Translation stepping has indicators.").isFalse();
//            assertThat(elementData.getCodeIndicators() != null
//                    && elementData.getCodeIndicators().getMaxSeverity() != null).as(
//                    "Translation stepping has code indicators.").isFalse();

            final String stem = feedName + "~STEPPING~" + elementId;
            if (elementData.getInput() != null) {
                final Path actualFile = dir.resolve(stem + "~input.out_tmp");
                final Path expectedFile = dir.resolve(stem + "~input.out");
                write(actualFile, elementData.getInput());
                compareFiles(expectedFile, actualFile, exceptions);
            }
            if (elementData.getOutput() != null) {
                final Path actualFile = dir.resolve(stem + "~output.out_tmp");
                final Path expectedFile = dir.resolve(stem + "~output.out");
                write(actualFile, elementData.getOutput());
                compareFiles(expectedFile, actualFile, exceptions);
            }
        }

        assertNoExceptions(exceptions);
    }
Gets the next task to be processed.

@return The next task or null if there are currently no more tasks.
stroom-app/src/test/java/stroom/pipeline/task/TranslationTest.java