Skip to content

Commit 6dbc8db

Browse files
dfa1claude
andcommitted
test(integration): bump Rust-oracle fixtures v0.72.0 -> v0.75.0
The correctness oracle (RustWritesJavaReads, RustJavaReaderComparison, PcoFixtureInspection) was pinned to v0.72.0 while the Rust reference is at v0.75.0. The bucket keeps identical fixture file names across versions but rewrites the bytes (verified: dict.vortex ETag differs), so this validates the decoders against the current wire format. All 38 oracle round-trips pass. Also fixes a latent cache bug: the shared /tmp/pco-fixtures cache was keyed by file name only, so a version bump would have silently served stale bytes. The cache path is now keyed by FIXTURE_VERSION. RustJavaReaderComparison downloads into a fresh @tempdir, so it only needed the version string. masked/patched/variant remain absent from the bucket through v0.75.0 (no Rust oracle); doc wording updated accordingly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 033e061 commit 6dbc8db

4 files changed

Lines changed: 26 additions & 14 deletions

File tree

docs/compatibility.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -213,14 +213,16 @@ For unsupported extension ids the inspector falls back to a placeholder cell
213213
correctly via the primitive accessors, callers just have to format the value
214214
themselves.
215215

216-
## S3 Fixture Status (v0.72.0)
216+
## S3 Fixture Status (v0.75.0)
217217

218-
> **Note:** the fixture matrix below is locked to `v0.72.0/`. The Rust reference is
219-
> now at `v0.74.0`; re-run the integration suite against `v0.74.0/arrays/` once
220-
> upstream publishes the corresponding fixture set, and refresh this section.
218+
> **Note:** the oracle round-trip suite is pinned to `v0.75.0/` (current Rust
219+
> release). The bucket reuses identical fixture file names across versions but
220+
> rewrites the bytes, so the `/tmp/pco-fixtures` cache is version-keyed; bump the
221+
> `FIXTURE_VERSION` constant in the integration tests and refresh this section
222+
> when a newer set is published.
221223
222224
Cross-language round-trips tested against Rust-written fixture files hosted at
223-
`s3://vortex-compat-fixtures/v0.72.0/arrays/`.
225+
`s3://vortex-compat-fixtures/v0.75.0/arrays/`.
224226

225227
| Fixture | Status |
226228
|-------------------------------------|--------|
@@ -259,6 +261,6 @@ Cross-language round-trips tested against Rust-written fixture files hosted at
259261
| `pco.vortex` ||
260262
| `clickbench_hits_5k.compact.vortex` ||
261263
| `clickbench_hits_5k.regular.vortex` ||
262-
| `masked.vortex` || No fixture in v0.72.0 |
263-
| `patched.vortex` || No fixture in v0.72.0 |
264-
| `variant.vortex` || No fixture in v0.72.0 |
264+
| `masked.vortex` || No fixture through v0.75.0 |
265+
| `patched.vortex` || No fixture through v0.75.0 |
266+
| `variant.vortex` || No fixture through v0.75.0 |

integration/src/test/java/io/github/dfa1/vortex/integration/PcoFixtureInspectionIntegrationTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@
3737
/// implement first).
3838
class PcoFixtureInspectionIntegrationTest {
3939

40-
private static final String BASE = "https://vortex-compat-fixtures.s3.amazonaws.com/v0.72.0/arrays/";
40+
private static final String FIXTURE_VERSION = "v0.75.0";
41+
private static final String BASE =
42+
"https://vortex-compat-fixtures.s3.amazonaws.com/" + FIXTURE_VERSION + "/arrays/";
4143
private static final String[] FIXTURES = {
4244
"pco.vortex",
4345
"tpch_lineitem.compact.vortex",
@@ -303,8 +305,11 @@ private static String formatDType(DType d) {
303305
}
304306

305307
private static Path downloadIfMissing(Path tmp, String name) throws Exception {
306-
// Reuse /tmp/pco-fixtures cache if present.
307-
Path cached = Path.of("/tmp/pco-fixtures", name);
308+
// Reuse the version-keyed /tmp/pco-fixtures cache if present. The version
309+
// segment matters: the Rust reference rewrites identical file names with
310+
// different bytes across versions, so a version-less cache would serve
311+
// stale bytes after a bump.
312+
Path cached = Path.of("/tmp/pco-fixtures", FIXTURE_VERSION, name);
308313
if (Files.exists(cached)) {
309314
return cached;
310315
}

integration/src/test/java/io/github/dfa1/vortex/integration/RustJavaReaderComparisonIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
class RustJavaReaderComparisonIntegrationTest {
6060

6161
private static final URI BASE =
62-
URI.create("https://vortex-compat-fixtures.s3.amazonaws.com/v0.72.0/arrays/");
62+
URI.create("https://vortex-compat-fixtures.s3.amazonaws.com/v0.75.0/arrays/");
6363

6464
private static final Session SESSION = Session.create();
6565
private static final BufferAllocator ALLOCATOR = ArrowAllocation.rootAllocator();

integration/src/test/java/io/github/dfa1/vortex/integration/RustWritesJavaReadsIntegrationTest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@
5757
/// Cross-compatibility: Rust (JNI) writer → Java reader.
5858
class RustWritesJavaReadsIntegrationTest {
5959

60-
private static final String S3_BASE = "https://vortex-compat-fixtures.s3.amazonaws.com/v0.72.0/arrays/";
60+
private static final String FIXTURE_VERSION = "v0.75.0";
61+
private static final String S3_BASE =
62+
"https://vortex-compat-fixtures.s3.amazonaws.com/" + FIXTURE_VERSION + "/arrays/";
6163

6264
private static final Session SESSION = Session.create();
6365
private static final BufferAllocator ALLOCATOR = ArrowAllocation.rootAllocator();
@@ -218,7 +220,10 @@ private static long[] readJavaLongColumn(Path file, String column) throws IOExce
218220
}
219221

220222
private static Path downloadIfMissing(Path tmp, String name) throws Exception {
221-
Path cached = Path.of("/tmp/pco-fixtures", name);
223+
// Cache is keyed by fixture version: the Rust reference rewrites the same
224+
// file names with different bytes across versions, so a version-less cache
225+
// would silently serve stale bytes after a version bump.
226+
Path cached = Path.of("/tmp/pco-fixtures", FIXTURE_VERSION, name);
222227
if (Files.exists(cached)) {
223228
return cached;
224229
}

0 commit comments

Comments
 (0)