Smartstack: e2e tests, remove realtime containers - #476
Open
timbeccue wants to merge 7 commits into
Open
Conversation
This was referenced Aug 7, 2026
timbeccue
marked this pull request as ready for review
August 7, 2026 06:52
timbeccue
force-pushed
the
feature/smartstack-pr7-e2e
branch
from
August 7, 2026 07:15
462544a to
78f2fd0
Compare
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
This is PR 7 of 8 completing the v1 banzai implementation of Smartstacking at site.
PR1 (#469): combine math
PR2 (#470): JPEG utilities
PR3 (#471): DB updates
PR4 (#473): shipper contract
PR5 (#474): smartstack data products
PR6 (#475): stack worker polling
PR7 (#476): e2e tests, compose cleanup <-- you are here
PR8 (#477): logging
PRs 1–4 provide the independent foundations for combining images, rendering JPEGs, storing stack state, and shipper integration (this PR). PR5 builds the data products, this PR adds the polling worker, crash-only supervisor, and site deployment configuration. PR7 adds cross-service E2E and recovery proof; PR8 adds structured lifecycle telemetry and final documentation.
What's here
This branch has two changes: removing the realtime mode from the smartstack deployment (docker-compose-site.yml), and update the e2e tests to verify the behavior that was implemented works as intended.
Remove realtime mode
docker-compose-site.ymlbecomes Smartstack-only:banzai-worker,banzai-large-worker, andbanzai-listenerservices.The realtime entry point and
docker-compose-local.ymlare unchanged. This changes only which pipeline the site deployment launches.End-to-end coverage
The site E2E suite now covers these concrete scenarios:
Single-frame smoke test: Sends one raw stackframe through the site services and verifies that its reduced
e09file is written and the stack reaches its expected terminal database state.Cached calibration check: Opens the reduced
e09files and checks the calibration filenames recorded in theirL1IDBIAS,L1IDDARK, andL1IDFLATheaders. Each referenced calibration must exist in the local cache, and its database record must point into that cache.Normal three-frame stack: Sends three raw stackframes and waits for previews after the first and second members. After the third member arrives, the test verifies:
e45FITS file and both JPEG sizes are written;NCOMBINE=3andIMCOM001–IMCOM003identify the three reduced inputs in order;fits: nulland the required thumbnail metadata; ande45path.Bad input does not block other stacks: Corrupts one stack’s reduced
e09file so final product generation repeatedly fails. That stack eventually reacheserrorafter exhausting its retry attempts, while a healthy stack for the same camera still completes.Worker restart recovery: Force-kills the per-camera worker processes and verifies that the supervisor exits, Docker restarts the service, and a newly submitted stack completes successfully afterward.
The fixture uses isolated Smartstack queues and creates a dedicated shipper probe queue before sending any frames. This lets the tests inspect the actual RabbitMQ messages without interfering with another local deployment.
Supporting changes
FINALIZE_BACKOFF_SECONDScan be overridden for E2E while retaining the production default.Focused combine, schema, product, publisher, and worker behavior remains owned by the earlier PRs; this PR proves those layers work together.