Skip to content

Updates cross-language-testing - #754

Draft
leerho wants to merge 8 commits into
mainfrom
update_cross_language_testing
Draft

Updates cross-language-testing#754
leerho wants to merge 8 commits into
mainfrom
update_cross_language_testing

Conversation

@leerho

@leerho leerho commented Aug 27, 2026

Copy link
Copy Markdown
Member

Build/CI

  • GitHub Actions bumped (checkout v5→v7, setup-java v5→v6, codeql-action v3→v4)
  • serde-compat.yml now manual-trigger only (no more auto push/PR trigger), because DS-TCK is out-of-date.
  • pom.xml: TestNG group properties renamed hyphen→underscore to match UtilityIO constants; added a check_rust_files profile and testng.all_groups aggregate; Javadoc doclint tightened none→all, plus a new internal-javadoc-lint pass (explains most of the src/main doc fixes below)

Cross-language test infrastructure

  • TestUtil.java/TestUtilTest.java deleted, replaced by new UtilityIO.java/UtilityIOTest.java — paths now resolve lazily via system properties with an IDE/local-run fallback, plus a new GroupLanguage enum (JAVA/CPP/GO/RUST) used to parameterize per-sketch checks
  • testng.xml collapsed from 5 hand-maintained blocks down to one, with group filtering now done entirely through Surefire in pom.xml

Per-sketch cross-language tests

Mostly mechanical migration to the new UtilityIO/GroupLanguage pattern, but two are real content changes, not just refactors:

  • ReservoirCrossLanguageTest (the 571-line diff) — previously only generated Java files with zero cross-language verification; this branch adds ~24 new check methods giving Reservoir sketches C++/Go/Java cross-checking for the first time
  • ReqSketchCrossLanguageTest — assertEquals(weight, 2 * n + 1) widened to 2L * n + 1L, a real int-overflow fix

Main source changes

Nearly all Javadoc cleanup driven by the stricter doclint. One real bug fix buried in there:

  • CompactQuantilesDoublesSketch.isReadOnly() now correctly returns true instead of false — a compact (inherently immutable) sketch was misreporting itself as writable

BoundsOnRatios rework

  • BoundsOnRatiosInThetaSketchedSets — fixed a backwards javadoc claim; no behavior change otherwise
  • BoundsOnRatiosInTupleSketchedSets (157-line diff) — added the missing Theta-vs-Tuple and Theta-vs-Tuple/Theta overloads, completing the 2×2 sketch-type combination matrix; new BoundsOnRatiosInTupleSketchedSetsTest.java covers them

Added Simple output metrics

  • Added metrics for files: read, written, and with warnings.
    Because the cross-language testing is becoming so large with multiple languages, these metrics appear at the end of any of the cross-language TestNG group profiles (see end of pom.xml).

Worth flagging

  1. Rust support is plumbing-only — CHECK_RUST_FILES, GroupLanguage.RUST, the Maven profile, and getRustPath() all exist, but no test class actually checks a Rust file yet.

@leerho
leerho marked this pull request as draft August 27, 2026 01:14
leerho added 7 commits August 29, 2026 17:30
1. Running tests with just the jars works, including finding or
specifying the root of the 'serialization_test_data' directory.

2. Fixed some subtle javadoc typos and misstatements

3. Added DocLint testing at two levels of the code.
Added better docs to mvn_clean_install_or_deploy.sh

Added files read, files written and file warnings at end of test suite.
a Maven test:

mvn clean test -Pcheck_java_files -Dprint=true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants