CI: multi-transport SQL E2E (subprocess, http, unix)#5
Merged
Conversation
The haybarn sqllogictest suite previously ran only over subprocess/stdio. Parameterize ci/run-integration.sh by TRANSPORT and turn the integration job into an os x transport matrix so the SAME test/sql/*.test files run three ways, differing only in the ATTACH LOCATION: subprocess units-worker binary (DuckDB spawns it; default, unchanged) http units-worker --http -> http://127.0.0.1:<port> (auto port; worker prints PORT:<n> on stdout, polled for readiness) unix units-worker --unix <sock> -> unix:///<sock> (worker prints UNIX:<sock> + creates the socket; waited for) The single release binary serves all three transports: the workspace already pins vgi-rpc with the "http" feature, so no extra cargo feature is needed. http leg: the vgi extension's HTTP client requires DuckDB's httpfs. Without it ATTACH fails with a Binder Error whose text contains "HTTP" -- and DuckDB's sqllogictest runner silently SKIPs any test whose error matches its default ignore list {"HTTP","Unable to connect"}, so a missing httpfs masquerades as a pass-by-skip. Fixed two ways: - preprocess-require.awk (-v transport=http) injects a signed INSTALL httpfs FROM core; LOAD httpfs; after each LOAD vgi; - run-integration.sh now fails if ANY test is skipped (a skip is not a pass), guarding against this and future silent-skip masking. Keeps the warm INSTALL vgi FROM community step and leaves the fmt/clippy/build/unit jobs untouched. Adds make test-sql-{subprocess, http,unix} mirroring the matrix. 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.
Adds HTTP and launcher(unix) transport coverage to the haybarn SQL E2E suite, which previously ran only over subprocess/stdio. The same
test/sql/*.testfiles now run three ways via anos × transportmatrix; only the ATTACH LOCATION differs.Per-transport status (verified locally)
subprocess: GREEN (44 assertions)http: GREEN (48 assertions — +httpfs INSTALL/LOAD per file)unix: GREEN (44 assertions)How each transport is launched / discovered
units-worker --httpbinds an ephemeral loopback port and printsPORT:<n>to stdout; the script polls the log for it, thenVGI_UNITS_WORKER=http://127.0.0.1:<port>.units-worker --unix /tmp/units.<pid>.sockprintsUNIX:<sock>and creates the socket; the script waits for both, thenVGI_UNITS_WORKER=unix:///tmp/units.<pid>.sock.vgi-rpc = { features = ["macros","http"] }, so a plaincargo build --releaseserves all three.Failure found + resolved
The http leg's
ATTACHfailed withBinder Error: VGI HTTP transport requires the httpfs extension. Because that message contains the substringHTTP, DuckDB's sqllogictest runner (defaultignore_error_messages = {"HTTP","Unable to connect"}) silently SKIPPED the tests — exit 0, "All tests were skipped" — a deceptive pass. Resolved by injecting a signedINSTALL httpfs FROM core; LOAD httpfs;(viapreprocess-require.awk -v transport=http) and hardeningrun-integration.shto fail on ANY skipped test.The fmt/clippy/build/unit (and rustdoc/sccache) jobs and the warm
INSTALL vgi FROM communitystep are untouched.🤖 Generated with Claude Code