3636import java .nio .charset .StandardCharsets ;
3737import java .util .Arrays ;
3838import java .util .Optional ;
39+ import java .util .concurrent .atomic .AtomicInteger ;
3940
4041import static org .assertj .core .api .Assertions .assertThat ;
4142
@@ -63,12 +64,16 @@ void addSingleNode() {
6364 @ Property
6465 void addNodes (@ ForAll ("nodes" ) @ Size (100 ) byte [][] nodes ) {
6566 var builder = ShardedByteArrayLongMap .builder (new Concurrency (1 ));
67+ var size = 0 ;
6668 for (byte [] node : nodes ) {
67- builder .addNode (node );
69+ if (builder .addNode (node ) >= 0 ) {
70+ size ++;
71+ }
72+
6873 }
6974 var map = builder .build ();
7075
71- assertThat (map .size ()).isEqualTo (nodes . length );
76+ assertThat (map .size ()).isEqualTo (size );
7277 for (byte [] node : nodes ) {
7378 assertThat (map .toOriginalNodeId (map .toMappedNodeId (node ))).isEqualTo (node );
7479 }
@@ -77,12 +82,15 @@ void addNodes(@ForAll("nodes") @Size(100) byte[][] nodes) {
7782 @ Property
7883 void addNodesDifferentObject (@ ForAll ("nodes" ) @ Size (100 ) byte [][] nodes ) {
7984 var builder = ShardedByteArrayLongMap .builder (new Concurrency (1 ));
85+ var size = 0 ;
8086 for (byte [] node : nodes ) {
81- builder .addNode (node );
87+ if (builder .addNode (node ) >= 0 ) {
88+ size ++;
89+ }
8290 }
8391 var map = builder .build ();
8492
85- assertThat (map .size ()).isEqualTo (nodes . length );
93+ assertThat (map .size ()).isEqualTo (size );
8694 for (byte [] node : nodes ) {
8795 // Ensure that hashCode and equals work correctly for byte arrays
8896 // with same elements, but different objects.
@@ -144,6 +152,7 @@ void contains() {
144152 void testAddingMultipleNodesInParallel (@ ForAll ("nodes" ) @ Size (10000 ) byte [][] originalIds ) {
145153 var concurrency = new Concurrency (4 );
146154 var builder = ShardedByteArrayLongMap .builder (concurrency );
155+ var size = new AtomicInteger (0 );
147156
148157 var tasks = PartitionUtils .rangePartition (
149158 concurrency ,
@@ -152,7 +161,9 @@ void testAddingMultipleNodesInParallel(@ForAll("nodes") @Size(10000) byte[][] or
152161 byte [][] batch = new byte [(int ) partition .nodeCount ()][];
153162 System .arraycopy (originalIds , (int ) partition .startNode (), batch , 0 , batch .length );
154163 for (byte [] node : batch ) {
155- builder .addNode (node );
164+ if (builder .addNode (node ) >= 0 ) {
165+ size .incrementAndGet ();
166+ }
156167 }
157168 },
158169 Optional .of (100 )
@@ -162,11 +173,9 @@ void testAddingMultipleNodesInParallel(@ForAll("nodes") @Size(10000) byte[][] or
162173
163174 var map = builder .build ();
164175
165- assertThat (map .size ()).isEqualTo (originalIds .length );
166- long [] mappedIds = new long [originalIds .length ];
167- for (int i = 0 ; i < map .size (); i ++) {
168- mappedIds [i ] = map .toMappedNodeId (originalIds [i ]);
176+ assertThat (map .size ()).isEqualTo (size .get ());
177+ for (byte [] node : originalIds ) {
178+ assertThat (map .toOriginalNodeId (map .toMappedNodeId (node ))).isEqualTo (node );
169179 }
170- assertThat (mappedIds ).doesNotHaveDuplicates ();
171180 }
172181}
0 commit comments