Test/additional tests - #101
Merged
Merged
Conversation
Add regression coverage with two independent writer clients and two independent reader clients operating against a five-replica system. The workload queues ordered writes per writer while readers repeatedly read during the in-flight updates, then crashes a non-coordinator replica while a strict majority remains available. Assert each writer's local order, the read target's total application order, legal read observations without regression, and final convergence.
Replace the placeholder Main program with selectable demonstrations for normal replication, concurrent writers and readers, strict-majority operation, coordinator election, and expected read timeouts from crashed replicas. Add regression coverage for sequential consistency, operation with exactly a strict majority alive, and coordinator-crash recovery. Keep the recovery test strict so the current interrupted-update defect remains visible instead of being hidden. Document the example commands and make gradlew regression the normal development test command, while retaining gradlew test for the complete suite.
Replace stale participant UpdateTransactions when a recovered UPDATE with the same TransactionId arrives. This prevents ACKs from being delivered to an old WAITING_ELECTION transaction instead of the newly elected coordinator transaction, allowing the interrupted write to reach quorum and complete. Also correct the coordinator-election regression helper so Akka TestKit skips unrelated probe messages rather than treating a Java null result as a match. Verified with the focused coordinator crash recovery test and the complete Gradle regression suite.
Tech-Matt
marked this pull request as ready for review
August 28, 2026 18:10
alanmasu
requested changes
Aug 28, 2026
Owner
There was a problem hiding this comment.
Maybe is better to separate each test output with some header, feel free to use the System.out.println() so the outputs are clear
alanmasu
reviewed
Aug 28, 2026
alanmasu
left a comment
Owner
There was a problem hiding this comment.
Consider to have an output that clear identify what happened in the system and how the system resume from faults
Move the inherited replica and client informational logs to debug output so normal Main runs focus on the presentation messages while detailed traces remain available to tests and debugging. Add narrated setup, action, expected-result, observation, and conclusion messages to each Main scenario. Improve callback wording and add timestamp-free visual headers and footers between examples so the output can be followed during an examination. Verified with the Main basic demonstration, the complete Gradle regression suite, and git diff --check.
alanmasu
approved these changes
Aug 28, 2026
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
Mainfor: