Bean Network Tester

Меняйте условия сети с течением времени

Фиксированные 10 % потерь: лабораторное условие. Реальные соединения ухудшаются, восстанавливаются, зависают на четыре секунды и возвращаются, а ошибка, за которой вы охотитесь, обычно живёт в изменении, а не в установившемся состоянии.

Сценарий задаёт временную шкалу

Один файл 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нет

Это обычный текст: откройте файл, измените число, сохраните. Названия говорят, что они воспроизводят: переполненное кафе, мобильное соединение, падающее с LTE на 3G, отдачу, которая умирает на полпути, перегруженный сервер, DNS, который перестаёт отвечать.

Два более простых способа получить изменение

Сценарий стоит писать, когда важна последовательность. Когда не важна, две настройки меняются сами:

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

Почему это работает, пока приложение запущено

Каждая настройка, которой касается сценарий, применяется на лету к уже идущему сеансу: приложение не нужно перезапускать, как и сам инструмент. Журнал событий записывает каждый шаг в момент его выполнения, так что когда что-то ломается, видно, за каким изменением это последовало. Добавьте seed, и вся последовательность, включая случайные потери внутри неё, повторится точь-в-точь.

Что дальше

Готовы намеренно сломать собственную сеть?

Скачать для Windows