This is an automated email from the ASF dual-hosted git repository. xiangfu pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push: new 8ce30621ab fixing ValueReaderComparisonTest during to accidentally hitting surrogates (#11681) 8ce30621ab is described below commit 8ce30621abda3458be22cf547220351ac2bd9037 Author: Xiang Fu <xiangfu.1...@gmail.com> AuthorDate: Tue Sep 26 16:01:19 2023 -0700 fixing ValueReaderComparisonTest during to accidentally hitting surrogates (#11681) --- .../readerwriter/ValueReaderComparisonTest.java | 30 ++++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/readerwriter/ValueReaderComparisonTest.java b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/readerwriter/ValueReaderComparisonTest.java index 245c63c953..f788bdb378 100644 --- a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/readerwriter/ValueReaderComparisonTest.java +++ b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/readerwriter/ValueReaderComparisonTest.java @@ -24,8 +24,11 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; +import java.util.Collections; +import java.util.List; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; import org.apache.commons.lang3.tuple.Pair; @@ -44,15 +47,25 @@ import static org.testng.Assert.assertTrue; public class ValueReaderComparisonTest { + // Number of rounds to run the test for, change this number to test locally for catching the corner cases. + private static final int NUM_ROUNDS = 1; + @DataProvider public static Object[] text() { - return Stream.of(Pair.of(ByteOrder.BIG_ENDIAN, true), Pair.of(ByteOrder.LITTLE_ENDIAN, true), - // there is no little endian support for var length at the time of writing - Pair.of(ByteOrder.BIG_ENDIAN, false)).flatMap( - pair -> Stream.of(new AsciiTestCase(pair.getLeft(), pair.getRight()), - new Utf8TestCase(pair.getLeft(), pair.getRight()), - new RandomBytesTextTestCase(pair.getLeft(), pair.getRight()), - new OrderedInvalidUtf8TestCase(pair.getLeft(), pair.getRight()))).toArray(Object[]::new); + return Collections.nCopies(NUM_ROUNDS, + Stream.of( + Pair.of(ByteOrder.BIG_ENDIAN, true), + Pair.of(ByteOrder.LITTLE_ENDIAN, true), + Pair.of(ByteOrder.BIG_ENDIAN, false)) + .flatMap( + pair -> Stream.of( + new AsciiTestCase(pair.getLeft(), pair.getRight()), + new Utf8TestCase(pair.getLeft(), pair.getRight()), + new RandomBytesTextTestCase(pair.getLeft(), pair.getRight()), + new OrderedInvalidUtf8TestCase(pair.getLeft(), pair.getRight()))) + .collect(Collectors.toList())) + .stream() + .flatMap(List::stream).toArray(Object[]::new); } static abstract class TestCase { @@ -142,7 +155,8 @@ public class ValueReaderComparisonTest { char[] chars = strings[i].toCharArray(); for (int j = 0; j < strings[i].length(); j++) { // this test's ordering assumption is not valid for surrogates - if (!Character.isLowSurrogate(chars[j])) { + char nextChar = (char) (chars[j] + 1); + if (!Character.isSurrogate(chars[j]) && !Character.isSurrogate(nextChar)) { chars[j]++; String string = new String(chars); int signum = strings[i].compareTo(string); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org