ci: multi-transport SQL suite (subprocess + http + unix)#1
Merged
Conversation
Parameterize ci/run-integration.sh by a TRANSPORT env var (subprocess|http|unix, default subprocess) and turn the CI integration job into a transport × os matrix, so the same test/sql/*.test suite exercises all three VGI transports the vgi extension supports (selected by the ATTACH LOCATION string). - http: boot `vgi-docgen --http --port 0 --port-file <f>` with cwd = the stage dir (resolves the staged test/sql/data/*.docx fixtures), poll the port-file, ATTACH at the bare `http://127.0.0.1:<port>`. Inject `INSTALL httpfs FROM core; LOAD httpfs;` after each `LOAD vgi;` on the http leg only (the HTTP transport rides DuckDB's httpfs). Add a `http` extra (`vgi-python[http]` -> waitress) and install it in the integration job via `uv sync --extra dev --extra http`. - unix: boot `vgi-docgen --unix <sock>` (cwd = stage dir), poll for the socket, ATTACH at `unix://<sock>`. - Silent-skip guard: the sqllogictest runner SKIPS (exit 0) any test whose error contains "HTTP"/"Unable to connect", so a broken http leg would fake a green. The run step captures the report and fails on "All tests were skipped". - Cleanup trap captures `$?` first and returns it, so an empty-var check can't clobber a passing exit code. The buffering docgen_merge function (TableBufferingFunction, DrainState already an ArrowSerializableDataclass, single-row BLOB output) is HTTP-safe as-is — no streaming-state change needed. All three transports verified green locally with haybarn-unittest. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Run the
test/sql/*.testsuite over all three VGI transports the vgi extension supports (subprocess/stdio, HTTP, AF_UNIX), selected by the ATTACH LOCATION string.What changed
ci/run-integration.shparameterized byTRANSPORT(subprocess|http|unix, default subprocess); boots the worker out-of-band for http (--http --port 0 --port-file) and unix (--unix <sock>) with cwd = the stage dir so the stagedtest/sql/data/*.docxfixtures resolve. InjectsINSTALL httpfs FROM core; LOAD httpfs;on the http leg only (the HTTP transport rides DuckDB's httpfs). Adds the silent-skip guard (fails on "All tests were skipped") and an exit-code-preserving cleanup trap.integrationjob is now atransport: [subprocess, http, unix]×os: [ubuntu, macos]matrix; installs thehttpextra viauv sync --extra dev --extra http.pyproject.tomlgains anhttpextra (vgi-python[http]→ waitress);docgen_worker.pyPEP 723 header usesvgi-python[http];uv.lockrelocked.The buffering
docgen_mergefunction is HTTP-safe as-is (single-row BLOB output,DrainStatealready anArrowSerializableDataclass) — no streaming-state change needed. All three transports verified green locally with haybarn-unittest.🤖 Generated with Claude Code