30
30
import java .util .SortedMap ;
31
31
import java .util .TreeMap ;
32
32
import java .util .concurrent .atomic .AtomicInteger ;
33
+ import java .util .stream .Collectors ;
33
34
import java .util .stream .Stream ;
34
35
35
36
import org .apache .accumulo .core .Constants ;
@@ -157,7 +158,7 @@ private void waitFor(ZooStore<Manager> store, long txid) throws Exception {
157
158
}
158
159
159
160
@ Test
160
- public void testDefaultInterleaving () throws Exception {
161
+ public void testExecutionOrder () throws Exception {
161
162
162
163
// Connect to the ZooKeeper that MAC is using and insert FATE operations
163
164
final String path = getCluster ().getServerContext ().getZooKeeperRoot () + Constants .ZFATE ;
@@ -214,12 +215,9 @@ public void testDefaultInterleaving() throws Exception {
214
215
215
216
assertTrue (
216
217
subset .values ().stream ().allMatch (v -> new String (v .get (), UTF_8 ).startsWith ("FirstOp" )));
217
- assertEquals (2 , subset .keySet ().stream ()
218
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid )).count ());
219
- assertEquals (2 , subset .keySet ().stream ()
220
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid2 )).count ());
221
- assertEquals (2 , subset .keySet ().stream ()
222
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid3 )).count ());
218
+ checkOperation (subset , txid );
219
+ checkOperation (subset , txid2 );
220
+ checkOperation (subset , txid3 );
223
221
224
222
subset .clear ();
225
223
remaining .set (6 );
@@ -230,12 +228,9 @@ public void testDefaultInterleaving() throws Exception {
230
228
231
229
assertTrue (subset .values ().stream ()
232
230
.allMatch (v -> new String (v .get (), UTF_8 ).startsWith ("SecondOp" )));
233
- assertEquals (2 , subset .keySet ().stream ()
234
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid )).count ());
235
- assertEquals (2 , subset .keySet ().stream ()
236
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid2 )).count ());
237
- assertEquals (2 , subset .keySet ().stream ()
238
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid3 )).count ());
231
+ checkOperation (subset , txid );
232
+ checkOperation (subset , txid2 );
233
+ checkOperation (subset , txid3 );
239
234
240
235
subset .clear ();
241
236
remaining .set (6 );
@@ -246,12 +241,9 @@ public void testDefaultInterleaving() throws Exception {
246
241
247
242
assertTrue (
248
243
subset .values ().stream ().allMatch (v -> new String (v .get (), UTF_8 ).startsWith ("LastOp" )));
249
- assertEquals (2 , subset .keySet ().stream ()
250
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid )).count ());
251
- assertEquals (2 , subset .keySet ().stream ()
252
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid2 )).count ());
253
- assertEquals (2 , subset .keySet ().stream ()
254
- .filter (k -> k .getColumnFamily ().toString ().equals ("TXID:" + txid3 )).count ());
244
+ checkOperation (subset , txid );
245
+ checkOperation (subset , txid2 );
246
+ checkOperation (subset , txid3 );
255
247
256
248
assertFalse (iter .hasNext ());
257
249
@@ -262,4 +254,15 @@ public void testDefaultInterleaving() throws Exception {
262
254
}
263
255
}
264
256
257
+ private void checkOperation (SortedMap <Key ,Value > subset , long txid ) {
258
+ // Extract entries for the tx
259
+ TreeMap <Key ,
260
+ Value > txEntries = subset .entrySet ().stream ()
261
+ .filter (e -> e .getKey ().getColumnFamily ().toString ().equals ("TXID:" + txid )).collect (
262
+ Collectors .toMap (Entry ::getKey , Entry ::getValue , (e1 , e2 ) -> e2 , TreeMap ::new ));
263
+ assertEquals (2 , txEntries .size ());
264
+ assertTrue (new String (txEntries .firstEntry ().getValue ().get (), UTF_8 ).endsWith ("::isReady" ));
265
+ assertTrue (new String (txEntries .lastEntry ().getValue ().get (), UTF_8 ).endsWith ("::call" ));
266
+ }
267
+
265
268
}
0 commit comments