Bean Network Tester

ネットワークの状態を時間とともに変化させる

10%固定のパケットロスは、実験室の条件です。実際の回線は悪くなり、回復し、4秒間止まっては戻ります。追いかけているバグが潜んでいるのは、たいてい定常状態ではなく、その変化のほうです。

シナリオは時系列

1つのJSONファイルです。各ステップにこの秒に、これらの設定と書き、触れなかったものは値が保たれます:

{
  "loop": true,
  "steps": [
    {"at": 0,  "settings": {"latency": 20, "jitter": 15, "down": 4096}},
    {"at": 20, "settings": {"loss": 8, "latency": 180}},
    {"at": 45, "settings": {"block_ip": "203.0.113.0/24"}},
    {"at": 65, "settings": {"block_ip": "", "loss": 0, "latency": 20}}
  ]
}

時刻は、ステップ間の間隔ではなく、実行開始からの秒数です。"loop": true を付けると、終わったところでタイムラインが最初から始まります。長時間の耐久テストに向いています。動かしたままにして、アプリを使います。

BeanNetworkTester.exe --scenario cafe-wifi.json --target myapp.exe

8個の用意済みシナリオがプログラムに付属します

実行ファイルの隣の scenarios フォルダーにあります。それらのファイルから読み取った内容なので、実際に手元にあるのはこれです:

ファイルステップ数長さ繰り返し
blocked-endpoint.json465 sあり
cafe-wifi.json585 sあり
congested-vpn.json470 sあり
failing-dns.json685 sあり
mobile-lte-to-3g.json785 sあり
overloaded-game-server.json572 sあり
same-loss-in-runs.json5100 sあり
upload-drop-midway.json775 sなし

ただのテキストです。1つ開いて、数字を変えて、保存します。名前が再現するものを表しています。混雑したカフェ、LTEから3Gに落ちるモバイル回線、途中で死ぬアップロード、過負荷になるサーバー、応答しなくなるDNSなどです。

変化をつけるもっと簡単な2つの方法

順序が重要なときは、シナリオを書く価値があります。そうでないときは、2つの設定が自動で変化します:

BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe

アプリの実行中でも動くのはなぜか

シナリオが触れる設定はすべて、すでに進行中のセッションにそのまま適用されます。アプリの再起動は不要で、ツールの再起動も要りません。イベントログが各ステップを発生時に記録するので、何かが壊れたとき、どの変更の直後だったかがわかります。シードと組み合わせれば、中のランダムなパケットロスも含めて、全体の流れが正確に繰り返されます。

次のステップ

自分のネットワークを、わざと壊してみませんか?

Windows版をダウンロード