chore: add grpc-protoscope sample app for Keploy gRPC field-ordering bug#215
Open
anjupathak03 wants to merge 5 commits intomainfrom
Open
chore: add grpc-protoscope sample app for Keploy gRPC field-ordering bug#215anjupathak03 wants to merge 5 commits intomainfrom
anjupathak03 wants to merge 5 commits intomainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds new minimal reproduction sample apps to the samples-go repo to help debug Keploy replay issues (gRPC protoscope canonicalization + SSE preflight port resolution), and updates CI to build multi-command Go modules.
Changes:
- Added
grpc-protoscope/Go gRPC client/server repro that emits raw protobuf wire bytes with randomized repeated-field ordering. - Added
sse-preflight/tiny dual-port HTTP/SSE repro for CORS preflight being replayed on the wrong port. - Updated CI build workflow to run
go build ./...per module (supports multiple./cmd/*entrypoints).
Reviewed changes
Copilot reviewed 14 out of 15 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| sse-preflight/README.md | Documents SSE preflight repro steps. |
| sse-preflight/go.mod | Declares the module for the SSE sample. |
| sse-preflight/cmd/server/main.go | Dual HTTP + SSE server for the preflight/404 repro. |
| sse-preflight/cmd/client/main.go | Sends an OPTIONS preflight request to the SSE endpoint. |
| README.md | Adds sse-preflight to the top-level sample list. |
| grpc-protoscope/server/main.go | gRPC server that returns manually-built wire bytes with shuffled repeated entries. |
| grpc-protoscope/client/main.go | gRPC client that calls Search and prints response fields. |
| grpc-protoscope/proto/search.proto | Proto schema mirroring the bug report structure. |
| grpc-protoscope/searchpb/search.pb.go | Generated protobuf types for the sample. |
| grpc-protoscope/searchpb/search_grpc.pb.go | Generated gRPC stubs for the sample. |
| grpc-protoscope/README.md | Detailed root-cause analysis + repro instructions for the gRPC issue. |
| grpc-protoscope/keploy.yml | Keploy config for recording/replaying the gRPC sample. |
| grpc-protoscope/keploy/.gitignore | Ignores Keploy reports output. |
| grpc-protoscope/keploy/test-set-0/tests/test-1.yaml | Recorded Keploy test artifact (ordering variant). |
| grpc-protoscope/keploy/test-set-1/tests/test-1.yaml | Recorded Keploy test artifact (ordering variant). |
| grpc-protoscope/keploy/test-set-2/tests/test-1.yaml | Recorded Keploy test artifact (ordering variant). |
| grpc-protoscope/go.mod | Module/dependencies for grpc-protoscope (currently includes local replace). |
| grpc-protoscope/go.sum | Dependency lockfile for grpc-protoscope. |
| .github/workflows/build.yml | Builds each sample module via go build ./.... |
Comments suppressed due to low confidence (1)
grpc-protoscope/go.mod:66
replace go.keploy.io/server/v3 => /home/anju/keployhard-codes a local absolute path, so this module won’t build for anyone else (including CI). Remove the replace and either (a) depend on a real publishedgo.keploy.io/server/v3version, or (b) avoid the dependency entirely if it isn’t needed for the sample build/run steps.
)
replace go.keploy.io/server/v3 => /home/anju/keploy
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
7cae59f to
5d812fb
Compare
f08fbac to
5f0889f
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 8 changed files in this pull request and generated 9 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ptor support, better errors
khareyash05
approved these changes
Apr 7, 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.
What
Adds
grpc-protoscope/— a minimal Go gRPC client-server sample app that reproduces the Keploy gRPC field-ordering bug (protoscope indentation causing falseSCHEMA_BROKENfailures).Why
A user reported that Keploy was failing gRPC tests even though recorded and replayed responses had identical structure and values. The only difference was the order of
repeatedfields inside nested protobuf sub-messages — which is perfectly valid in protobuf. This sample app reproduces that exact scenario usingrand.Shuffle+ raw wire encoding.What's included
proto/search.proto— Protobuf schema matching the bug report structureserver/main.go— gRPC server with randomized wire field ordering viaprotowire+rawCodecclient/main.go— gRPC client that calls the Search RPCkeploy.yml— Keploy configurationREADME.md— Full bug analysis, root cause, and reproduction steps