mirror of
https://github.com/linuxserver/davos.git
synced 2026-04-20 00:01:51 +08:00
Added concept of 'Backout' in workflow steps
- A workflow step can define a 'backout'; i.e. a step to call if something goes wrong. This is important for steps that are dealing with an open connection as any open connections must be closed.
This commit is contained in:
parent
5debe9aebd
commit
38b6ef1353
@ -19,7 +19,9 @@ public class FilterFilesWorkflowStep extends WorkflowStep {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(FilterFilesWorkflowStep.class);
|
||||
|
||||
public FilterFilesWorkflowStep() {
|
||||
|
||||
this.nextStep = new DownloadFilesWorkflowStep();
|
||||
this.backoutStep = new DisconnectWorkflowStep();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -54,6 +56,9 @@ public class FilterFilesWorkflowStep extends WorkflowStep {
|
||||
|
||||
LOGGER.error("Unable to filter files. Error message was: {}", e.getMessage());
|
||||
LOGGER.debug("Stacktrace", e);
|
||||
|
||||
LOGGER.info("Backing out of this run.");
|
||||
backoutStep.runStep(schedule);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package io.linuxserver.davos.schedule.workflow;
|
||||
public abstract class WorkflowStep {
|
||||
|
||||
protected WorkflowStep nextStep;
|
||||
protected WorkflowStep backoutStep;
|
||||
|
||||
abstract public void runStep(ScheduleWorkflow schedule);
|
||||
}
|
||||
|
||||
@ -34,9 +34,12 @@ public class ConnectWorkflowStepTest {
|
||||
@Mock
|
||||
private Client mockClient;
|
||||
|
||||
@Mock
|
||||
@Mock(name = "nextStep")
|
||||
private WorkflowStep mockNextStep;
|
||||
|
||||
|
||||
@Mock(name = "backoutStep")
|
||||
private WorkflowStep mockBackoutStep;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
|
||||
|
||||
@ -32,9 +32,12 @@ public class DownloadFilesWorkflowStepTest {
|
||||
@InjectMocks
|
||||
private DownloadFilesWorkflowStep workflowStep = new DownloadFilesWorkflowStep();
|
||||
|
||||
@Mock
|
||||
@Mock(name = "nextStep")
|
||||
private WorkflowStep mockNextStep;
|
||||
|
||||
@Mock(name = "backoutStep")
|
||||
private WorkflowStep mockBackoutStep;
|
||||
|
||||
@Mock
|
||||
private Connection mockConnection;
|
||||
|
||||
|
||||
@ -27,8 +27,11 @@ public class FilterFilesWorkflowStepTest {
|
||||
@InjectMocks
|
||||
private FilterFilesWorkflowStep workflowStep = new FilterFilesWorkflowStep();
|
||||
|
||||
@Mock
|
||||
@Mock(name = "nextStep")
|
||||
private DownloadFilesWorkflowStep mockNextStep;
|
||||
|
||||
@Mock(name = "backoutStep")
|
||||
private DisconnectWorkflowStep mockBackupStep;
|
||||
|
||||
@Mock
|
||||
private Connection mockConnection;
|
||||
@ -207,7 +210,7 @@ public class FilterFilesWorkflowStepTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ifListingFilesIsUnsuccessfulThenDoNotCallNextStep() {
|
||||
public void ifListingFilesIsUnsuccessfulThenDoNotCallNextStepAndCallBackupStepInstead() {
|
||||
|
||||
ScheduleConfiguration config = new ScheduleConfiguration(null, null, null, 0, null, "remote/", "local/",
|
||||
FileTransferType.FILES_ONLY);
|
||||
@ -220,5 +223,6 @@ public class FilterFilesWorkflowStepTest {
|
||||
workflowStep.runStep(schedule);
|
||||
|
||||
verify(mockNextStep, never()).runStep(schedule);
|
||||
verify(mockBackupStep).runStep(schedule);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user