Repository navigation
Conversation
The harness and lang tests need Streams with no Redis. A Store trait now has the calls that the service and the Workflow path use, and the memory Store runs the steps of the Lua scripts in the same order, so one test suite holds both Stores to one set of rules.
Owner
Author
|
Closing as stale. This layer is folded into the v5 tip, #41, and the upstream review uses a fresh series instead. Plan: https://www.notion.so/4048fc567738814990b7c796ac28fe3f |
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.
What changed?
This PR adds
MemoryStreamExtension, the Stream runtime on an in-process memory Store, for tests. It serves the samecallandcall_asyncmethods as the Redis extension, under the nametemporalio-streams-memory.MemoryStreamExtension::create(retention, safety_ttl, meter)builds it, andfrom_config_bytestakes the plugin'sRedisStreamConfigand reads only its Retention and safety TTL. The newStoretrait has the calls that the service and the Workflow path use.RedisStoreandMemoryStoreboth implement it. The memory Store keeps the meta fields of the Redis layout and runs the steps of the Lua scripts in the same order: epochs, fences, dedupe, theSupersededflag, withdrawal, closes, offsets (ms << 20 | seqfrom a process clock), TTLs and Retention by time.Why?
The harness port and lang tests need Streams with no Redis (DECISIONS S29). Redis stays the only production Store.
How did you test it?
The Store suite (
tests/store.rs, renamed fromredis_store.rs) and the service, Workflow and writer suites run on standalone Redis, cluster Redis and the memory Store. With no Redis set, they run on the memory Store alone. A Store test checks the meta field names against the shared vectors. A deliberate break of the memory fence and withdrawal failed five Store cases, so the suite holds the memory Store.