diff --git a/src/main/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStep.java b/src/main/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStep.java index 9bd2cde..5952eb0 100644 --- a/src/main/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStep.java +++ b/src/main/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStep.java @@ -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); } } diff --git a/src/main/java/io/linuxserver/davos/schedule/workflow/WorkflowStep.java b/src/main/java/io/linuxserver/davos/schedule/workflow/WorkflowStep.java index 050c8f6..72c33c5 100644 --- a/src/main/java/io/linuxserver/davos/schedule/workflow/WorkflowStep.java +++ b/src/main/java/io/linuxserver/davos/schedule/workflow/WorkflowStep.java @@ -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); } diff --git a/src/test/java/io/linuxserver/davos/schedule/workflow/ConnectWorkflowStepTest.java b/src/test/java/io/linuxserver/davos/schedule/workflow/ConnectWorkflowStepTest.java index cd881b5..efc494c 100644 --- a/src/test/java/io/linuxserver/davos/schedule/workflow/ConnectWorkflowStepTest.java +++ b/src/test/java/io/linuxserver/davos/schedule/workflow/ConnectWorkflowStepTest.java @@ -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() { diff --git a/src/test/java/io/linuxserver/davos/schedule/workflow/DownloadFilesWorkflowStepTest.java b/src/test/java/io/linuxserver/davos/schedule/workflow/DownloadFilesWorkflowStepTest.java index 99f4a51..070a5e6 100644 --- a/src/test/java/io/linuxserver/davos/schedule/workflow/DownloadFilesWorkflowStepTest.java +++ b/src/test/java/io/linuxserver/davos/schedule/workflow/DownloadFilesWorkflowStepTest.java @@ -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; diff --git a/src/test/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStepTest.java b/src/test/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStepTest.java index a9af516..75784c3 100644 --- a/src/test/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStepTest.java +++ b/src/test/java/io/linuxserver/davos/schedule/workflow/FilterFilesWorkflowStepTest.java @@ -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); } }