All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.thoughtworks.gauge.execution.AbstractExecutionStage Maven / Gradle / Ivy

/*----------------------------------------------------------------
 *  Copyright (c) ThoughtWorks, Inc.
 *  Licensed under the Apache License, Version 2.0
 *  See LICENSE.txt in the project root for license information.
 *----------------------------------------------------------------*/
package com.thoughtworks.gauge.execution;

import gauge.messages.Spec;

public abstract class AbstractExecutionStage implements ExecutionStage {

    public Spec.ProtoExecutionResult executeNext(Spec.ProtoExecutionResult previousStageResult) {
        if (next() != null) {
            return next().execute(previousStageResult);
        } else {
            return previousStageResult;
        }
    }

    protected Spec.ProtoExecutionResult mergeExecResults(Spec.ProtoExecutionResult previousStageResult, Spec.ProtoExecutionResult execResult) {
        long execTime = execResult.getExecutionTime() + previousStageResult.getExecutionTime();
        boolean failed = execResult.getFailed() | previousStageResult.getFailed();

        Spec.ProtoExecutionResult.Builder builder = Spec.ProtoExecutionResult.newBuilder();
        builder.setExecutionTime(execTime);
        builder.setFailed(failed);
        if (previousStageResult.getFailed()) {
            builder.setErrorMessage(previousStageResult.getErrorMessage());
            builder.setErrorType(previousStageResult.getErrorType());
            builder.setFailureScreenshotFile(previousStageResult.getFailureScreenshotFile());
            builder.setStackTrace(previousStageResult.getStackTrace());
            builder.setRecoverableError(previousStageResult.getRecoverableError());
        } else if (execResult.getFailed()) {
            builder.setErrorType(execResult.getErrorType());
            builder.setErrorMessage(execResult.getErrorMessage());
            builder.setFailureScreenshotFile(execResult.getFailureScreenshotFile());
            builder.setStackTrace(execResult.getStackTrace());
            builder.setRecoverableError(execResult.getRecoverableError());
        }
        if (previousStageResult.getRecoverableError() && execResult.getFailed()) {
            builder.setRecoverableError(execResult.getRecoverableError());
        }
        return builder.build();
    }

    protected abstract ExecutionStage next();

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy