18
18
package com .uber .cadence .internal .replay ;
19
19
20
20
import 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 .*;
23
22
import static org .mockito .Matchers .anyInt ;
24
23
import static org .mockito .Matchers .eq ;
25
24
import static org .mockito .Mockito .*;
26
25
27
26
import com .uber .cadence .HistoryEvent ;
28
27
import com .uber .cadence .PollForDecisionTaskResponse ;
28
+ import com .uber .cadence .WorkflowExecution ;
29
29
import com .uber .cadence .WorkflowQuery ;
30
30
import com .uber .cadence .internal .metrics .MetricsTag ;
31
31
import com .uber .cadence .internal .metrics .MetricsType ;
@@ -61,29 +61,39 @@ public void whenHistoryIsFullNewReplayDeciderIsReturnedAndCached_InitiallyEmpty(
61
61
Decider decider = replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
62
62
63
63
// Assert
64
- assertEquals (decider , replayDeciderCache .getUnchecked ( runId ));
64
+ assertNotEquals (decider , replayDeciderCache .getOrCreate ( decisionTask , this :: createFakeDecider ));
65
65
}
66
66
67
67
@ Test
68
68
public void whenHistoryIsFullNewReplayDeciderIsReturned_InitiallyCached () throws Exception {
69
+ TestWorkflowService service = new TestWorkflowService ();
70
+
69
71
// Arrange
70
72
DeciderCache replayDeciderCache = new DeciderCache (10 , NoopScope .getInstance ());
71
- PollForDecisionTaskResponse decisionTask =
72
- HistoryUtils .generateDecisionTaskWithInitialHistory ();
73
+ PollForDecisionTaskResponse decisionTask1 =
74
+ HistoryUtils .generateDecisionTaskWithInitialHistory (
75
+ "domain" , "taskList" , "workflowType" , service );
73
76
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 ));
77
86
78
87
// Act
79
- Decider decider2 = replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
88
+ Decider decider2 = replayDeciderCache .getOrCreate (decisionTask2 , this ::createFakeDecider );
80
89
81
90
// 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 ();
84
94
}
85
95
86
- @ Test
96
+ @ Test ( timeout = 2000 )
87
97
public void whenHistoryIsPartialCachedEntryIsReturned () throws Exception {
88
98
// Arrange
89
99
Map <String , String > tags =
@@ -97,31 +107,30 @@ public void whenHistoryIsPartialCachedEntryIsReturned() throws Exception {
97
107
98
108
DeciderCache replayDeciderCache = new DeciderCache (10 , scope );
99
109
TestWorkflowService service = new TestWorkflowService ();
110
+ service .lockTimeSkipping ("test" );
100
111
PollForDecisionTaskResponse decisionTask =
101
112
HistoryUtils .generateDecisionTaskWithInitialHistory (
102
113
"domain" , "taskList" , "workflowType" , service );
103
114
104
115
String runId = decisionTask .getWorkflowExecution ().getRunId ();
105
116
Decider decider = replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
106
- assertEquals (decider , replayDeciderCache .getUnchecked (runId ));
107
117
108
118
// Act
109
119
PollForDecisionTaskResponse decisionTask2 =
110
120
HistoryUtils .generateDecisionTaskWithPartialHistoryFromExistingTask (
111
121
decisionTask , "domain" , "stickyTaskList" , service );
112
- Decider decider2 = replayDeciderCache .getOrCreate (decisionTask2 , this ::createFakeDecider );
122
+ Decider decider2 = replayDeciderCache .getOrCreate (decisionTask2 , this ::doNotCreateFakeDecider );
113
123
114
124
// Assert
115
125
// 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 ( );
120
130
}
121
131
122
132
@ Test
123
- public void whenHistoryIsPartialAndCacheIsEmptyThenCacheEvictedExceptionIsThrown ()
124
- throws Exception {
133
+ public void whenHistoryIsPartialAndCacheIsEmptyThenExceptionIsThrown () throws Exception {
125
134
// Arrange
126
135
Map <String , String > tags =
127
136
new ImmutableMap .Builder <String , String >(2 )
@@ -139,7 +148,7 @@ public void whenHistoryIsPartialAndCacheIsEmptyThenCacheEvictedExceptionIsThrown
139
148
140
149
try {
141
150
replayDeciderCache .getOrCreate (decisionTask , this ::createFakeDecider );
142
- } catch (DeciderCache . EvictedException ex ) {
151
+ } catch (IllegalArgumentException ex ) {
143
152
144
153
// Wait for reporter
145
154
Thread .sleep (600 );
@@ -148,7 +157,7 @@ public void whenHistoryIsPartialAndCacheIsEmptyThenCacheEvictedExceptionIsThrown
148
157
}
149
158
150
159
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" );
152
161
}
153
162
154
163
@ Test
@@ -208,15 +217,23 @@ public void evictAnyWillNotInvalidateItself() throws Exception {
208
217
}
209
218
210
219
private void assertCacheIsEmpty (DeciderCache cache , String runId ) throws Exception {
211
- DeciderCache . EvictedException ex = null ;
220
+ Throwable ex = null ;
212
221
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 ) {
215
227
ex = e ;
216
228
}
217
229
TestCase .assertNotNull (ex );
218
230
}
219
231
232
+ private ReplayDecider doNotCreateFakeDecider (PollForDecisionTaskResponse response ) {
233
+ fail ("should not be called" );
234
+ return null ;
235
+ }
236
+
220
237
private ReplayDecider createFakeDecider (PollForDecisionTaskResponse response ) {
221
238
return new ReplayDecider (
222
239
new TestWorkflowService (),
0 commit comments