From b2cbb47c736b89dc73a60911c63c8d7d81ecfed2 Mon Sep 17 00:00:00 2001 From: "qasim.khan" Date: Mon, 12 May 2025 10:52:37 +0200 Subject: [PATCH 1/2] add cpc-go cross-serde --- .../org/apache/datasketches/common/TestUtil.java | 6 ++++++ .../cpc/CpcSketchCrossLanguageTest.java | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/test/java/org/apache/datasketches/common/TestUtil.java b/src/test/java/org/apache/datasketches/common/TestUtil.java index bdcb60bf2..35180d003 100644 --- a/src/test/java/org/apache/datasketches/common/TestUtil.java +++ b/src/test/java/org/apache/datasketches/common/TestUtil.java @@ -47,6 +47,7 @@ public final class TestUtil { */ public static final String GENERATE_JAVA_FILES = "generate_java_files"; public static final String CHECK_CPP_FILES = "check_cpp_files"; + public static final String CHECK_GO_FILES = "check_go_files"; public static final String CHECK_CPP_HISTORICAL_FILES = "check_cpp_historical_files"; /** @@ -59,6 +60,11 @@ public final class TestUtil { */ public static final Path cppPath = createPath("serialization_test_data/cpp_generated_files"); + /** + * The full target Path for Go serialized sketches to be tested by Java. + */ + public static final Path goPath = createPath("serialization_test_data/go_generated_files"); + private static Path createPath(final String projectLocalDir) { try { return Files.createDirectories(Paths.get(userDir, projectLocalDir)); diff --git a/src/test/java/org/apache/datasketches/cpc/CpcSketchCrossLanguageTest.java b/src/test/java/org/apache/datasketches/cpc/CpcSketchCrossLanguageTest.java index 19d167f8c..43a14df90 100644 --- a/src/test/java/org/apache/datasketches/cpc/CpcSketchCrossLanguageTest.java +++ b/src/test/java/org/apache/datasketches/cpc/CpcSketchCrossLanguageTest.java @@ -20,8 +20,10 @@ package org.apache.datasketches.cpc; import static org.apache.datasketches.common.TestUtil.CHECK_CPP_FILES; +import static org.apache.datasketches.common.TestUtil.CHECK_GO_FILES; import static org.apache.datasketches.common.TestUtil.GENERATE_JAVA_FILES; import static org.apache.datasketches.common.TestUtil.cppPath; +import static org.apache.datasketches.common.TestUtil.goPath; import static org.apache.datasketches.common.TestUtil.javaPath; import static org.testng.Assert.assertEquals; @@ -78,4 +80,17 @@ public void allFlavors() throws IOException { } } + @Test(groups = {CHECK_GO_FILES}) + public void checkAllFlavorsGo() throws IOException { + final int[] nArr = {0, 100, 200, 2000, 20000}; + final Flavor[] flavorArr = {Flavor.EMPTY, Flavor.SPARSE, Flavor.HYBRID, Flavor.PINNED, Flavor.SLIDING}; + int flavorIdx = 0; + for (int n: nArr) { + final byte[] bytes = Files.readAllBytes(goPath.resolve("cpc_n" + n + "_go.sk")); + final CpcSketch sketch = CpcSketch.heapify(Memory.wrap(bytes)); + assertEquals(sketch.getFlavor(), flavorArr[flavorIdx++]); + assertEquals(sketch.getEstimate(), n, n * 0.02); + } + } + } From 9fcecbead6df6d96c6c34989c8aa94f8d2b5b56b Mon Sep 17 00:00:00 2001 From: "qasim.khan" Date: Mon, 12 May 2025 11:10:21 +0200 Subject: [PATCH 2/2] fix typo --- src/main/java/org/apache/datasketches/cpc/CpcSketch.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/apache/datasketches/cpc/CpcSketch.java b/src/main/java/org/apache/datasketches/cpc/CpcSketch.java index 4ed89dd19..47cd96572 100644 --- a/src/main/java/org/apache/datasketches/cpc/CpcSketch.java +++ b/src/main/java/org/apache/datasketches/cpc/CpcSketch.java @@ -727,7 +727,7 @@ public String toString(final boolean detail) { final double errConst = mergeFlag ? log(2) : sqrt(log(2) / 2.0); final double rse = errConst / Math.sqrt(1 << lgK); final StringBuilder sb = new StringBuilder(); - sb.append("### CPD SKETCH - PREAMBLE:").append(LS); + sb.append("### CPC SKETCH - PREAMBLE:").append(LS); sb.append(" Flavor : ").append(getFlavor()).append(LS); sb.append(" LgK : ").append(lgK).append(LS); sb.append(" Merge Flag : ").append(mergeFlag).append(LS);