Skip to content

Commit

Permalink
(#20) Added execution properties to execution entities
Browse files Browse the repository at this point in the history
  • Loading branch information
Amaralus committed May 14, 2024
1 parent a10214a commit a67e25f
Show file tree
Hide file tree
Showing 19 changed files with 50 additions and 41 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package apps.amaralus.qa.platform.runtime.action;

import apps.amaralus.qa.platform.runtime.execution.StepExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.properties.StepExecutionProperties;

public interface ActionFactory {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package apps.amaralus.qa.platform.runtime.action;

import apps.amaralus.qa.platform.common.exception.EntityNotFoundException;
import apps.amaralus.qa.platform.runtime.execution.StepExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.context.TestContext;
import apps.amaralus.qa.platform.runtime.execution.properties.StepExecutionProperties;
import apps.amaralus.qa.platform.testcase.action.asserts.AssertActionModel;
import apps.amaralus.qa.platform.testcase.action.asserts.AssertActionRepository;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package apps.amaralus.qa.platform.runtime.action;

import apps.amaralus.qa.platform.common.exception.EntityNotFoundException;
import apps.amaralus.qa.platform.runtime.execution.StepExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.context.TestContext;
import apps.amaralus.qa.platform.runtime.execution.properties.StepExecutionProperties;
import apps.amaralus.qa.platform.testcase.action.debug.DebugActionModel;
import apps.amaralus.qa.platform.testcase.action.debug.DebugActionRepository;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package apps.amaralus.qa.platform.runtime.action;

import apps.amaralus.qa.platform.runtime.execution.StepExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.properties.StepExecutionProperties;
import org.springframework.stereotype.Service;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package apps.amaralus.qa.platform.runtime.execution;

import apps.amaralus.qa.platform.runtime.execution.context.TestInfo;
import apps.amaralus.qa.platform.runtime.execution.properties.TestCaseExecutionProperties;
import apps.amaralus.qa.platform.testplan.report.ReportSupplier;
import apps.amaralus.qa.platform.testplan.report.TestReport;
import lombok.Getter;
Expand All @@ -16,15 +17,18 @@
@Slf4j
public class ExecutableTestCase extends ExecutableTestSupport implements StageTask, ExecutionGraphDelegate {
private final AtomicBoolean failed = new AtomicBoolean();
@Getter
private final TestCaseExecutionProperties executionProperties;
private ExecutionGraph executionGraph;
@Setter
private Runnable taskFinishCallback;
@Setter
@Getter
private Predicate<StageTask> executionCondition = task -> true;
private Predicate<StageTask> executionCondition = DEFAULT_CONDITION;

public ExecutableTestCase(TestInfo testInfo) {
public ExecutableTestCase(TestInfo testInfo, TestCaseExecutionProperties executionProperties) {
super(testInfo);
this.executionProperties = executionProperties;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import apps.amaralus.qa.platform.runtime.action.StepAction;
import apps.amaralus.qa.platform.runtime.execution.context.TestContext;
import apps.amaralus.qa.platform.runtime.execution.context.TestInfo;
import apps.amaralus.qa.platform.runtime.execution.properties.StepExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.result.ErrorResult;
import apps.amaralus.qa.platform.runtime.execution.result.ExecutionResult;
import apps.amaralus.qa.platform.runtime.execution.result.TestFailedException;
Expand All @@ -15,7 +16,6 @@

import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;

import static apps.amaralus.qa.platform.runtime.execution.context.TestState.*;
Expand All @@ -24,23 +24,24 @@
public class ExecutableTestStep extends ExecutableTestSupport implements StageTask, RuntimeExecutorAware {

private final StepAction stepAction;
@Getter
private final StepExecutionProperties executionProperties;
@Setter
private TestContext testContext;
@Setter
private RuntimeExecutor runtimeExecutor;
private long timeout;
private TimeUnit timeUnit;
@Setter
private Runnable taskFinishCallback;
@Setter
@Getter
private Predicate<StageTask> executionCondition = task -> true;
private Predicate<StageTask> executionCondition = DEFAULT_CONDITION;
@Setter
private Runnable taskFailCallback;
private CompletableFuture<ExecutionResult> stepTask;

public ExecutableTestStep(TestInfo testInfo, StepAction stepAction) {
public ExecutableTestStep(TestInfo testInfo, StepExecutionProperties executionProperties, StepAction stepAction) {
super(testInfo);
this.executionProperties = executionProperties;
this.stepAction = stepAction;
}

Expand All @@ -54,7 +55,7 @@ public void execute() {
timer.start();

stepTask = runtimeExecutor.supplyAsync(this::executeAction);
var handleTask = stepTask.completeOnTimeout(timeoutResult(), timeout, timeUnit)
var handleTask = stepTask.completeOnTimeout(timeoutResult(), executionProperties.getTimeout(), executionProperties.getTimeUnit())
.exceptionally(this::handleException)
.thenAccept(this::handleResult);

Expand Down Expand Up @@ -124,12 +125,7 @@ private void onError(ErrorResult errorResult) {
}

private TimeoutResult timeoutResult() {
return new TimeoutResult(timeout, timeUnit);
}

public void timeout(long timeout, TimeUnit timeUnit) {
this.timeout = timeout;
this.timeUnit = timeUnit;
return new TimeoutResult(executionProperties.getTimeout(), executionProperties.getTimeUnit());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package apps.amaralus.qa.platform.runtime.execution;

import apps.amaralus.qa.platform.runtime.execution.properties.TaskExecutionProperties;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -16,7 +17,10 @@ public final class SimpleTask implements StageTask {
private Runnable taskFinishCallback;
@Setter
@Getter
private Predicate<StageTask> executionCondition = task -> true;
private Predicate<StageTask> executionCondition = DEFAULT_CONDITION;
@Setter
@Getter
private TaskExecutionProperties executionProperties;

public SimpleTask() {
this(null);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package apps.amaralus.qa.platform.runtime.execution;

import apps.amaralus.qa.platform.runtime.execution.properties.TaskExecutionProperties;

import java.util.function.Predicate;

public interface StageTask extends Executable, Cancelable {

Predicate<StageTask> DEFAULT_CONDITION = stageTask -> true;

void setTaskFinishCallback(Runnable taskFinishCallback);

void setExecutionCondition(Predicate<StageTask> executionCondition);
Expand All @@ -13,4 +17,6 @@ public interface StageTask extends Executable, Cancelable {
default boolean checkExecutionCondition() {
return getExecutionCondition().test(this);
}

TaskExecutionProperties getExecutionProperties();
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package apps.amaralus.qa.platform.runtime.execution;
package apps.amaralus.qa.platform.runtime.execution.properties;

import apps.amaralus.qa.platform.runtime.action.ActionType;
import apps.amaralus.qa.platform.runtime.execution.properties.TaskExecutionProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jetbrains.annotations.NotNull;
Expand All @@ -17,8 +16,6 @@
@NoArgsConstructor
public class StepExecutionProperties implements TaskExecutionProperties {

private static final String TASK_ID_IS_NULL_MESSAGE = "taskId must not be null!";

private long executionAction;
private ActionType actionType = ActionType.NONE;
private long timeout = 10L;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

public interface TaskExecutionProperties {

String TASK_ID_IS_NULL_MESSAGE = "taskId must not be null!";

@NotNull Set<Long> getExecuteAfterTasks();

@NotNull Set<Long> getDependsFromTasks();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package apps.amaralus.qa.platform.testcase.model;
package apps.amaralus.qa.platform.runtime.execution.properties;

import apps.amaralus.qa.platform.runtime.execution.properties.GraphExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.properties.TaskExecutionProperties;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand All @@ -16,8 +14,6 @@
@NoArgsConstructor
public class TestCaseExecutionProperties implements GraphExecutionProperties, TaskExecutionProperties {

private static final String TASK_ID_IS_NULL_MESSAGE = "taskId must not be null!";

private boolean parallelExecution;
private boolean failFast;
private Set<Long> executeAfterTasks = new HashSet<>();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package apps.amaralus.qa.platform.testplan;
package apps.amaralus.qa.platform.runtime.execution.properties;

import apps.amaralus.qa.platform.runtime.execution.properties.GraphExecutionProperties;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ public ExecutableTestCase produce(TestCase testCase) {
testSteps.add(produce(testCase.getTestSteps().get(i), i));

var executableTestCase = new ExecutableTestCase(
new TestInfo(testCase.getId(), testCase.getName(), projectContext.getProjectId()));
new TestInfo(testCase.getId(), testCase.getName(), projectContext.getProjectId()),
testCase.getExecutionProperties());
var graph = getScheduler(testCase.getExecutionProperties().isParallelExecution())
.schedule(testSteps, new SimpleTask(), new SimpleTask(executableTestCase::executionGraphFinishedCallback));
executableTestCase.setExecutionGraph(graph);
Expand All @@ -41,11 +42,10 @@ private ExecutableTestStep produce(TestStep testStep, int orderNumber) {
var executionProperties = testStep.getStepExecutionProperties();
var stepAction = runtimeActionFactory.produceAction(executionProperties);

var executableTestStep = new ExecutableTestStep(
new TestInfo(orderNumber, testStep.getName(), projectContext.getProjectId()), stepAction);
executableTestStep.timeout(executionProperties.getTimeout(), executionProperties.getTimeUnit());

return executableTestStep;
return new ExecutableTestStep(
new TestInfo(orderNumber, testStep.getName(), projectContext.getProjectId()),
testStep.getStepExecutionProperties(),
stepAction);
}

private ExecutionScheduler getScheduler(boolean isParallel) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import apps.amaralus.qa.platform.common.model.IdSource;
import apps.amaralus.qa.platform.dataset.linked.DatasetSource;
import apps.amaralus.qa.platform.runtime.execution.properties.TestCaseExecutionProperties;
import lombok.Data;

import java.util.ArrayList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import apps.amaralus.qa.platform.label.linked.LabelLinkedModel;
import apps.amaralus.qa.platform.project.linked.ProjectLinkedModel;
import apps.amaralus.qa.platform.rocksdb.sequence.GeneratedSequence;
import apps.amaralus.qa.platform.runtime.execution.properties.TestCaseExecutionProperties;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.keyvalue.annotation.KeySpace;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package apps.amaralus.qa.platform.testcase.model;

import apps.amaralus.qa.platform.runtime.execution.StepExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.properties.StepExecutionProperties;
import lombok.Data;

@Data
public class TestStep {
private Long ordinalNumber;
private String name;
private String description;
private String expectedResult;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package apps.amaralus.qa.platform.testplan;

import apps.amaralus.qa.platform.common.model.IdSource;
import apps.amaralus.qa.platform.runtime.execution.properties.TestPlanExecutionProperties;
import lombok.Data;

import static apps.amaralus.qa.platform.testplan.AutomationDegree.AUTO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import apps.amaralus.qa.platform.project.context.InterceptProjectId;
import apps.amaralus.qa.platform.project.context.ProjectContextLinked;
import apps.amaralus.qa.platform.testplan.report.model.TestReportModel;
import apps.amaralus.qa.platform.testplan.report.TestReportService;
import apps.amaralus.qa.platform.testplan.report.model.TestReportModel;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@
import apps.amaralus.qa.platform.project.api.Project;
import apps.amaralus.qa.platform.project.context.ProjectContext;
import apps.amaralus.qa.platform.runtime.action.ActionType;
import apps.amaralus.qa.platform.runtime.execution.StepExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.properties.StepExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.properties.TestCaseExecutionProperties;
import apps.amaralus.qa.platform.runtime.execution.properties.TestPlanExecutionProperties;
import apps.amaralus.qa.platform.testcase.TestCaseRepository;
import apps.amaralus.qa.platform.testcase.action.asserts.AssertActionModel;
import apps.amaralus.qa.platform.testcase.action.asserts.AssertActionRepository;
import apps.amaralus.qa.platform.testcase.action.debug.DebugActionModel;
import apps.amaralus.qa.platform.testcase.action.debug.DebugActionRepository;
import apps.amaralus.qa.platform.testcase.model.TestCaseExecutionProperties;
import apps.amaralus.qa.platform.testcase.model.TestCaseModel;
import apps.amaralus.qa.platform.testcase.model.TestStep;
import apps.amaralus.qa.platform.testplan.TestPlan;
import apps.amaralus.qa.platform.testplan.TestPlanExecutionProperties;
import apps.amaralus.qa.platform.testplan.TestPlanService;
import apps.amaralus.qa.platform.testplan.report.TestReportService;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -242,6 +242,7 @@ void createTestCase(boolean parallelExecution, String name, Long folder, int ste

TestStep createTestStep(int iteration, String debugMessage) {
var step = new TestStep();
step.setOrdinalNumber((long) iteration);
step.setName("step" + iteration);
step.setStepExecutionProperties(new StepExecutionProperties(iteration, ActionType.DEBUG));

Expand Down

0 comments on commit a67e25f

Please sign in to comment.