Skip to content

Commit 5afc803

Browse files
authored
Improve test clarity and execution time. (#1743)
JAVA-5898
1 parent 4eee9f6 commit 5afc803

File tree

2 files changed

+193
-115
lines changed

2 files changed

+193
-115
lines changed

driver-core/src/test/unit/com/mongodb/internal/connection/ByteBufferBsonInputTest.java

Lines changed: 80 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -54,37 +54,68 @@ class ByteBufferBsonInputTest {
5454
private static final List<Integer> ALL_CODE_POINTS_EXCLUDING_SURROGATES = Stream.concat(
5555
range(1, MIN_HIGH_SURROGATE).boxed(),
5656
rangeClosed(MAX_LOW_SURROGATE + 1, MAX_CODE_POINT).boxed())
57-
.filter(i -> i < 128 || i % 10 == 0) // only subset of code points to speed up testing
57+
.filter(i -> i < 128 || i % 30 == 0) // only subset of code points to speed up testing
5858
.collect(toList());
5959

6060
static Stream<BufferProvider> bufferProviders() {
6161
return Stream.of(
62-
size -> new NettyByteBuf(PooledByteBufAllocator.DEFAULT.directBuffer(size)),
63-
size -> new NettyByteBuf(PooledByteBufAllocator.DEFAULT.heapBuffer(size)),
64-
new PowerOfTwoBufferPool(),
65-
size -> new ByteBufNIO(ByteBuffer.wrap(new byte[size + 5], 2, size).slice()), //different array offsets
66-
size -> new ByteBufNIO(ByteBuffer.wrap(new byte[size + 4], 3, size).slice()), //different array offsets
67-
size -> new ByteBufNIO(ByteBuffer.allocateDirect(size)),
68-
size -> new ByteBufNIO(ByteBuffer.allocate(size)) {
69-
@Override
70-
public boolean isBackedByArray() {
71-
return false;
72-
}
73-
74-
@Override
75-
public byte[] array() {
76-
return Assertions.fail("array() is called, when isBackedByArray() returns false");
77-
}
78-
79-
@Override
80-
public int arrayOffset() {
81-
return Assertions.fail("arrayOffset() is called, when isBackedByArray() returns false");
82-
}
83-
}
62+
createBufferProvider(
63+
"NettyByteBuf based on PooledByteBufAllocator.DEFAULT.directBuffer",
64+
size -> new NettyByteBuf(PooledByteBufAllocator.DEFAULT.directBuffer(size))
65+
),
66+
createBufferProvider(
67+
"NettyByteBuf based on PooledByteBufAllocator.DEFAULT.heapBuffer",
68+
size -> new NettyByteBuf(PooledByteBufAllocator.DEFAULT.heapBuffer(size))
69+
),
70+
createBufferProvider(
71+
"PowerOfTwoBufferPool",
72+
new PowerOfTwoBufferPool()
73+
),
74+
createBufferProvider(
75+
"ByteBufNIO based on ByteBuffer with arrayOffset() -> 2",
76+
size -> new ByteBufNIO(ByteBuffer.wrap(new byte[size + 5], 2, size).slice())
77+
),
78+
createBufferProvider(
79+
"ByteBufNIO based on ByteBuffer with arrayOffset() -> 3,",
80+
size -> new ByteBufNIO(ByteBuffer.wrap(new byte[size + 4], 3, size).slice())
81+
),
82+
createBufferProvider(
83+
"ByteBufNIO emulating direct ByteBuffer",
84+
size -> new ByteBufNIO(ByteBuffer.allocate(size)) {
85+
@Override
86+
public boolean isBackedByArray() {
87+
return false;
88+
}
89+
90+
@Override
91+
public byte[] array() {
92+
return Assertions.fail("array() is called, when isBackedByArray() returns false");
93+
}
94+
95+
@Override
96+
public int arrayOffset() {
97+
return Assertions.fail("arrayOffset() is called, when isBackedByArray() returns false");
98+
}
99+
}
100+
)
84101
);
85102
}
86103

87-
@ParameterizedTest
104+
private static BufferProvider createBufferProvider(final String bufferDescription, final BufferProvider bufferProvider) {
105+
return new BufferProvider() {
106+
@Override
107+
public ByteBuf getBuffer(final int size) {
108+
return bufferProvider.getBuffer(size);
109+
}
110+
111+
@Override
112+
public String toString() {
113+
return bufferDescription;
114+
}
115+
};
116+
}
117+
118+
@ParameterizedTest(name = "should read empty string. BufferProvider={0}")
88119
@MethodSource("bufferProviders")
89120
void shouldReadEmptyString(final BufferProvider bufferProvider) {
90121
// given
@@ -101,7 +132,7 @@ void shouldReadEmptyString(final BufferProvider bufferProvider) {
101132
}
102133
}
103134

104-
@ParameterizedTest
135+
@ParameterizedTest(name = "should read empty CString. BufferProvider={0}")
105136
@MethodSource("bufferProviders")
106137
void shouldReadEmptyCString(final BufferProvider bufferProvider) {
107138
// given
@@ -116,7 +147,7 @@ void shouldReadEmptyCString(final BufferProvider bufferProvider) {
116147
}
117148
}
118149

119-
@ParameterizedTest
150+
@ParameterizedTest(name = "should read invalid one byte string. BufferProvider={0}")
120151
@MethodSource("bufferProviders")
121152
void shouldReadInvalidOneByteString(final BufferProvider bufferProvider) {
122153
ByteBuf buffer = allocateAndWriteToBuffer(bufferProvider, new byte[]{2, 0, 0, 0, (byte) 0xFF, 0});
@@ -131,7 +162,7 @@ void shouldReadInvalidOneByteString(final BufferProvider bufferProvider) {
131162
}
132163
}
133164

134-
@ParameterizedTest
165+
@ParameterizedTest(name = "should read invalid one byte CString. BufferProvider={0}")
135166
@MethodSource("bufferProviders")
136167
void shouldReadInvalidOneByteCString(final BufferProvider bufferProvider) {
137168
ByteBuf buffer = allocateAndWriteToBuffer(bufferProvider, new byte[]{-0x01, 0});
@@ -147,7 +178,7 @@ void shouldReadInvalidOneByteCString(final BufferProvider bufferProvider) {
147178
}
148179

149180

150-
@ParameterizedTest
181+
@ParameterizedTest(name = "should read string up to buffer limit. BufferProvider={0}")
151182
@MethodSource("bufferProviders")
152183
void shouldReadStringUptoBufferLimit(final BufferProvider bufferProvider) {
153184
// given
@@ -171,7 +202,7 @@ void shouldReadStringUptoBufferLimit(final BufferProvider bufferProvider) {
171202
}
172203
}
173204

174-
@ParameterizedTest
205+
@ParameterizedTest(name = "should read string with more data in buffer. BufferProvider={0}")
175206
@MethodSource("bufferProviders")
176207
void shouldReadStringWithMoreDataInBuffer(final BufferProvider bufferProvider) throws IOException {
177208
// given
@@ -200,7 +231,7 @@ void shouldReadStringWithMoreDataInBuffer(final BufferProvider bufferProvider) t
200231
}
201232
}
202233

203-
@ParameterizedTest
234+
@ParameterizedTest(name = "should read multiple strings within buffer. BufferProvider={0}")
204235
@MethodSource("bufferProviders")
205236
void shouldReadMultipleStringsWithinBuffer(final BufferProvider bufferProvider) throws IOException {
206237
// given
@@ -252,7 +283,7 @@ void shouldReadMultipleStringsWithinBuffer(final BufferProvider bufferProvider)
252283
}
253284
}
254285

255-
@ParameterizedTest
286+
@ParameterizedTest(name = "should read consecutive multiple strings within buffer. BufferProvider={0}")
256287
@MethodSource("bufferProviders")
257288
void shouldReadConsecutiveMultipleStringsWithinBuffer(final BufferProvider bufferProvider) throws IOException {
258289
// given
@@ -302,7 +333,7 @@ void shouldReadConsecutiveMultipleStringsWithinBuffer(final BufferProvider buffe
302333
}
303334
}
304335

305-
@ParameterizedTest
336+
@ParameterizedTest(name = "should read consecutive multiple CStrings within buffer. BufferProvider={0}")
306337
@MethodSource("bufferProviders")
307338
void shouldReadConsecutiveMultipleCStringsWithinBuffer(final BufferProvider bufferProvider) throws IOException {
308339
// given
@@ -352,7 +383,7 @@ void shouldReadConsecutiveMultipleCStringsWithinBuffer(final BufferProvider buff
352383
}
353384
}
354385

355-
@ParameterizedTest
386+
@ParameterizedTest(name = "should read multiple CStrings within buffer. BufferProvider={0}")
356387
@MethodSource("bufferProviders")
357388
void shouldReadMultipleCStringsWithinBuffer(final BufferProvider bufferProvider) throws IOException {
358389
// given
@@ -409,7 +440,7 @@ void shouldReadMultipleCStringsWithinBuffer(final BufferProvider bufferProvider)
409440
}
410441
}
411442

