Feature Idea: Equinox MemoryStore Reader
bartelink opened this issue · 2 comments
Given ChangeFeed support in Equinox.MemoryStore, there should be a oneliner way to rig StreamsProjector(s) ingesting from the MemoryStore ChangeFeed that invoke Ingestion/Reaction handlers (also wired to In Memory stores) in order to be able to express workflows that rely on a the triggering of reactions via changefeeds without needing concrete Cosmos/EventStore/Kafka deps
The tests impls can be split into two levels:
a1) Set up SUT in-memory
- wire services to In memory stores
- wire Ingesters/Reactors to Store
a2) Set up SUT wiring to concrete stores
b) Run the scenario
Then mix and match test scenarios to best achieve meaningful test coverage e.g.:
- On the desktop and for CI on PRs, run a1+b (if Property tests, 100s or 1000s of iterations is fine)
- In a suitable staging environment, run a2+b (as the base functionality has already been validated by ☝️, the
MaxTests
can be dropped by an order of magnitude in order to conserve run time)
See a diagram that pretends this already exists
cc @fnipo any aspects I missed ?
semi-related: there should be unit tests that one can use alongside to do baseline validation that Event Contracts are correct as part of a similar local/CI test suite jet/FsCodec#50
As highlighted by #74, having a test scenario which runs >1 streams scheduler should be covered in the acceptance test for the feature
There's an impl in dotnet-templates
' eqxShipping
sample - this can be packaged into Propulsion.MemoryStore
when it's been validated in more scenarios