Skip to content

feat(php): run PHP SDK tests only against the VSR server - #3845

Merged
hubcio merged 4 commits into
masterfrom
ci/php-vsr-only
Aug 10, 2026
Merged

feat(php): run PHP SDK tests only against the VSR server#3845
hubcio merged 4 commits into
masterfrom
ci/php-vsr-only

Conversation

@hubcio

@hubcio hubcio commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

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.

@github-actions github-actions Bot added the S-waiting-on-review PR is waiting on a reviewer label Aug 8, 2026
@codecov

codecov Bot commented Aug 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 76.08%. Comparing base (c59ca5a) to head (12ecadb).

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     
Components Coverage Δ
Rust Core 76.06% <ø> (-0.01%) ⬇️
Java SDK 66.40% <ø> (+3.18%) ⬆️
C# SDK 56.49% <ø> (-19.52%) ⬇️
Python SDK 89.98% <ø> (ø)
PHP SDK 82.97% <ø> (ø)
Node SDK 96.33% <ø> (ø)
Go SDK 69.13% <ø> (ø)
Files with missing lines Coverage Δ
foreign/php/src/client.rs 95.45% <ø> (ø)
foreign/php/src/send_message.rs 63.15% <ø> (ø)

... and 119 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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.
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.
@hubcio
hubcio merged commit ba04381 into master Aug 10, 2026
100 checks passed
@hubcio
hubcio deleted the ci/php-vsr-only branch August 10, 2026 18:18
@github-actions github-actions Bot removed the S-waiting-on-review PR is waiting on a reviewer label Aug 10, 2026
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.

3 participants