From e7168804423150c6816f9a365aeee4767822942f Mon Sep 17 00:00:00 2001 From: Babis Kiosidis Date: Fri, 24 Apr 2020 13:53:30 +0200 Subject: [PATCH 1/3] remove transition from queued to submitting through submit event --- .../src/main/java/com/spotify/styx/state/RunState.java | 1 - .../src/test/java/com/spotify/styx/state/RunStateTest.java | 3 ++- .../com/spotify/styx/storage/WFIExecutionBuilderTest.java | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/styx-service-common/src/main/java/com/spotify/styx/state/RunState.java b/styx-service-common/src/main/java/com/spotify/styx/state/RunState.java index b33a5bd579..cb7405bf88 100644 --- a/styx-service-common/src/main/java/com/spotify/styx/state/RunState.java +++ b/styx-service-common/src/main/java/com/spotify/styx/state/RunState.java @@ -176,7 +176,6 @@ public RunState dequeue(WorkflowInstance workflowInstance, Set resourceI public RunState submit(WorkflowInstance workflowInstance, ExecutionDescription executionDescription, String executionId) { switch (state()) { - case QUEUED: // for backwards compatibility case PREPARE: return state( SUBMITTING, diff --git a/styx-service-common/src/test/java/com/spotify/styx/state/RunStateTest.java b/styx-service-common/src/test/java/com/spotify/styx/state/RunStateTest.java index 0e4bf14760..1c3a9fc9a1 100644 --- a/styx-service-common/src/test/java/com/spotify/styx/state/RunStateTest.java +++ b/styx-service-common/src/test/java/com/spotify/styx/state/RunStateTest.java @@ -216,6 +216,7 @@ public void testSetExecutionId() { transitioner.receive(eventFactory.terminate(1)); transitioner.receive(eventFactory.retryAfter(999)); + transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_2)); transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_2)); transitioner.receive(eventFactory.started()); @@ -225,7 +226,7 @@ public void testSetExecutionId() { transitioner.get(WORKFLOW_INSTANCE).data().executionId(), equalTo(Optional.of(TEST_EXECUTION_ID_2))); assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, TERMINATED, QUEUED, - SUBMITTING, SUBMITTED, RUNNING)); + PREPARE, SUBMITTING, SUBMITTED, RUNNING)); } @Test diff --git a/styx-service-common/src/test/java/com/spotify/styx/storage/WFIExecutionBuilderTest.java b/styx-service-common/src/test/java/com/spotify/styx/storage/WFIExecutionBuilderTest.java index 7796109529..115a0a9730 100644 --- a/styx-service-common/src/test/java/com/spotify/styx/storage/WFIExecutionBuilderTest.java +++ b/styx-service-common/src/test/java/com/spotify/styx/storage/WFIExecutionBuilderTest.java @@ -159,6 +159,7 @@ public void testGeneralExample() { SequenceEvent.create(E.terminate(RunState.MISSING_DEPS_EXIT_CODE), c++, ts("07:58")), SequenceEvent.create(E.retryAfter(10), c++, ts("07:59")), + SequenceEvent.create(E.dequeue(RESOURCE_IDS), c++, ts("08:54")), SequenceEvent.create(E.submit(desc("img2"), "exec-id-01"), c++, ts("08:55")), SequenceEvent.create(E.submitted("exec-id-01"), c++, ts("08:56")), SequenceEvent.create(E.started(), c++, ts("08:57")), @@ -173,6 +174,7 @@ public void testGeneralExample() { SequenceEvent.create(E.terminate(1), c++, ts("09:58")), SequenceEvent.create(E.retryAfter(10), c++, ts("09:59")), + SequenceEvent.create(E.dequeue(RESOURCE_IDS), c++, ts("10:54")), SequenceEvent.create(E.submit(desc("img4", "sha4"), "exec-id-11"), c++, ts("10:55")), SequenceEvent.create(E.submitted("exec-id-11"), c++, ts("10:56")), SequenceEvent.create(E.started(), c++, ts("10:57")) @@ -306,6 +308,7 @@ public void testTimeout() { SequenceEvent.create(E.timeout(), c++, ts("07:58")), SequenceEvent.create(E.retryAfter(10), c++, ts("07:59")), + SequenceEvent.create(E.dequeue(RESOURCE_IDS), c++, ts("08:54")), SequenceEvent.create(E.submit(desc("img2", "sha2"), "exec-id-01"), c++, ts("08:55")), SequenceEvent.create(E.submitted("exec-id-01"), c++, ts("08:56")), SequenceEvent.create(E.started(), c++, ts("08:57")) @@ -404,6 +407,7 @@ public void testRunError() { SequenceEvent.create(E.runError("First failure"), c++, ts("07:58")), SequenceEvent.create(E.retryAfter(10), c++, ts("07:59")), + SequenceEvent.create(E.dequeue(RESOURCE_IDS), c++, ts("08:54")), SequenceEvent.create(E.submit(desc("img2", "sha2"), "exec-id-01"), c++, ts("08:55")), SequenceEvent.create(E.submitted("exec-id-01"), c++, ts("08:56")), SequenceEvent.create(E.started(), c++, ts("08:57")), @@ -527,6 +531,7 @@ public void testStop() { SequenceEvent.create(E.runError("First failure"), c++, ts("07:58")), SequenceEvent.create(E.retryAfter(10), c++, ts("07:59")), + SequenceEvent.create(E.dequeue(RESOURCE_IDS), c++, ts("08:54")), SequenceEvent.create(E.submit(desc("img2", "sha2"), "exec-id-01"), c++, ts("08:55")), SequenceEvent.create(E.submitted("exec-id-01"), c++, ts("08:56")), SequenceEvent.create(E.started(), c++, ts("08:57")), From 05c7df4d00b0483950ebe5ebba032bba6ebd35ad Mon Sep 17 00:00:00 2001 From: Babis Kiosidis Date: Fri, 24 Apr 2020 14:26:43 +0200 Subject: [PATCH 2/3] remove transition from prepare to running through started event --- .../java/com/spotify/styx/state/RunState.java | 4 -- .../com/spotify/styx/state/RunStateTest.java | 71 ++++++++++++++----- 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/styx-service-common/src/main/java/com/spotify/styx/state/RunState.java b/styx-service-common/src/main/java/com/spotify/styx/state/RunState.java index cb7405bf88..409b02ad20 100644 --- a/styx-service-common/src/main/java/com/spotify/styx/state/RunState.java +++ b/styx-service-common/src/main/java/com/spotify/styx/state/RunState.java @@ -212,10 +212,6 @@ public RunState started(WorkflowInstance workflowInstance) { switch (state()) { case SUBMITTED: return state(RUNNING); - case PREPARE: - return state(RUNNING, data().builder() - .tries(data().tries() + 1) - .build()); default: throw illegalTransition("started"); diff --git a/styx-service-common/src/test/java/com/spotify/styx/state/RunStateTest.java b/styx-service-common/src/test/java/com/spotify/styx/state/RunStateTest.java index 1c3a9fc9a1..b0427e5dc8 100644 --- a/styx-service-common/src/test/java/com/spotify/styx/state/RunStateTest.java +++ b/styx-service-common/src/test/java/com/spotify/styx/state/RunStateTest.java @@ -266,13 +266,16 @@ public void testSetsRetryDelay() { assertThat(transitioner.get(WORKFLOW_INSTANCE).data().retryDelayMillis(), isPresentAndIs(777L)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(1)); transitioner.receive(eventFactory.retryAfter(999)); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().retryDelayMillis(), isPresentAndIs(999L)); - assertThat(outputs, contains(QUEUED, PREPARE, FAILED, QUEUED, PREPARE, RUNNING, TERMINATED, QUEUED)); + assertThat(outputs, contains(QUEUED, PREPARE, FAILED, QUEUED, + PREPARE, SUBMITTING, SUBMITTED, RUNNING, TERMINATED, QUEUED)); } @Test @@ -317,17 +320,22 @@ public void testManyRetriesAfterFromRunError() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.runError(TEST_ERROR_MESSAGE)); transitioner.receive(eventFactory.retryAfter(0)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.runError(TEST_ERROR_MESSAGE)); transitioner.receive(eventFactory.retryAfter(0)); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().tries(), equalTo(2)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, FAILED, QUEUED, PREPARE, RUNNING, FAILED, QUEUED)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, FAILED, QUEUED, PREPARE, + SUBMITTING, SUBMITTED, RUNNING, FAILED, QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().consecutiveFailures(), equalTo(2)); } @@ -336,16 +344,21 @@ public void testMissingDependenciesAddsToCost() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(RunState.MISSING_DEPS_EXIT_CODE)); transitioner.receive(eventFactory.retryAfter(0)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_2)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_2)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(RunState.MISSING_DEPS_EXIT_CODE)); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(TERMINATED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().retryCost(), equalTo(0.2)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, TERMINATED, QUEUED, PREPARE, RUNNING, TERMINATED)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, TERMINATED, QUEUED, PREPARE, + SUBMITTING, SUBMITTED, RUNNING, TERMINATED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().consecutiveFailures(), equalTo(0)); } @@ -354,17 +367,21 @@ public void testMissingDependenciesIncrementsTries() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(RunState.MISSING_DEPS_EXIT_CODE)); transitioner.receive(eventFactory.retryAfter(0)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_2)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_2)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(RunState.MISSING_DEPS_EXIT_CODE)); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(TERMINATED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().tries(), equalTo(2)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, TERMINATED, QUEUED, PREPARE, - RUNNING, TERMINATED)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, TERMINATED, QUEUED, PREPARE, + SUBMITTING, SUBMITTED, RUNNING, TERMINATED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().consecutiveFailures(), equalTo(0)); } @@ -373,17 +390,21 @@ public void testErrorsAddsToCost() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(1)); transitioner.receive(eventFactory.retryAfter(0)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_2)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_2)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(1)); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(TERMINATED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().retryCost(), equalTo(2.0)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, TERMINATED, QUEUED, PREPARE, - RUNNING, TERMINATED)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, TERMINATED, QUEUED, PREPARE, + SUBMITTING, SUBMITTED, RUNNING, TERMINATED)); } @Test @@ -421,6 +442,8 @@ public void testRetryAfterFromTerminated() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(1)); transitioner.receive(eventFactory.retryAfter(0)); @@ -428,7 +451,7 @@ public void testRetryAfterFromTerminated() { assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().tries(), equalTo(1)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().lastExit(), isPresentAndIs(1)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, TERMINATED, QUEUED)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, TERMINATED, QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().consecutiveFailures(), equalTo(1)); } @@ -437,10 +460,14 @@ public void testManyRetriesAfterFromTerminated() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(1)); transitioner.receive(eventFactory.retryAfter(0)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_2)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_2)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(7)); transitioner.receive(eventFactory.retryAfter(0)); @@ -448,8 +475,8 @@ public void testManyRetriesAfterFromTerminated() { assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().tries(), equalTo(2)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().lastExit(), isPresentAndIs(7)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, TERMINATED, QUEUED, PREPARE, - RUNNING, TERMINATED, QUEUED)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, TERMINATED, QUEUED, PREPARE, + SUBMITTING, SUBMITTED, RUNNING, TERMINATED, QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().consecutiveFailures(), equalTo(2)); } @@ -458,13 +485,15 @@ public void testFatalFromTerminated() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.terminate(1)); transitioner.receive(eventFactory.stop()); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(ERROR)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().lastExit(), isPresentAndIs(1)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, TERMINATED, ERROR)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, TERMINATED, ERROR)); } @Test @@ -472,13 +501,15 @@ public void testRetryAfterFromStartedThenRunError() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.runError(TEST_ERROR_MESSAGE)); transitioner.receive(eventFactory.retryAfter(0)); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().tries(), equalTo(1)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, FAILED, QUEUED)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, FAILED, QUEUED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().consecutiveFailures(), equalTo(1)); } @@ -487,12 +518,14 @@ public void testFatalFromStartedThenRunError() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.runError(TEST_ERROR_MESSAGE)); transitioner.receive(eventFactory.stop()); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(ERROR)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, FAILED, ERROR)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, FAILED, ERROR)); } @Test @@ -500,11 +533,13 @@ public void testFailedFromTimeout() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.timeout()); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(FAILED)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, FAILED)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, FAILED)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().consecutiveFailures(), equalTo(0)); } @@ -513,18 +548,22 @@ public void testRetriggerOfPartition() { transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_1)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_1)); transitioner.receive(eventFactory.started()); transitioner.receive(eventFactory.runError(TEST_ERROR_MESSAGE)); transitioner.receive(eventFactory.stop()); transitioner.initialize(RunState.fresh(WORKFLOW_INSTANCE)); transitioner.receive(eventFactory.triggerExecution(UNKNOWN_TRIGGER)); transitioner.receive(eventFactory.dequeue(ImmutableSet.of())); + transitioner.receive(eventFactory.submit(EXECUTION_DESCRIPTION, TEST_EXECUTION_ID_2)); + transitioner.receive(eventFactory.submitted(TEST_EXECUTION_ID_2)); transitioner.receive(eventFactory.started()); assertThat(transitioner.get(WORKFLOW_INSTANCE).state(), equalTo(RUNNING)); assertThat(transitioner.get(WORKFLOW_INSTANCE).data().tries(), equalTo(1)); - assertThat(outputs, contains(QUEUED, PREPARE, RUNNING, FAILED, ERROR, - QUEUED, PREPARE, RUNNING)); + assertThat(outputs, contains(QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING, FAILED, ERROR, + QUEUED, PREPARE, SUBMITTING, SUBMITTED, RUNNING)); } @Test From 8efa0d6c2306386456018f0ede3d031603526b31 Mon Sep 17 00:00:00 2001 From: Babis Kiosidis Date: Fri, 24 Apr 2020 14:57:01 +0200 Subject: [PATCH 3/3] fix broken test --- .../src/test/java/com/spotify/styx/util/ReplayEventsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/styx-service-common/src/test/java/com/spotify/styx/util/ReplayEventsTest.java b/styx-service-common/src/test/java/com/spotify/styx/util/ReplayEventsTest.java index 398961b6d9..86ab88fe42 100644 --- a/styx-service-common/src/test/java/com/spotify/styx/util/ReplayEventsTest.java +++ b/styx-service-common/src/test/java/com/spotify/styx/util/ReplayEventsTest.java @@ -100,7 +100,7 @@ public void restoreRunStateWhenMissingEvent() throws Exception { events.add(SequenceEvent.create( Event.triggerExecution(WORKFLOW_INSTANCE, Trigger.backfill("bf-1"), TRIGGER_PARAMETERS), 1L, 1L)); events.add(SequenceEvent.create(Event.dequeue(WORKFLOW_INSTANCE, RESOURCE_IDS), 2L, 2L)); - // missing Event.submit(WORKFLOW_INSTANCE, EXECUTION_DESCRIPTION, "exec-1") + events.add(SequenceEvent.create(Event.submit(WORKFLOW_INSTANCE, EXECUTION_DESCRIPTION, "exec-1"), 3L, 3L)); events.add(SequenceEvent.create(Event.submitted(WORKFLOW_INSTANCE, "exec-1", "test"), 4L, 4L)); events.add(SequenceEvent.create(Event.started(WORKFLOW_INSTANCE), 5L, 5L)); events.add(SequenceEvent.create(Event.terminate(WORKFLOW_INSTANCE, Optional.of(0)), 6L, 6L));