Add chained transaction e2e smoke test#177
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds a container-free smoke test suite that boots arcade in-process and verifies chained transaction propagation ordering through the API → Kafka → propagation → teranode path.
Changes:
- Adds an in-process smoke harness with memory Kafka, Pebble storage, and an
httptestteranode recorder. - Adds transaction chain builders and a chained transaction ordering/deduplication smoke test.
- Adds a GitHub Actions workflow to run smoke tests on PRs, pushes to
main, and manual dispatch.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/smoke.yml |
Adds CI workflow for go test -tags=smoke. |
tests/smoke/harness.go |
Boots and manages an in-process arcade runtime for smoke tests. |
tests/smoke/recording_teranode.go |
Provides fake teranode endpoint and records propagated batches. |
tests/smoke/chains.go |
Builds deterministic chained transaction forests for propagation tests. |
tests/smoke/chained_txs_test.go |
Adds end-to-end smoke assertions for ordering, batching, and deduplication. |
tests/smoke/doc.go |
Documents the smoke test package and invocation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
This pull request introduces a new "smoke test" suite for the project. The smoke tests are fast, in-process integration tests that exercise arcade's core transaction propagation path without requiring Docker or external services. The suite is designed to run quickly on every PR, catching regressions in transaction ordering, batching, and propagation logic. The main changes include the addition of the smoke test workflow, the test harness and chain-building utilities, and a comprehensive chained transaction propagation test.
New smoke test infrastructure and workflow:
.github/workflows/smoke.ymlto define a fast, container-free smoke test workflow that runs on every PR and push tomain. This workflow runs the new smoke tests using thesmokebuild tag.Smoke test harness and utilities:
tests/smoke/harness.goto provide an in-process arcade runtime for tests, including configuration, service management, and lifecycle handling. This enables the tests to start arcade with a memory Kafka broker, Pebble store, and a fake teranode.tests/smoke/chains.goto generate forests of chained transactions with configurable depth and count, ensuring realistic parent-child relationships for propagation tests.Smoke test documentation and test case:
tests/smoke/doc.goto document the purpose, usage, and structure of the smoke test suite.tests/smoke/chained_txs_test.go, a comprehensive test that submits ~10,000 chained transactions and asserts critical propagation invariants, including parent-child ordering, batching, and deduplication.