injection ◦ https://github.com/jepsen-io/jepsen ◦ Jepsen Test という共通テストや評価基準があるわけではない ▪ 代表的なテストはある : ${JEPSEN}/jepsen/src/jepsen/tests • Why “Jepsen”? ◦ The name comes from Carly Rae Jepsen ◦ The author explains Jepsen by using her songs like “Call Me Maybe” 3
for DB setup and requesting but also checking consistency and complex failure injection mechanisms ◦ Developers can customize all of them for their system ▪ DB 開発元が作成したり、 Jepsen 作者に依頼することでテストは作られている 6
DB DB DB Client issues requests to DB nodes Nemesis worker Nemesis injects failures Setup DB node by the control : Node (VM instance/machine) : Thread on the control node DB DB
(multiple threads) ◦ Nemesis (1 thread) • DB node (multiple nodes) 9 Tested System Control Client worker Client worker ... DB DB DB Nemesis worker DB DB
3. Start the client workers ◦ Give what types of requests to be invoked 4. Start the nemesis worker ◦ Give what types of failure to be injected 5. Teardown all workers and DB nodes 6. Check the result 10 Tested System Control Client worker Client worker ... DB DB DB Nemesis worker DB DB
if needed 3. Invoke requests to DB nodes ◦ Read, write, other operations 4. Close the requester 11 Tested System Control Client worker Client worker ... DB DB DB Nemesis worker DB DB
node ◦ Network partition, crash, clock drift etc. • Recover DB node from the nemesis 12 Tested System Control Client worker Client worker ... DB DB DB Nemesis worker DB DB
• DB process just runs ◦ The DB process doesn’t know failure injection 13 Tested System Control Client worker Client worker ... DB DB DB Nemesis worker DB DB
Checker ◦ Control node records all requests and the results ◦ Checker can be defined by developers ◦ Jepsen-io provides libraries ▪ Knossos: Linearizability checker ▪ Elle: Transactional consistency checker 14