1717import static org .junit .Assert .*;
1818import static org .mockito .Mockito .*;
1919
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 .*;
2722import com .uber .cadence .client .WorkflowTerminatedException ;
2823import com .uber .cadence .client .WorkflowTimedOutException ;
24+ import com .uber .cadence .internal .compatibility .ThriftObjects ;
2925import 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 .*;
3427import java .util .concurrent .CancellationException ;
3528import java .util .concurrent .TimeUnit ;
3629import java .util .concurrent .TimeoutException ;
@@ -42,6 +35,33 @@ public class WorkflowExecutionUtilsTest {
4235
4336 private IWorkflowService mockService ;
4437 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+ + "}" ;
4565
4666 @ Before
4767 public void setUp () {
@@ -400,4 +420,53 @@ public void testGetHistoryPage_ExceptionWhileRetrievingExecutionHistory() throws
400420
401421 assertTrue (exception .getMessage ().contains (errMessage ));
402422 }
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+ }
403472}
0 commit comments