Open
Conversation
There was a problem hiding this comment.
Pull request overview
Adds an initial end-to-end (integration) test suite that exercises application lifecycles (Authority + PRT), plus supporting CLI/JSON-RPC API refactors and CI/docker plumbing to run the suite in GitHub Actions.
Changes:
- Introduces
endtoendtests-tagged Go integration tests (echo, reject/exception, PRT, multi-app isolation) and helper utilities. - Refactors JSON-RPC request/response envelopes and decoded input/output types into
internal/jsonrpc/api, and extends CLI commands with--jsonoutputs needed by tests. - Adds Docker Compose + CI workflow updates to build/pull “tester/devnet” images and run integration tests in CI.
Reviewed changes
Copilot reviewed 45 out of 47 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| test/integration/reject_exception_test.go | Adds Authority-mode reject/exception lifecycle tests. |
| test/integration/reject_exception_prt_test.go | Adds PRT-mode reject/exception lifecycle tests with tournament settlement hook. |
| test/integration/polling_helpers_test.go | Adds polling + timing helpers for integration tests. |
| test/integration/multi_app_test.go | Adds multi-application isolation end-to-end test. |
| test/integration/main_test.go | Forces sequential execution for integration tests. |
| test/integration/lifecycle_test.go | Adds shared lifecycle runners and claim/execution verification logic. |
| test/integration/echo_prt_test.go | Adds echo-dapp lifecycle test for PRT consensus. |
| test/integration/echo_authority_test.go | Adds echo-dapp lifecycle test for Authority consensus. |
| test/integration/cli_helpers_test.go | Adds CLI wrappers for deploy/send/read/execute/validate used by tests. |
| test/integration/anvil_helpers_test.go | Adds Anvil JSON-RPC helpers + PRT tournament settlement helpers. |
| test/compose/compose.integration.yaml | Adds docker-compose stack to run node + integration tests in containers. |
| scripts/run-integration-tests.sh | Adds integration-test container entrypoint script. |
| pkg/service/service.go | Improves shutdown handling (SIGTERM support, telemetry shutdown timeout, returns Stop errors). |
| pkg/machine/implementation.go | Tracks forked server PID and softens shutdown errors when child already exits. |
| internal/model/models_json_test.go | Adds JSON roundtrip tests for model types. |
| internal/model/models.go | Adds UnmarshalJSON for Output/Report/Tournament/Commitment and improves error wrapping. |
| internal/manager/instance.go | Comment formatting adjustment for concurrency protocol docs. |
| internal/jsonrpc/types.go | Removes API parameter/result/decoding types from server package (keeps server-only helpers). |
| internal/jsonrpc/jsonrpc_test.go | Updates JSON-RPC tests to use new decoded output type. |
| internal/jsonrpc/jsonrpc.go | Switches handlers to internal/jsonrpc/api param/response/decode types. |
| internal/jsonrpc/api/response.go | Introduces shared JSON-RPC response envelope types. |
| internal/jsonrpc/api/params.go | Introduces shared JSON-RPC parameter structs. |
| internal/jsonrpc/api/decode.go | Introduces shared ABI decode helpers and decoded input/output structures. |
| internal/cli/types.go | Introduces CLI JSON output structs (send/execute/validate). |
| internal/advancer/service.go | Makes advancer Stop idempotent via sync.Once. |
| internal/advancer/advancer_test.go | Minor formatting adjustment in mock struct fields. |
| cmd/cartesi-rollups-cli/root/validate/validate.go | Adds --json output mode for validate command. |
| cmd/cartesi-rollups-cli/root/send/send.go | Adds --json output mode for send command. |
| cmd/cartesi-rollups-cli/root/read/tournaments/tournaments.go | Switches read params types to internal/jsonrpc/api. |
| cmd/cartesi-rollups-cli/root/read/service/types.go | Updates ReadService interface to use internal/jsonrpc/api params types. |
| cmd/cartesi-rollups-cli/root/read/service/repository.go | Updates repository read service to use api decode/types and error decoded_data representation. |
| cmd/cartesi-rollups-cli/root/read/service/jsonrpc.go | Updates JSON-RPC read service to use internal/jsonrpc/api params types. |
| cmd/cartesi-rollups-cli/root/read/reports/reports.go | Switches read params types to internal/jsonrpc/api. |
| cmd/cartesi-rollups-cli/root/read/outputs/outputs.go | Switches read params types to internal/jsonrpc/api. |
| cmd/cartesi-rollups-cli/root/read/matches/matches.go | Switches read params types to internal/jsonrpc/api. |
| cmd/cartesi-rollups-cli/root/read/matchadvances/matchadvances.go | Switches read params types to internal/jsonrpc/api. |
| cmd/cartesi-rollups-cli/root/read/inputs/inputs.go | Switches read params types to internal/jsonrpc/api. |
| cmd/cartesi-rollups-cli/root/read/epochs/epochs.go | Switches read params types to internal/jsonrpc/api. |
| cmd/cartesi-rollups-cli/root/read/commitments/commitments.go | Switches read params types to internal/jsonrpc/api. |
| cmd/cartesi-rollups-cli/root/execute/execute.go | Adds --json output mode for execute command. |
| cmd/cartesi-rollups-cli/root/deploy/deploy.go | Renames deploy flag var to asJSONParam for consistency. |
| cmd/cartesi-rollups-cli/root/deploy/authority.go | Uses asJSONParam naming consistently. |
| cmd/cartesi-rollups-cli/root/deploy/application.go | Uses asJSONParam naming consistently. |
| Makefile | Adds integration-test targets, fmt-check, docker-based linting, and CI/local integration helpers. |
| Dockerfile | Adds tester stage and switches healthcheck endpoint to /readyz. |
| .github/workflows/clean-up-images.yml | Updates GHCR cleanup strategy and image list. |
| .github/workflows/build.yml | Pushes CI-tagged images to GHCR and adds separate integration-test job. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
7b9ec91 to
97f306a
Compare
renatomaia
previously approved these changes
Mar 10, 2026
| if err != nil { | ||
| return true | ||
| } | ||
| if proc.Signal(syscall.Signal(0)) != nil { |
There was a problem hiding this comment.
Suggested change
| if proc.Signal(syscall.Signal(0)) != nil { | |
| // try send no-op signal 0 to check process is still receiving signals. | |
| if proc.Signal(syscall.Signal(0)) != nil { |
Restructure the JSON-RPC layer into focused packages: - Extract decode, params, and response types from internal/jsonrpc/ into internal/jsonrpc/api/ with generics (ListResponse[T], SingleResponse[T]) to eliminate duplicated anonymous structs - Add MarshalJSON/UnmarshalJSON to model types (Epoch, Input, Output, Report, Tournament, Commitment) with hex-encoded uint64 fields and roundtrip tests - Add --json flag to CLI send, execute, and validate commands, backed by new shared output types in internal/cli/ - Introduce DecodedData flat union type for type-safe output decoding across server and client boundaries
97f306a to
d258c17
Compare
renatomaia
approved these changes
Mar 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.
No description provided.