feat(tests): blackbox test plugin for property-based testing#255
Draft
JeroenSoeters wants to merge 8 commits intomainfrom
Draft
feat(tests): blackbox test plugin for property-based testing#255JeroenSoeters wants to merge 8 commits intomainfrom
JeroenSoeters wants to merge 8 commits intomainfrom
Conversation
Tasks 1-3 complete: test plugin module, cloud state store, CRUD operations. Task 4 in progress: injection/operation log stubs with failing tests.
…ller actor Phase 1 tasks 4-6: implement InjectionState (thread-safe error/latency rule matching), OperationLog (append-only operation recording), TestController Ergo actor for test harness control, wire injection and logging into plugin CRUD methods, and custom main.go that spawns TestController alongside standard plugin infrastructure.
Phase 1 task 7: end-to-end smoke test that builds the test plugin binary, starts an in-process metastructure, waits for plugin registration, applies a forma with a Test::Generic::Resource, and verifies the command completes successfully.
Move TestController request/response types from testplugin to a shared tests/testcontrol module so both the test plugin and test harness can use them for Ergo cross-node communication.
…e reset Add Ergo node to the test harness for direct communication with the TestController actor. Add methods for fault injection, cloud state manipulation, and inter-iteration state reset via reconcile destroy.
Two property tests running 100 rapid iterations each: - SequentialHappyPath: apply/destroy with reconcile mode - SequentialWithFailures: same plus error/latency injection on all plugin operations (Create, Read, Update, Delete) Both verify invariants (no phantoms, no orphans, property consistency) against cloud state after each iteration.
95bbe3e to
1bea5b3
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
tests/testplugin/) with in-memory cloud state, CRUD operations, and failure injection stubsWhat's here
Design & plan docs (
docs/plans/):Test plugin (
tests/testplugin/):CloudState— thread-safe in-memory cloud simulation (6 tests passing)TestPlugin— full CRUD backed by CloudState (5 tests passing)InjectionState/OperationLog— stubs with failing tests (Task 4 WIP)messages.go— message types for TestController actor communicationWhat's next