propulsion icon indicating copy to clipboard operation
propulsion copied to clipboard

Feature Idea: Equinox MemoryStore Reader

Open bartelink opened this issue 4 years ago • 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 https://github.com/jet/FsCodec/issues/50

bartelink avatar May 11 '20 16:05 bartelink

As highlighted by #74, having a test scenario which runs >1 streams scheduler should be covered in the acceptance test for the feature

bartelink avatar Jul 27 '20 13:07 bartelink

There's an impl in dotnet-templates' eqxShipping sample - this can be packaged into Propulsion.MemoryStore when it's been validated in more scenarios

bartelink avatar Sep 28 '20 08:09 bartelink