lablup / lablup/raftify

Test scenario implementation roadmap

Open
#84 0 comments 0 reactions 0 assignees View on GitHub
integration-test test
Dominant language
Rust
Stars
44
Forks
14
PR merge metrics
No merged PRs in 30d

Description

One of the goals of this crate is to provide a robust, high-level Raft implementation that is ready to use.
To achieve this goal, we need to write more tests for various scenarios.

# Integration tests

## Should pass

- [ ] Cluster bootstrap testing
- [x] Boostrapping based on node's static rule
- [ ] WAL bootstrap
- [ ] WAL snapshot bootstrap
- [ ] Vote and Leader election
- [ ] Request rerouting
- [ ] Log replication
- [ ] Log compaction
- [ ] Simple membership change
- [ ] Membership change based on Joint consensus

## Should fail

Writing a list of failing test cases would be useful because it helps identify which failures are expected behavior and which are bugs.

- [ ] Timeout on put requests when a quorum is broken.
- [ ] Timeout on new node join attempts when a quorum is broken.
- [ ] Handling put requests during leader failover.
- [ ] Timeout on join requests during leader failover.
- [ ] Failures occurring while creating a snapshot.
- [ ] Whether a new proposal is rejected when there is a pending configuration change, and if it is processed normally after the pending configuration change is resolved.
- [ ] If a node not in the peers sends a message to the cluster, it should raise a `PeerNotFound` error.
- [ ] A configuration change request containing only an AddNode entry for itself times out.

# Unit tests

## Types that require unit tests

- [ ] `RaftNode`
- [ ] `HeedStorage` (from `raft-rs`)

# Others

- [ ] Doc testing
- [ ] Client API testing
- [ ] Create a simple shell script (test-cluster.sh) that verifies if the cluster is functioning correctly for each example.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.