clumsy を使った不安定なネットワーク環境下のテスト
概要
とあるクライアント端末と、Windows PC上に構築したサーバーとの通信テストにあたり(いずれも同一LAN内に存在する)、不安定なネットワーク環境を準備する方法がわからず調査したところ、clumsy というツールを使うことで手軽に環境を作ることができたので、簡単に紹介する。
本記事では利用できる機能の詳細は解説しないため、公式ページを参照のこと。
clumsy とは
- 公式ページ: https://jagt.github.io/clumsy/index.html
- Windows PC上で不安定なネットワーク環境を作り出せるGUIアプリ
- TCP/IP ベースのプロトコルの通信について、ラグやパケットロス、スロットリングなどを簡単に設定できる。プロダクションコードを修正したり、複雑な環境構築は不要
- 使い方はzipファイルをダウンロード・解凍後、exeファイルを管理者権限で実行し、設定画面でテスト条件を設定するだけ
設定例
TCP通信のうち、サーバーが送信する情報(クライアントから見ると受信する情報)にパケットロスを発生させたい場合:
-
Filtering に
tcp.SrcPort == 443を設定 - Functions の Drop にチェックを入れ、発生確率を Chance に入力
- Start ボタンを押す
これにより該当の環境を再現できる。
なお、この例の場合、tcp.SrcPort == 443 に一致するパケットはOutbound方向にしか存在しないため、DropのInboundにチェックを入れても特に意味はない
所感
TCP/UDP・ポート番号・IPアドレスといった粒度での指定となるため、以下のようなテストはできない
- プロセス単位での指定
- 同一Function内でInbound/Outboundに異なるChance値を指定
手軽に使える一方で、複雑な条件のテストをしたい場合は向いていないと感じた。
