マシンではなく、1つのアプリを狙う
ターゲットがなければ、コンピューター上のすべての接続が影響を受けます。使っているリモートデスクトップも、修正のダウンロードもです。ターゲットがあれば、悪いネットワークが当たるのは1つのプロセスだけで、ほかはそのまま動き続けます。
プロセスで指定する
Processに名前を入力するか、--target を渡します。名前だけなら断片として一致するので、chrome は chrome.exe も対象になります:
BeanNetworkTester.exe --loss 10 --target chrome.exe
プロセスツリーをたどるので、子プロセスを生成するものでは重要です。ブラウザはタブごとにプロセスを開き、それらにも当たります。
フィールドには複数の名前も、複数の種類のものを同時に入れることもできます:
| 入力するもの | 意味 |
|---|---|
chrome.exe,firefox.exe | 2つのアプリケーション。 |
chrome,!chromedriver | Chrome。ただしドライバーは除く。除外が優先されます。 |
my*.exe | 「my」で始まるすべてのもの。 |
re:^node\.exe$ | ワイルドカードでは足りないときの正規表現。 |
4812 | 1つのプロセスID。 |
>1000 | 1000より大きいすべてのプロセス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ならいつでもすべてが元に戻ります。