Skip to content

Commit bf51922

Browse files
committed
Fix retries properties
Signed-off-by: Tihomir Surdilovic <[email protected]>
1 parent 821ccc1 commit bf51922

File tree

4 files changed

+93
-1
lines changed

4 files changed

+93
-1
lines changed

api/src/main/resources/schema/retry/retrydef.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{
1+
{
22
"type": "object",
33
"javaType": "io.serverlessworkflow.api.retry.RetryDefinition",
44
"description": "Retry Definition",
@@ -12,6 +12,14 @@
1212
"type": "string",
1313
"description": "Time delay between retry attempts (ISO 8601 duration format)"
1414
},
15+
"maxDelay": {
16+
"type": "string",
17+
"description": "Maximum time delay between retry attempts (ISO 8601 duration format)"
18+
},
19+
"increment": {
20+
"type": "string",
21+
"description": "Static value by which the delay increases during each attempt (ISO 8601 time format)"
22+
},
1523
"multiplier": {
1624
"type": "string",
1725
"description": "Multiplier value by which interval increases during each attempt (ISO 8601 time format)"

api/src/test/java/io/serverlessworkflow/api/test/MarkupToWorkflowTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@
2424
import io.serverlessworkflow.api.functions.FunctionDefinition;
2525
import io.serverlessworkflow.api.functions.FunctionRef;
2626
import io.serverlessworkflow.api.interfaces.State;
27+
import io.serverlessworkflow.api.retry.RetryDefinition;
2728
import io.serverlessworkflow.api.states.EventState;
2829
import io.serverlessworkflow.api.states.OperationState;
2930
import io.serverlessworkflow.api.states.SubflowState;
3031
import io.serverlessworkflow.api.states.SwitchState;
3132
import io.serverlessworkflow.api.switchconditions.DataCondition;
3233
import io.serverlessworkflow.api.test.utils.WorkflowTestUtils;
34+
import io.serverlessworkflow.api.workflow.Retries;
3335
import org.junit.jupiter.params.ParameterizedTest;
3436
import org.junit.jupiter.params.provider.ValueSource;
3537

@@ -434,4 +436,30 @@ public void testLongStart(String workflowLocation) {
434436
assertEquals("0 0/15 * * * ?", workflow.getStart().getSchedule().getCron().getExpression());
435437

436438
}
439+
440+
@ParameterizedTest
441+
@ValueSource(strings = {"/features/retriesprops.json", "/features/retriesprops.yml"})
442+
public void testRetriesProps(String workflowLocation) {
443+
Workflow workflow = Workflow.fromSource(WorkflowTestUtils.readWorkflowFile(workflowLocation));
444+
445+
assertNotNull(workflow);
446+
assertNotNull(workflow.getId());
447+
assertNotNull(workflow.getName());
448+
assertNotNull(workflow.getRetries());
449+
assertNotNull(workflow.getStates());
450+
451+
Retries retries = workflow.getRetries();
452+
assertNotNull(retries.getRetryDefs());
453+
assertEquals(1, retries.getRetryDefs().size());
454+
455+
RetryDefinition retryDefinition = retries.getRetryDefs().get(0);
456+
assertEquals("Test Retries", retryDefinition.getName());
457+
assertEquals("PT1M", retryDefinition.getDelay());
458+
assertEquals("PT2M", retryDefinition.getMaxDelay());
459+
assertEquals("PT2S", retryDefinition.getIncrement());
460+
assertEquals("1.2", retryDefinition.getMultiplier());
461+
assertEquals("20", retryDefinition.getMaxAttempts());
462+
assertEquals("0.4", retryDefinition.getJitter());
463+
464+
}
437465
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"id": "TestRetriesProps",
3+
"name": "Retries props test",
4+
"version": "1.0",
5+
"start": "Test State",
6+
"retries": [
7+
{
8+
"name": "Test Retries",
9+
"delay": "PT1M",
10+
"maxDelay": "PT2M",
11+
"increment": "PT2S",
12+
"multiplier": "1.2",
13+
"maxAttempts": "20",
14+
"jitter": "0.4"
15+
}
16+
],
17+
"states": [
18+
{
19+
"name": "Test States",
20+
"type": "operation",
21+
"actions": [
22+
],
23+
"onErrors": [
24+
{
25+
"error": "TimeoutError",
26+
"code": "500",
27+
"retryRef": "Test Retries",
28+
"end": true
29+
}
30+
],
31+
"end": true
32+
}
33+
]
34+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
id: TestRetriesProps
2+
name: Retries props test
3+
version: '1.0'
4+
start: Test State
5+
retries:
6+
- name: Test Retries
7+
delay: PT1M
8+
maxDelay: PT2M
9+
increment: PT2S
10+
multiplier: '1.2'
11+
maxAttempts: '20'
12+
jitter: '0.4'
13+
states:
14+
- name: Test States
15+
type: operation
16+
actions: []
17+
onErrors:
18+
- error: TimeoutError
19+
code: '500'
20+
retryRef: Test Retries
21+
end: true
22+
end: true

0 commit comments

Comments
 (0)