Skip to content

ci: subprocess + http + unix transport SQL-test coverage#1

Merged
rustyconover merged 1 commit into
mainfrom
multi-transport
Jun 24, 2026
Merged

ci: subprocess + http + unix transport SQL-test coverage#1
rustyconover merged 1 commit into
mainfrom
multi-transport

Conversation

@rustyconover

Copy link
Copy Markdown
Contributor

Run the full test/sql suite over all three VGI transports (subprocess, http, unix) on ubuntu + macos in CI.

Changes

  • pyproject: add an http extra re-stating vgi-python[http] (waitress); relock.
  • ci/run-integration.sh: parameterize by $TRANSPORT. http boots vgi-match --http --port 0 --port-file <f> (cwd = stage dir) + injects INSTALL httpfs FROM core; LOAD httpfs;; unix boots vgi-match --unix <sock>. Silent-skip guard + exit-code-preserving cleanup.
  • .github/workflows/ci.yml: integration job → transport × os matrix; install --extra http.
  • ci/README.md: document the three transports.

Streaming note

match_resolve is a TableBufferingFunction that emits its full result (input rows + cluster_id + match_probability) as a single small batch in finalize, so the DrainState(done) cursor is HTTP-safe — output never exceeds the producer batch limit, so no mid-stream continuation occurs. DrainState already extends ArrowSerializableDataclass. No cursor fix needed.

Verified locally over all three transports against haybarn-unittest.

🤖 Generated with Claude Code

Run the test/sql suite over all three VGI transports in CI:

- pyproject: add an `http` optional-dependency extra re-stating
  `vgi-python[http]` (pulls in waitress for `vgi-match --http`); relock so
  uv.lock carries waitress.
- ci/run-integration.sh: parameterize by $TRANSPORT (subprocess|http|unix,
  default subprocess). For http boot `vgi-match --http --port 0 --port-file
  <f>` (cwd = stage dir), poll the port-file, LOCATION = http://127.0.0.1:
  <port>, and inject `INSTALL httpfs FROM core; LOAD httpfs;` after each
  `LOAD vgi;` (http leg only — required or the ATTACH errors and the runner
  silently skips). For unix boot `vgi-match --unix <sock>` and poll the
  socket. cleanup() preserves the real exit code; the run step fails the leg
  on a "All tests were skipped" silent-skip fake-pass.
- .github/workflows/ci.yml: integration job becomes a transport x os matrix
  (subprocess/http/unix on ubuntu/macos); install with `--extra http`.
- ci/README.md: document the three transports.

The match_resolve TableBufferingFunction emits its full result in finalize as
a single small batch (output = input rows + cluster_id + match_probability),
so the DrainState(done) cursor is HTTP-safe — the output never exceeds the
producer batch limit, so there is no mid-stream continuation. DrainState
already extends ArrowSerializableDataclass. No cursor fix needed.

Verified locally over all three transports against haybarn-unittest:
subprocess/unix 12 assertions, http 14 (the 2 injected httpfs statements).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rustyconover rustyconover merged commit f26bd8e into main Jun 24, 2026
10 checks passed
@rustyconover rustyconover deleted the multi-transport branch June 24, 2026 01:45
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.

1 participant