Failure test with Pumba

Failure test with Pumba

Cb7581fce11333aa194ff38857ce1d71?s=128

Yoshinori SHIMADA

September 03, 2018
Tweet

Transcript

  1. Pumbaを使った異常系試験 @simd_nyan

  2. $ whoami • Yoshinori Shimada @simd_nyan • 仕事 – Software

    Engineer@通信会社 – クラウドサービスの開発 • 好きなプログラミング言語 – 言語 • 好きなテストフレームワーク – Gherkin/Cucumber • Dockerの好きなところ – 「俺の環境では動いた」の殲滅 ポータビリティ – 日がな1日イメージサイズ最小を目指す愉しみ 軽量
  3. 他部署 自分たちが 作っているシステム マイクロサービスなシステムの構成 DB App 謎システム App2 App1 App3

    謎システム 謎システム 謎システム 謎システム
  4. 結合テスト環境のコンテナ化 DB のコンテナ App のコンテナ テスト コード App2 のモック App1

    のモック App3 のコンテナ docker-compose
  5. docker-compose 結合テストでの異常系試験の想定 DB のコンテナ App のコンテナ テスト コード App2 のモック

    App1 のモック App3 のコンテナ 遅延が… 死んでる…
  6. Pumba • Pumba: Chaos testing tool for Docker – https://github.com/alexei-led/pumba

    • できること COMMANDS: kill kill specified containers netem emulate the properties of wide area networks pause pause all processes stop stop containers rm remove containers help, h Shows a list of commands or help for one command
  7. ネットワーク遅延を発生させる DB のコンテナ App のコンテナ テスト コード App2 のモック App1

    のモック App3 のコンテナ docker-compose pumba pumba netem --duration 999m delay --time 30 app3
  8. ネットワーク遅延を発生させる DB のコンテナ App のコンテナ テスト コード App2 のモック App1

    のモック App3 のコンテナ docker-compose pumba pumba netem --duration 999m delay --time 30 app3
  9. Appを落とす DB のコンテナ App のコンテナ テスト コード App2 のモック App1

    のモック App3 のコンテナ docker-compose pumba pumba pause --duration 999m 30 app1
  10. Appを落とす DB のコンテナ App のコンテナ テスト コード App2 のモック App1

    のモック App3 のコンテナ docker-compose pumba pumba pause --duration 999m 30 app1
  11. Network Emulation(netem)コマンドについて • delay – 遅延 • loss – パケロス

    • loss-state – 4-state Markov モデルのパケロス • loss-gemodel – Gilbert-Elliot loss モデルのパケロス • rate – レートリミット • 内部的にはtcを利用 – iproute2とかを入れておく必要有