概要
分散システムのテストをClojureで実装するためのフレームワークにJepsenがある。
Jepsenのテストケースは、システムへの操作、操作後のシステムに期待する状態、障害と操作のスケジューリングの3要素からなる。
テストケースは、スケジューリング通りに操作と障害を起こし、最後にシステムの応答が期待通りか確認する。
Jepsenの公式サイトにはJepsenによる主要な分散システムのテスト結果が公開されている。
また、Kubernetes内部で使わているKVSのetcdの公式ウェブサイトにもJepsenのテスト結果が公開されている。
分散システムの開発側からも参照されているので、分散システムにおけるJepsenの認知度は高いように思える。
その一方で、公式ドキュメントは整備されていないようだった。
たとえば、チュートリアルはetcdを例題にJepsenの使い方を解説しているが、etcdのクライアントライブラリが古く、実際に実装してもチュートリアル通りに実行できない。
かわりに、2相コミットするアプリケーションとテストケースを実装したが、実装のためにJepsenのソースコードを調べる必要があった。
実装したアプリケーションとテストケースはGitHubのリポジトリに公開してある。
それでも、依然として、Jepsenを使ってテストケース実装するほうが、スクラッチからテストケースを実装するよりも効率的ではあると思う。
そこで、今後の備忘録をかねて、Jepsenを試すにあたって、チュートリアルに不足を感じた部分を書き留めておく。