1818package com .uber .cadence .internal .replay ;
1919
2020import static junit .framework .TestCase .assertEquals ;
21- import static org .junit .Assert .assertNotSame ;
22- import static org .junit .Assert .fail ;
21+ import static org .junit .Assert .*;
2322import static org .mockito .Matchers .anyInt ;
2423import static org .mockito .Matchers .eq ;
2524import static org .mockito .Mockito .*;
2625
2726import com .uber .cadence .HistoryEvent ;
2827import com .uber .cadence .PollForDecisionTaskResponse ;
28+ import com .uber .cadence .WorkflowExecution ;
2929import com .uber .cadence .WorkflowQuery ;
3030import com .uber .cadence .internal .metrics .MetricsTag ;
3131import com .uber .cadence .internal .metrics .MetricsType ;
@@ -61,29 +61,39 @@ public void whenHistoryIsFullNewReplayDeciderIsReturnedAndCached_InitiallyEmpty(
6161 Decider decider = replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
6262
6363 // Assert
64- assertEquals (decider , replayDeciderCache .getUnchecked ( runId ));
64+ assertNotEquals (decider , replayDeciderCache .getOrCreate ( decisionTask , this :: createFakeDecider ));
6565 }
6666
6767 @ Test
6868 public void whenHistoryIsFullNewReplayDeciderIsReturned_InitiallyCached () throws Exception {
69+ TestWorkflowService service = new TestWorkflowService ();
70+
6971 // Arrange
7072 DeciderCache replayDeciderCache = new DeciderCache (10 , NoopScope .getInstance ());
71- PollForDecisionTaskResponse decisionTask =
72- HistoryUtils .generateDecisionTaskWithInitialHistory ();
73+ PollForDecisionTaskResponse decisionTask1 =
74+ HistoryUtils .generateDecisionTaskWithInitialHistory (
75+ "domain" , "taskList" , "workflowType" , service );
7376
74- String runId = decisionTask .getWorkflowExecution ().getRunId ();
75- Decider decider = replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
76- assertEquals (decider , replayDeciderCache .getUnchecked (runId ));
77+ String runId = decisionTask1 .getWorkflowExecution ().getRunId ();
78+ Decider decider = replayDeciderCache .getOrCreate (decisionTask1 , this ::createFakeDecider );
79+
80+ PollForDecisionTaskResponse decisionTask2 =
81+ HistoryUtils .generateDecisionTaskWithPartialHistoryFromExistingTask (
82+ decisionTask1 , "domain" , "stickyTaskList" , service );
83+
84+ assertEquals (
85+ decider , replayDeciderCache .getOrCreate (decisionTask2 , this ::doNotCreateFakeDecider ));
7786
7887 // Act
79- Decider decider2 = replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
88+ Decider decider2 = replayDeciderCache .getOrCreate (decisionTask2 , this ::createFakeDecider );
8089
8190 // Assert
82- assertEquals (decider2 , replayDeciderCache .getUnchecked (runId ));
83- assertNotSame (decider2 , decider );
91+ assertEquals (decider2 , replayDeciderCache .getOrCreate (decisionTask2 , this ::createFakeDecider ));
92+ assertSame (decider2 , decider );
93+ service .close ();
8494 }
8595
86- @ Test
96+ @ Test ( timeout = 2000 )
8797 public void whenHistoryIsPartialCachedEntryIsReturned () throws Exception {
8898 // Arrange
8999 Map <String , String > tags =
@@ -97,31 +107,30 @@ public void whenHistoryIsPartialCachedEntryIsReturned() throws Exception {
97107
98108 DeciderCache replayDeciderCache = new DeciderCache (10 , scope );
99109 TestWorkflowService service = new TestWorkflowService ();
110+ service .lockTimeSkipping ("test" );
100111 PollForDecisionTaskResponse decisionTask =
101112 HistoryUtils .generateDecisionTaskWithInitialHistory (
102113 "domain" , "taskList" , "workflowType" , service );
103114
104115 String runId = decisionTask .getWorkflowExecution ().getRunId ();
105116 Decider decider = replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
106- assertEquals (decider , replayDeciderCache .getUnchecked (runId ));
107117
108118 // Act
109119 PollForDecisionTaskResponse decisionTask2 =
110120 HistoryUtils .generateDecisionTaskWithPartialHistoryFromExistingTask (
111121 decisionTask , "domain" , "stickyTaskList" , service );
112- Decider decider2 = replayDeciderCache .getOrCreate (decisionTask2 , this ::createFakeDecider );
122+ Decider decider2 = replayDeciderCache .getOrCreate (decisionTask2 , this ::doNotCreateFakeDecider );
113123
114124 // Assert
115125 // Wait for reporter
116- Thread .sleep (1000 );
117- verify (reporter , times (1 )).reportCounter (MetricsType .STICKY_CACHE_HIT , tags , 2 );
118- assertEquals (decider2 , replayDeciderCache . getUnchecked ( runId ) );
119- assertEquals ( decider2 , decider );
126+ Thread .sleep (500 );
127+ verify (reporter , times (1 )).reportCounter (MetricsType .STICKY_CACHE_HIT , tags , 1 );
128+ assertEquals (decider , decider2 );
129+ service . close ( );
120130 }
121131
122132 @ Test
123- public void whenHistoryIsPartialAndCacheIsEmptyThenCacheEvictedExceptionIsThrown ()
124- throws Exception {
133+ public void whenHistoryIsPartialAndCacheIsEmptyThenExceptionIsThrown () throws Exception {
125134 // Arrange
126135 Map <String , String > tags =
127136 new ImmutableMap .Builder <String , String >(2 )
@@ -139,7 +148,7 @@ public void whenHistoryIsPartialAndCacheIsEmptyThenCacheEvictedExceptionIsThrown
139148
140149 try {
141150 replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
142- } catch (DeciderCache . EvictedException ex ) {
151+ } catch (IllegalArgumentException ex ) {
143152
144153 // Wait for reporter
145154 Thread .sleep (600 );
@@ -148,7 +157,7 @@ public void whenHistoryIsPartialAndCacheIsEmptyThenCacheEvictedExceptionIsThrown
148157 }
149158
150159 fail (
151- "Expected replayDeciderCache.getOrCreate to throw ReplayDeciderCache.EvictedException but no exception was thrown" );
160+ "Expected replayDeciderCache.getOrCreate to throw IllegalArgumentException but no exception was thrown" );
152161 }
153162
154163 @ Test
@@ -208,15 +217,23 @@ public void evictAnyWillNotInvalidateItself() throws Exception {
208217 }
209218
210219 private void assertCacheIsEmpty (DeciderCache cache , String runId ) throws Exception {
211- DeciderCache . EvictedException ex = null ;
220+ Throwable ex = null ;
212221 try {
213- cache .getUnchecked (runId );
214- } catch (DeciderCache .EvictedException e ) {
222+ PollForDecisionTaskResponse decisionTask =
223+ new PollForDecisionTaskResponse ()
224+ .setWorkflowExecution (new WorkflowExecution ().setRunId (runId ));
225+ cache .getOrCreate (decisionTask , this ::doNotCreateFakeDecider );
226+ } catch (AssertionError e ) {
215227 ex = e ;
216228 }
217229 TestCase .assertNotNull (ex );
218230 }
219231
232+ private ReplayDecider doNotCreateFakeDecider (PollForDecisionTaskResponse response ) {
233+ fail ("should not be called" );
234+ return null ;
235+ }
236+
220237 private ReplayDecider createFakeDecider (PollForDecisionTaskResponse response ) {
221238 return new ReplayDecider (
222239 new TestWorkflowService (),
0 commit comments