17
17
import static org .junit .Assert .*;
18
18
import static org .mockito .Mockito .*;
19
19
20
- import com .uber .cadence .EventType ;
21
- import com .uber .cadence .GetWorkflowExecutionHistoryResponse ;
22
- import com .uber .cadence .History ;
23
- import com .uber .cadence .HistoryEvent ;
24
- import com .uber .cadence .StartChildWorkflowExecutionFailedEventAttributes ;
25
- import com .uber .cadence .WorkflowExecution ;
26
- import com .uber .cadence .WorkflowExecutionCloseStatus ;
20
+ import com .google .common .collect .ImmutableMap ;
21
+ import com .uber .cadence .*;
27
22
import com .uber .cadence .client .WorkflowTerminatedException ;
28
23
import com .uber .cadence .client .WorkflowTimedOutException ;
24
+ import com .uber .cadence .internal .compatibility .ThriftObjects ;
29
25
import com .uber .cadence .serviceclient .IWorkflowService ;
30
- import java .util .Arrays ;
31
- import java .util .Collections ;
32
- import java .util .Iterator ;
33
- import java .util .Optional ;
26
+ import java .util .*;
34
27
import java .util .concurrent .CancellationException ;
35
28
import java .util .concurrent .TimeUnit ;
36
29
import java .util .concurrent .TimeoutException ;
@@ -42,6 +35,33 @@ public class WorkflowExecutionUtilsTest {
42
35
43
36
private IWorkflowService mockService ;
44
37
private WorkflowExecution workflowExecution ;
38
+ private final String DECISIONS_PRETTY_PRINT =
39
+ "{\n "
40
+ + " ScheduleActivityTaskDecisionAttributes {\n "
41
+ + " ActivityId = activityId;\n "
42
+ + " ActivityType = activityName;\n "
43
+ + " Domain = domain;\n "
44
+ + " Header = {\n "
45
+ + " Fields = { key1=value1, key2=value2 };\n "
46
+ + " FieldsSize = 2\n "
47
+ + " };\n "
48
+ + " HeartbeatTimeoutSeconds = 4;\n "
49
+ + " Input = input;\n "
50
+ + " ScheduleToCloseTimeoutSeconds = 1;\n "
51
+ + " ScheduleToStartTimeoutSeconds = 2;\n "
52
+ + " StartToCloseTimeoutSeconds = 3;\n "
53
+ + " TaskList = taskList\n "
54
+ + " },\n "
55
+ + " FailWorkflowExecutionDecisionAttributes {\n "
56
+ + " Details = {\n "
57
+ + " \" error\" : \" panic\" ,\n "
58
+ + " \" stackTrace\" : \" fn()\n "
59
+ + " main()\" \n "
60
+ + " };\n "
61
+ + " Reason = failure reason\n "
62
+ + " },\n "
63
+ + " null\n "
64
+ + "}" ;
45
65
46
66
@ Before
47
67
public void setUp () {
@@ -400,4 +420,53 @@ public void testGetHistoryPage_ExceptionWhileRetrievingExecutionHistory() throws
400
420
401
421
assertTrue (exception .getMessage ().contains (errMessage ));
402
422
}
423
+
424
+ @ Test
425
+ public void testPrettyPrintDecisions () throws Exception {
426
+ final TaskList taskList =
427
+ new com .uber .cadence .TaskList ()
428
+ .setName ("taskList" )
429
+ .setKind (com .uber .cadence .TaskListKind .NORMAL );
430
+
431
+ final ActivityType activityType = new ActivityType ().setName ("activityName" );
432
+ final Header activityHeader =
433
+ new Header ()
434
+ .setFields (
435
+ ImmutableMap .of (
436
+ "key1" , ThriftObjects .utf8 ("value1" ),
437
+ "key2" , ThriftObjects .utf8 ("value2" )));
438
+
439
+ final Decision decisionScheduleActivity =
440
+ new Decision ()
441
+ .setDecisionType (DecisionType .ScheduleActivityTask )
442
+ .setScheduleActivityTaskDecisionAttributes (
443
+ new ScheduleActivityTaskDecisionAttributes ()
444
+ .setActivityId ("activityId" )
445
+ .setActivityType (activityType )
446
+ .setTaskList (taskList )
447
+ .setInput (ThriftObjects .utf8 ("input" ))
448
+ .setScheduleToCloseTimeoutSeconds (1 )
449
+ .setScheduleToStartTimeoutSeconds (2 )
450
+ .setStartToCloseTimeoutSeconds (3 )
451
+ .setHeartbeatTimeoutSeconds (4 )
452
+ .setHeader (activityHeader )
453
+ .setRequestLocalDispatch (true )
454
+ .setDomain ("domain" ));
455
+
456
+ final Decision decisionFailWorkflow =
457
+ new Decision ()
458
+ .setDecisionType (DecisionType .FailWorkflowExecution )
459
+ .setFailWorkflowExecutionDecisionAttributes (
460
+ new FailWorkflowExecutionDecisionAttributes ()
461
+ .setReason ("failure reason" )
462
+ .setDetails (
463
+ ThriftObjects .utf8 (
464
+ "{\" error\" :\" panic\" , \" stackTrace\" :\" fn()\\ nmain()\" }" )));
465
+
466
+ ArrayList <Decision > decisions =
467
+ new ArrayList <>(Arrays .asList (decisionScheduleActivity , decisionFailWorkflow , null ));
468
+
469
+ String result = WorkflowExecutionUtils .prettyPrintDecisions (decisions );
470
+ assertEquals (DECISIONS_PRETTY_PRINT , result );
471
+ }
403
472
}
0 commit comments