|
|
@@ -7,16 +7,23 @@ start a new contract (`start()`), get the current status (`get_status()`) and sh
|
|
|
is reached, it notifies the clients via an `apply_command` callback. It saves its internal state to local disk via a
|
|
|
`persister`, which is supplied at creation.
|
|
|
|
|
|
-There are also
|
|
|
-two half-APIs: `process_append_entries()` and `process_request_vote()`, serving requests from other Raft instances of
|
|
|
-the same setup.
|
|
|
+There are also two half-APIs: `process_append_entries()` and `process_request_vote()`, serving requests from other Raft
|
|
|
+instances of the same setup.
|
|
|
|
|
|
-The implementation is thoroughly tested. I copied the tests from an obvious source. To avoid being indexed by a search
|
|
|
-engine, I will not name the source. The testing framework from the same source is also translated from the original Go
|
|
|
-version. The code can be found at [`labrpc`](https://github.com/ditsing/labrpc) repo.
|
|
|
+## Testing
|
|
|
+The implementation is thoroughly tested. I copied (and translated) the tests from an obvious source. To avoid being
|
|
|
+indexed by a search engine, I will not name the source. The testing framework from the same source is also translated
|
|
|
+from the original Go version. The code can be found at [`labrpc`](https://github.com/ditsing/labrpc) repo.
|
|
|
+
|
|
|
+## Running
|
|
|
+It is close to impossible to run `ruaft` outside of the testing setup under `tests`. One would have to supply an RPC
|
|
|
+environment plus bridges, a `persister` and an `apply_command` callback.
|
|
|
+
|
|
|
+Things would improve after I implement an RPC interface and improve the `persister` trait.
|
|
|
|
|
|
## Next steps
|
|
|
- [ ] Split into multiple files
|
|
|
- [ ] Add public documentation
|
|
|
- [ ] Add a proper RPC interface to all public methods
|
|
|
- [ ] Benchmarks
|
|
|
+- [ ] Allow storing of arbitrary information, instead of a `i32`.
|