412-
@ParameterizedTest
443+
@ParameterizedTest(name = "should read string within buffer. BufferProvider={0}")
413444
@MethodSource("bufferProviders")
414445
void shouldReadStringWithinBuffer(final BufferProvider bufferProvider) throws IOException {
415446
// given
@@ -441,7 +472,7 @@ void shouldReadStringWithinBuffer(final BufferProvider bufferProvider) throws IO
441472
}
442473
}
443474

444-
@ParameterizedTest
475+
@ParameterizedTest(name = "should read CString up to buffer limit. BufferProvider={0}")
445476
@MethodSource("bufferProviders")
446477
void shouldReadCStringUptoBufferLimit(final BufferProvider bufferProvider) {
447478
// given
@@ -465,7 +496,7 @@ void shouldReadCStringUptoBufferLimit(final BufferProvider bufferProvider) {
465496
}
466497
}
467498

468-
@ParameterizedTest
499+
@ParameterizedTest(name = "should read CString with more data in buffer. BufferProvider={0}")
469500
@MethodSource("bufferProviders")
470501
void shouldReadCStringWithMoreDataInBuffer(final BufferProvider bufferProvider) throws IOException {
471502
// given
@@ -494,7 +525,7 @@ void shouldReadCStringWithMoreDataInBuffer(final BufferProvider bufferProvider)
494525
}
495526
}
496527

