11
11
import org .elasticsearch .action .bulk .TxID ;
12
12
import org .elasticsearch .test .ESTestCase ;
13
13
14
+ import java .util .Map ;
14
15
import java .util .Set ;
15
16
import java .util .stream .Collectors ;
16
17
import java .util .stream .IntStream ;
17
18
19
+ import static org .hamcrest .Matchers .empty ;
18
20
import static org .hamcrest .Matchers .equalTo ;
21
+ import static org .hamcrest .Matchers .is ;
19
22
20
23
public class ShardTransactionRegistryTests extends ESTestCase {
21
24
private final ShardTransactionRegistry registry = new ShardTransactionRegistry ();
@@ -42,6 +45,37 @@ public void testRegisterAndUnregister() {
42
45
assertThat (registry .size (), equalTo (0 ));
43
46
}
44
47
48
+ public void testPrepare () {
49
+ Set <String > ids1 = ids (0 , 100 );
50
+ Set <String > ids2 = ids (50 , 150 );
51
+ Set <String > ids3 = ids (100 , 200 );
52
+ Set <String > ids4 = ids (200 , 300 );
53
+
54
+ TxID txID1 = TxID .create ();
55
+ TxID txID2 = TxID .create ();
56
+ TxID txID3 = TxID .create ();
57
+ TxID txID4 = TxID .create ();
58
+ registry .registerTransaction (txID1 , ids1 );
59
+ registry .registerTransaction (txID2 , ids2 );
60
+ registry .registerTransaction (txID3 , ids3 );
61
+ registry .registerTransaction (txID4 , ids4 );
62
+
63
+ Map <TxID , Boolean > prepared1 = registry .prepare (txID1 );
64
+ Map <TxID , Boolean > prepared2 = registry .prepare (txID2 );
65
+ Map <TxID , Boolean > prepared3 = registry .prepare (txID3 );
66
+ Map <TxID , Boolean > prepared4 = registry .prepare (txID4 );
67
+
68
+ assertThat (prepared1 .entrySet ().size (), equalTo (1 ));
69
+ assertThat (prepared1 .get (txID2 ), is (true ));
70
+ assertThat (prepared2 .entrySet ().size (), equalTo (2 ));
71
+ assertThat (prepared2 .get (txID1 ), is (false ));
72
+ assertThat (prepared2 .get (txID3 ), is (true ));
73
+ assertThat (prepared3 .entrySet ().size (), equalTo (1 ));
74
+ assertThat (prepared3 .get (txID2 ), is (false ));
75
+ assertThat (prepared4 .entrySet (), empty ());
76
+ // need some more around already conflicted but now removed txs
77
+ }
78
+
45
79
private Set <String > ids (int startInclusive , int endExclusive ) {
46
80
return IntStream .range (startInclusive , endExclusive ).mapToObj (String ::valueOf ).collect (Collectors .toSet ());
47
81
}
0 commit comments