Skip to content

Commit 9173245

Browse files
s1ckknutwalker
authored andcommitted
Handle duplicate mappings in tests
1 parent 3dfb050 commit 9173245

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

core/src/test/java/org/neo4j/gds/core/utils/paged/ShardedByteArrayLongMapTest.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.nio.charset.StandardCharsets;
3737
import java.util.Arrays;
3838
import java.util.Optional;
39+
import java.util.concurrent.atomic.AtomicInteger;
3940

4041
import 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

Comments
 (0)