jet/propulsion

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