diff --git a/pom.xml b/pom.xml index 84e032947..32943cdbb 100644 --- a/pom.xml +++ b/pom.xml @@ -90,6 +90,7 @@ under the License. generate_java_files check_cpp_files + check_go_files check_cpp_historical_files @@ -623,7 +624,7 @@ under the License. maven-surefire-plugin ${testng.generate-java-files} - ${testng.check-cpp-files},${testng.check-cpp-historical-files} + ${testng.check-cpp-files},${testng.check-go-files},${testng.check-cpp-historical-files} @@ -642,7 +643,26 @@ under the License. maven-surefire-plugin ${testng.check-cpp-files} - ${testng.generate-java-files},${testng.check-cpp-historical-files} + ${testng.generate-java-files},${testng.check-go-files},${testng.check-cpp-historical-files} + + + + + + + + + check-go-files + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + ${testng.check-cpp-files} + ${testng.generate-java-files},${testng.check-cpp-files},${testng.check-cpp-historical-files} @@ -661,7 +681,7 @@ under the License. maven-surefire-plugin ${testng.check-cpp-historical-files} - ${testng.generate-java-files},${testng.check-cpp-files} + ${testng.generate-java-files},${testng.check-go-files},${testng.check-cpp-files} 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); 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); + } + } + }