Repository navigation
Conversation
✅ API Diff Results -
|
Thin testcontainers-go wrapper over cre-storage-service's local-stack/compose.yaml, in the style of billing_platform_service. Returns internal (role alias) and external (host port) endpoints for the user service, node service and artifact store. Co-Authored-By: Claude Opus 5.5 <[email protected]>
akcll
force-pushed
the
axel/DEVSVCS-6421-cre-storage-component
branch
from
October 13, 2026 16:30
c3f09c3 to
08054c3
Compare
Contributor
|
Took a look and this looks good to me. One thing we'll need to sort out together: the image story between repo CIs. Our CI will need a way to get these images, either ECR access or a build step we can run. Not blocking this PR, just want it on the radar before we try to run CREC system tests against the stack in CI. |
iljapavlovs
approved these changes
Oct 13, 2026
This branch has not been deployed
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.
Adds
framework/components/dockercompose/cre_storage_service: a thin testcontainers-go wrapper over the compose file cre-storage-service owns (local-stack/compose.yaml), in the style ofbilling_platform_service. The compose file stays in the service's repo; this component only knows its contract: the inputs it takes and the role aliases and ports it serves.compose_file(local path or credential-free URL),network(defaultctf), and the CapabilitiesRegistry the stack reads nodes from (registry_rpc_url,registry_chain_selector,registry_address) plusdon_family. Image overrides (CRE_STORAGE_IMAGE,CRE_STORAGE_MIGRATION_IMAGE,MOCK_ACCOUNT_REGISTRY_IMAGE) andLOG_LEVELcome from the host env.UserService(cre-deploy-api:50051),NodeService(cre-workflow-source/cre-artifact-api:50052) andArtifactStore(cre-artifact-store:4566), each with an internal URL (the alias on the network) and an external URL (a free host port). gRPC is served without TLS.Stop()removes the stacks it started, with volumes.Local CRE (chainlink
core/scripts/cre/environment,[extensions]) will move to this component, and CREC system tests can import it to run against the real storage service instead of mocks.Testing
ctfwith a seeded CapabilitiesRegistry;New()brings up the stack (5 services healthy, aliases onctf, tenant loaded from the chain, host endpoints reachable). cre-storage-service's smoke test (deploy, node list, node download, unknown node rejected) passes against it.Stop()leaves no containers or volumes.Note
framework/components/dockercomposedoesn't build in-module on main: thecontainerd/v2 => v2.1.5replace conflicts with buildkit v0.29, which needs containerd v2.2. Consumers are unaffected, since replaces don't propagate. Not addressed here.After merge, this needs a
framework/components/dockercomposerelease tag so chainlink can bump to it.Reproduction Steps
Prerequisites
~/Workspace/cre-storage-service, with its images built (seelocal-stack/README.md, "Build"):~/Workspace/chainlink-testing-framework.1. Unit tests
framework/components/dockercomposedoesn't build in-module on main (thecontainerd/v2replace conflicts with buildkit v0.29), so use a temporary go.mod without that replace:Expect
TestEnvandTestNewRejectsIncompleteInputto pass.2. Create a consumer module
3. Start a chain with a CapabilitiesRegistry
An anvil chain on
ctf, seeded by cre-storage-service's seed tool, stands in for Local CRE:Expect
CapabilitiesRegistry 0x5FbDB2315678afecb367f032d93F642f64180aa3, node CSA key ....4. Build the storage smoke test
It deploys a workflow, then lists and downloads it as the seeded node:
(cd registryclient/tests && GOOS=linux CGO_ENABLED=0 go build -o /tmp/ctf-e2e/seed/localstacksmoke ./localstacksmoke)5. Start the stack through the component
Expect a pass, logging internal URLs
cre-deploy-api:50051,cre-workflow-source:50052andhttp://cre-artifact-store:4566, pluslocalhost:<port>external URLs.6. Inspect the stack
Expect:
ctf:cre-deploy-api(user-service),cre-workflow-sourceandcre-artifact-api(node-service),cre-artifact-store(S3).tenant_count 1and listens on 50052.7. Smoke test from the
ctfnetworkExpect steps 1-4 and
PASS: local stack works end to end.8. Stop
9. Failed start leaves nothing behind
10. Optional: Ryuk cleanup (the default for tests)
11. Clean up
🤖 Generated with Claude Code