feat(php): run PHP SDK tests only against the VSR server - #3845
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3845 +/- ##
============================================
- Coverage 76.95% 76.08% -0.87%
- Complexity 1021 1316 +295
============================================
Files 1366 1378 +12
Lines 176130 177129 +999
Branches 146173 146370 +197
============================================
- Hits 135536 134766 -770
- Misses 36718 38350 +1632
- Partials 3876 4013 +137
🚀 New features to boost your workflow:
|
The PHP extension wraps the Rust SDK without the vsr feature, so its suites only ever exercised the legacy wire protocol. Building it with the feature moves the SDK, BDD and examples lanes onto server-ng, and the dev compose harness with them, since a vsr-built extension cannot talk to the legacy server at all. Only one expectation encoded legacy behavior: a send used to assert an empty confirmation list, where the VSR server reports the written partition's offsets. It now asserts one confirmation per partition and that the offset advances by the committed message count. The migration surfaced a wrong-password bug where the login fall-through blamed the payload shape and clients saw InvalidFormat instead of a credential failure. Master fixed it meanwhile; this change keeps the integration tests pinning that behavior, which is what makes the PHP suite raise AuthenticationException instead of the untyped base exception. PHP was the last foreign SDK on the legacy protocol, so the CI docs now say it plainly: every foreign SDK speaks only VSR and just the Rust lanes still exercise the legacy server until server-ng replaces it.
hubcio
force-pushed
the
ci/php-vsr-only
branch
from
August 10, 2026 14:56
464d33c to
ee18daf
Compare
With every foreign SDK on VSR, the Rust examples lane was the last CI consumer of the legacy server binary. The examples crate gets a vsr feature forwarding to the SDK's, the README runner injects --features vsr into the cargo run commands it extracts (READMEs keep plain commands for users on the default build), and the workflow always builds iggy-server-ng, which removes the legacy branch of the build step. Verified locally: getting-started producer/consumer and a CLI ping complete against iggy-server-ng.
spetz
approved these changes
Aug 10, 2026
thepatrykk
approved these changes
Aug 10, 2026
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.
The PHP extension wraps the Rust SDK without the vsr feature, so its
suites only ever exercised the legacy wire protocol. Building it with
the feature moves the SDK, BDD and examples lanes onto server-ng, and
the dev compose harness with them, since a vsr-built extension cannot
talk to the legacy server at all.
Only one expectation encoded legacy behavior: a send used to assert an
empty confirmation list, where the VSR server reports the written
partition's offsets. It now asserts one confirmation per partition and
that the offset advances by the committed message count.
The migration also surfaced a server bug. A username/password body
that fails verification falls through to the PAT decode attempt so a
credential payload shaped like a token still gets a chance, but when
that decode failed too the terminal rejection reported the payload
shape rather than the credential failure, and clients saw InvalidFormat
for a wrong password. The fall-through now carries the rejection that
actually happened, which is what makes the PHP suite raise
AuthenticationException instead of the untyped base exception.