497-
@ParameterizedTest
528+
@ParameterizedTest(name = "should read CString within buffer. BufferProvider={0}")
498529
@MethodSource("bufferProviders")
499530
void shouldReadCStringWithingBuffer(final BufferProvider bufferProvider) throws IOException {
500531
// given
@@ -526,7 +557,7 @@ void shouldReadCStringWithingBuffer(final BufferProvider bufferProvider) throws
526557
}
527558
}
528559

529-
@ParameterizedTest
560+
@ParameterizedTest(name = "should throw if CString is not null terminated skip. BufferProvider={0}")
530561
@MethodSource("bufferProviders")
531562
void shouldThrowIfCStringIsNotNullTerminatedSkip(final BufferProvider bufferProvider) {
532563
// given
@@ -553,7 +584,7 @@ public static Stream<Arguments> nonNullTerminatedStringsWithBuffers() {
553584
return arguments.stream();
554585
}
555586

556-
@ParameterizedTest
587+
@ParameterizedTest(name = "should throw if string is not null terminated. Parameters: nonNullTerminatedString={0}, bufferProvider={1}")
557588
@MethodSource("nonNullTerminatedStringsWithBuffers")
558589
void shouldThrowIfStringIsNotNullTerminated(final byte[] nonNullTerminatedString, final BufferProvider bufferProvider) {
559590
// given
@@ -579,7 +610,7 @@ public static Stream<Arguments> nonNullTerminatedCStringsWithBuffers() {
579610
return arguments.stream();
580611
}
581612

582-
@ParameterizedTest
613+
@ParameterizedTest(name = "should throw if CString is not null terminated. Parameters: nonNullTerminatedCString={0}, bufferProvider={1}")
583614
@MethodSource("nonNullTerminatedCStringsWithBuffers")
584615
void shouldThrowIfCStringIsNotNullTerminated(final byte[] nonNullTerminatedCString, final BufferProvider bufferProvider) {
585616
// given
@@ -592,7 +623,7 @@ void shouldThrowIfCStringIsNotNullTerminated(final byte[] nonNullTerminatedCStri
592623
}
593624

594625

595-
@ParameterizedTest
626+
@ParameterizedTest(name = "should throw if one byte string is not null terminated. BufferProvider={0}")
596627
@MethodSource("bufferProviders")
597628
void shouldThrowIfOneByteStringIsNotNullTerminated(final BufferProvider bufferProvider) {
598629
// given
@@ -604,7 +635,7 @@ void shouldThrowIfOneByteStringIsNotNullTerminated(final BufferProvider bufferPr
604635
}
605636
}
606637

607-
@ParameterizedTest
638+
@ParameterizedTest(name = "should throw if one byte CString is not null terminated. BufferProvider={0}")
608639
@MethodSource("bufferProviders")
609640
void shouldThrowIfOneByteCStringIsNotNullTerminated(final BufferProvider bufferProvider) {
610641
// given
@@ -616,7 +647,7 @@ void shouldThrowIfOneByteCStringIsNotNullTerminated(final BufferProvider bufferP
616647
}
617648
}
618649

619-
@ParameterizedTest
650+
@ParameterizedTest(name = "should throw if length of bson string is not positive. BufferProvider={0}")
620651
@MethodSource("bufferProviders")
621652
void shouldThrowIfLengthOfBsonStringIsNotPositive(final BufferProvider bufferProvider) {
622653
// given
@@ -628,7 +659,7 @@ void shouldThrowIfLengthOfBsonStringIsNotPositive(final BufferProvider bufferPro
628659
}
629660
}
630661

631-
public static Stream<Arguments> shouldSkipCStringWhenMultipleNullTerminationPresent() {
662+
public static Stream<Arguments> shouldSkipCStringWhenMultipleNullTerminatorsPresent() {
632663
List<Arguments> arguments = new ArrayList<>();
633664
List<BufferProvider> collect = bufferProviders().collect(toList());
634665
for (BufferProvider bufferProvider : collect) {
@@ -644,9 +675,9 @@ public static Stream<Arguments> shouldSkipCStringWhenMultipleNullTerminationPres
644675
return arguments.stream();
645676
}
646677

647-
@ParameterizedTest
648-
@MethodSource()
649-
void shouldSkipCStringWhenMultipleNullTerminationPresent(final byte[] cStringBytes, final BufferProvider bufferProvider) {
678+
@ParameterizedTest(name = "should skip CString when multiple null terminatiors present. Parameters: cStringBytes={0}, bufferProvider={1}")
679+
@MethodSource
680+
void shouldSkipCStringWhenMultipleNullTerminatorsPresent(final byte[] cStringBytes, final BufferProvider bufferProvider) {
650681
// given
651682
ByteBuf buffer = allocateAndWriteToBuffer(bufferProvider, cStringBytes);
652683
try (ByteBufferBsonInput bufferInput = new ByteBufferBsonInput(buffer)) {
@@ -660,9 +691,9 @@ void shouldSkipCStringWhenMultipleNullTerminationPresent(final byte[] cStringByt
660691
}
661692
}
662693

663-
@ParameterizedTest
694+
@ParameterizedTest(name = "should read skip CString when multiple null terminators present within buffer. BufferProvider={0}")
664695
@MethodSource("bufferProviders")
665-
void shouldReadSkipCStringWhenMultipleNullTerminationPresentWithinBuffer(final BufferProvider bufferProvider) {
696+
void shouldReadSkipCStringWhenMultipleNullTerminatorPresentWithinBuffer(final BufferProvider bufferProvider) {
666697
// given
667698
byte[] input = {4, 0, 0, 0, 0x4a, 0x61, 0x76, 0x61, 0, 8, 0, 0, 0};
668699
ByteBuf buffer = allocateAndWriteToBuffer(bufferProvider, input);

0 commit comments

Comments
 (0)