feat: concurrent mode proto support and integration tests - #86
Merged
Conversation
routes proto key commands (SET/GET/TYPE) through the engine's sharded fallback path since ConcurrentKeyspace doesn't support Value::Proto. schema-only commands (REGISTER/SCHEMAS/DESCRIBE) access the engine's schema registry directly. mirrors the sharded connection handler.
adds 10 end-to-end integration tests covering the full proto command surface: register/describe schemas, set/get/type proto values, NX/XX flags, TTL, wrong type errors, invalid descriptor/data rejection, and AOF persistence recovery. adds cmd_raw() helper to TestClient for sending binary proto data, and a protobuf option to ServerOptions for starting the server with --protobuf.
adds 5 concurrent-mode tests mirroring the core sharded tests: register/describe, set/get/type, invalid data rejection, NX/XX flags, and missing key handling. adds concurrent option to ServerOptions. total proto integration tests: 15 (10 sharded + 5 concurrent).
kacy
added a commit
that referenced
this pull request
Feb 11, 2026
* feat: add proto command support to concurrent mode handler routes proto key commands (SET/GET/TYPE) through the engine's sharded fallback path since ConcurrentKeyspace doesn't support Value::Proto. schema-only commands (REGISTER/SCHEMAS/DESCRIBE) access the engine's schema registry directly. mirrors the sharded connection handler. * feat: add proto integration tests and concurrent mode formatting adds 10 end-to-end integration tests covering the full proto command surface: register/describe schemas, set/get/type proto values, NX/XX flags, TTL, wrong type errors, invalid descriptor/data rejection, and AOF persistence recovery. adds cmd_raw() helper to TestClient for sending binary proto data, and a protobuf option to ServerOptions for starting the server with --protobuf. * chore: update Cargo.lock for integration test prost-reflect dep * feat: add concurrent mode proto integration tests adds 5 concurrent-mode tests mirroring the core sharded tests: register/describe, set/get/type, invalid data rejection, NX/XX flags, and missing key handling. adds concurrent option to ServerOptions. total proto integration tests: 15 (10 sharded + 5 concurrent).
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.
summary
cmd_raw()helper to TestClient for sending binary protobuf data, and aprotobufoption to ServerOptionswhat was tested
cargo test -p ember-integration-tests -- proto— all 10 proto integration tests passcargo test -p ember-integration-tests— full integration suite passes (78/79, theflushdbtest has a pre-existing race condition when run in parallel)cargo clippy --features protobuf -- -D warnings— cleancargo clippy -- -D warnings— cleancargo fmt -- --check— cleandesign considerations
ConcurrentKeyspaceonly stores rawBytesand doesn't have aValue::Protovariant. this means proto values in concurrent mode go through channels like in sharded mode, but schema-only operations (REGISTER/SCHEMAS/DESCRIBE) are fast-path direct accessprost-reflectto build test fixtures (descriptors and encoded messages) programmatically rather than hardcoding bytes, keeping tests readable and maintainable