Skip to content

Row-storage interop test: replay tests skip without fixtures, fixtures are oversized, and the docs claim a JS replay that does not exist #1491

Open

Description

@KonstantinMirin

Problem

#1481 made the live JS-to-Python test run in CI and fail (not skip) when the JS build is missing. Four smaller points from the review of #1470 remain. The comment on #1470 lists them; this issue tracks them:

  1. The two replay tests pytest.skip when the fixture file is missing, so deleting tests/fixtures/reporting-row-storage-interop-v1/ leaves the suite green.
  2. Each fixture is 12,926 lines (about 164 KB) for 12 row sets, 12 chunks, 3 bodies, and 6 objects, written with indent=1.
  3. Fixture regeneration runs inside the live test behind ADCP_UPDATE_INTEROP_FIXTURES=1, so a test body writes files into the source tree.
  4. docs/reporting-row-storage.md says the JavaScript SDK can replay python-written.json; there is no such test in adcp-client, and the same paragraph still says the live test "skips" without Node, which is no longer true under ADCP_REQUIRE_JS_INTEROP=1.

Evidence

All references are to main at 47084e83a; the JS SDK is adcp-client main at 7c7f730f4.

  • tests/conformance/reporting/test_reporting_row_storage_interop_pg.py:144-145 and :161-162:

    if not path.exists():
        pytest.skip("interop fixtures have not been generated")
  • test_reporting_row_storage_interop_pg.py:129-137: inside test_one_database_and_one_bucket_in_both_directions, if os.environ.get("ADCP_UPDATE_INTEROP_FIXTURES") == "1": writes js-written.json and python-written.json with json.dumps(..., indent=1, sort_keys=True).

  • tests/fixtures/reporting-row-storage-interop-v1/js-written.json and python-written.json: 12,926 lines each; state holds row_sets 12, row_chunks 12, chunk_bodies 3, objects 6; expected holds 12 entries.

  • docs/reporting-row-storage.md:363: "It needs Node and a built adcp-client checkout (npm ci && npm run build); without them it skips."

  • docs/reporting-row-storage.md:366: "The JavaScript SDK can replay python-written.json the same way." A search of adcp-client test/ and src/ at 7c7f730f4 for python-written or interop-v1 finds nothing.

  • .github/workflows/ci.yml:298-369: the reporting-js-interop lane sets ADCP_REQUIRE_JS_INTEROP: "1" and runs the whole module, so the replay tests run there too, but only the live test is required to not skip.

Suggested fix

  1. Replace the two pytest.skip calls with a hard failure (the fixtures are committed, so their absence is a repository defect, not an environment one).
  2. Shrink the fixtures to what replay_state reads, and write them with separators=(",", ":") or indent=None; a few hundred lines each is enough for 12 row sets.
  3. Move regeneration into a script (for example scripts/regenerate_row_storage_interop_fixtures.py) that invokes the same driver, and remove the ADCP_UPDATE_INTEROP_FIXTURES branch from the test.
  4. In docs/reporting-row-storage.md, remove the sentence about the JavaScript SDK replaying python-written.json (or add that test to adcp-client and link it), and say that CI runs the live test with ADCP_REQUIRE_JS_INTEROP=1.

Introduced in #1470; CI lane added in #1481.

Activity

  1. added
    documentationImprovements or additions to documentation
    enhancementNew feature or request
    pythonPull requests that update python code
    on Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or requestpythonPull requests that update python code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions