Bean Network Tester

マシンではなく、1つのアプリを狙う

ターゲットがなければ、コンピューター上のすべての接続が影響を受けます。使っているリモートデスクトップも、修正のダウンロードもです。ターゲットがあれば、悪いネットワークが当たるのは1つのプロセスだけで、ほかはそのまま動き続けます。

プロセスで指定する

Processに名前を入力するか、--target を渡します。名前だけなら断片として一致するので、chrome は chrome.exe も対象になります:

BeanNetworkTester.exe --loss 10 --target chrome.exe

プロセスツリーをたどるので、子プロセスを生成するものでは重要です。ブラウザはタブごとにプロセスを開き、それらにも当たります。

フィールドには複数の名前も、複数の種類のものを同時に入れることもできます:

入力するもの意味
chrome.exe,firefox.exe2つのアプリケーション。
chrome,!chromedriverChrome。ただしドライバーは除く。除外が優先されます。
my*.exe「my」で始まるすべてのもの。
re:^node\.exe$ワイルドカードでは足りないときの正規表現。
48121つのプロセスID。
>10001000より大きいすべてのプロセスID。

アドレスやポートで指定する

関心の単位がアプリではなく、1台のサーバーのときもあります。これらも同じリスト、範囲、除外の書き方を受け付け、CIDRとIPv6にも対応します:

BeanNetworkTester.exe --latency 300 --dst-ip 10.0.0.0/24 --dst-port 443
BeanNetworkTester.exe --loss 20 --dst-port "!53"

2つ目は覚えておく価値があります。DNS以外のすべて。ポートから外すように狙うほうが、欲しいものを並べるより簡単なことがよくあります。

名前で指定したプロセスは、再起動後も追従する

セッション実行中にアプリケーションを再起動しても、名前で指定したターゲットは新しいプロセスを拾い直します。プロセスIDで指定したターゲットにはできません。そのIDは終了したプロセスのものだったからです。Windowsがあとから同じIDを割り当てた別のプログラムも、影響を受けません。テストがテスト対象を再起動するなら、名前で指定してください。

無視してはいけない警告

劣化をオンにして、狙う対象も時間制限もないまま開始すると、ウィンドウもコマンドラインも、このマシン上のすべての接続に影響する、とそう伝えます。これは拒否ではなく警告で、それが望みのこともあります。そうでなければ、ターゲットか --duration を設定してください。STOPならいつでもすべてが元に戻ります。

次のステップ

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

Windows版をダウンロード