Что такое Signal Lab
Signal Lab — тестовая лаборатория для OSC и сетевых протоколов. Он отправляет сообщения на языке вашего оборудования и сервисов, показывает, что приходит в ответ, подменяет устройство или API, которых ещё нет, намеренно ухудшает сеть между ними и превращает всё это в эксперименты, которые можно запускать снова и снова — из приложения, скрипта или конвейера CI.
Он создан, чтобы вводить инсталляцию в строй раньше, чем она появится: шоу-контроллер, медиасервер, датчики и облачный API можно проверить каждый по отдельности против заменителя, на одном ноутбуке, задолго до того, как они встретятся на площадке.
Для кого он
- Для тех, кто запускает шоу-контроль, инсталляции и сетевые устройства: световые и медиасерверы, контроллеры, датчики, проекторы — всё, что говорит на OSC, UDP, TCP или MQTT.
- Для тестировщиков API и сервисов: эндпоинты HTTP и WebSocket, их аутентификация, их поведение под нагрузкой и при отказе зависимости.
- Для тех, кто автоматизирует и то и другое: те же эксперименты выполняются без окна в конвейере, на лабораторном сервере рядом с оборудованием или под управлением ИИ-ассистента.
Что можно делать
Отправлять трафик и следить за ним
У каждого протокола свой экран:
| Протокол | Что можно делать | Страница |
|---|---|---|
| OSC | Отправлять сообщения с типизированными аргументами, слушать порт, подавать на приёмник непрерывный сигнал заданной формы | OSC |
| Сырые UDP и TCP | Отправлять текст или байты в экспериментах и из библиотеки, эмулировать устройства, которые на них говорят | UDP и TCP |
| HTTP | Один запрос с полным ответом, аутентификация Basic, Bearer или Digest, банка cookie, нагрузочный поток | HTTP |
| WebSocket | Подключаться с заголовками и подпротоколами, которых ждёт сервис, отправлять текст или байты, читать каждое сообщение | WebSocket |
| MQTT 3.1.1 | Подключаться к брокеру, следить за всеми его топиками, публиковать с QoS 0, 1 или 2, стирать retained-значение | MQTT |
| Широковещание и multicast | Отправлять по списку, на широковещательный адрес, в multicast-группу или на каждый хост подсети; слушать, кто откликнется | Броадкаст и обнаружение |
Видеть каждый кадр
Инспектор записывает на одну ленту каждый кадр, который инструменты отправляют и получают: декодированным, с байтами, с фильтрами и экспортом. Пойманный им кадр можно превратить в сигнал, который повторит его байт в байт.
Сохранять то, что работает
Сообщение, которое сработало, попадает в библиотеку сигналов: под именем, в папке, с заметкой о том, что оно должно вызвать. Отправить его снова можно с его экрана, из библиотеки или откуда угодно по Ctrl+K.
Играть другую сторону
Эмуляторы отвечают вместо API, устройства или сервиса, с которым говорит ваша система: HTTP API с маршрутами и ответами, OSC-, UDP- или TCP-устройство с правилами, MQTT-брокер. Они умеют отвечать медленно, сбоить по заданной последовательности, присылать битые тела и отключаться по расписанию — так можно проверить, как справляется ваша система, ещё до того, как появится настоящее оборудование.
Намеренно ломать сеть
Реле помех встаёт между клиентом и его целью и добавляет UDP задержку, джиттер, потери, дубли, перестановку пакетов или ограничение полосы, а TCP-соединения задерживает, притормаживает, сбрасывает и подвешивает. Каждое решение выводится из seed, поэтому одинаковый трафик и во второй раз встречает одинаковую судьбу.
Превращать это в тест
Эксперимент — это сценарий из шагов, который вы рисуете на холсте: отправить запрос, дождаться ответа, проверить его, извлечь значение, ветвиться, повторять в цикле, выполнять ветки параллельно, поднять на время запуска эмулятор или реле помех. Каждый запуск расписан по шагам и сохраняется как отчёт, который можно сравнить с предыдущим.
Нагружать сервис
HTTP-запрос эксперимента можно выполнить под нагрузкой — ровный темп, рост, ступени, всплеск или случайные приходы — с измерениями и оценкой по порогам. На экране HTTP есть быстрый нагрузочный поток, а Шторм создаёт сырую нагрузку UDP или TCP на ваши собственные серверы и каналы.
Находить, что есть в сети
Броадкаст и обнаружение находят устройства, которые отвечают на пробу, а Сканер показывает, какие TCP-порты хоста открыты.
Автоматизировать
Командная строка signallab выполняет эксперименты без окна и завершается с кодом, понятным конвейеру; для CI она пишет отчёты JUnit. signallab mcp позволяет ИИ-ассистенту читать, писать и запускать эксперименты. Сервер предлагает то же самое через свой HTTP API.
Два способа запуска
| Настольное приложение | Сервер в браузере | |
|---|---|---|
| Работает на | Windows 10 и 11 (x64), Linux (x86_64) | Linux как образ Docker (amd64 и arm64) или собранный из исходников |
| Как им пользоваться | в собственном окне | в Chrome, Edge или Firefox с любой машины, которая видит сервер |
| Трафик уходит с | этого компьютера | сервера |
| В комплекте | командная строка signallab | командная строка signallab в образе |
| Обновления | само, когда вы скажете | вместе с образом |
Оба варианта — один и тот же интерфейс на одном и том же движке: все экраны, Инспектор, эксперименты и отчёты работают одинаково. Сервер выбирают, когда оборудование стоит в сети, до которой ваш компьютер не дотягивается: стоечный ПК или небольшой Linux-компьютер рядом с ним, которым пользуются с ноутбука или из конвейера. См. Установка и обновление и Сервер; чем отличаются два варианта, описано в разделе Основные понятия.
Как он устроен
- Экраны — инструменты для того, что вы делаете сейчас, вручную: отправить это, послушать там, запустить вон тот эмулятор. Они перечислены на боковой панели; каждый хранит, что вы ввели и что он получил, пока вы на другом экране. См. Окно.
- Эксперименты — сценарии, которые вы собираете один раз и запускаете снова, каждый раз одинаково и с отчётом о каждом запуске.
- Библиотеки хранят то, что вы сделали: сигналы — в библиотеке сигналов, эмуляторы — в библиотеке эмуляторов. Эксперименты пользуются обеими.
- Задачи — долгая работа: монитор, эмулятор, реле, запуск. Они перечислены внизу окна, где их можно остановить по одной или все сразу.
Подробнее об этих понятиях — в разделе Основные понятия.
Безопасно по умолчанию
- Signal Lab ничего не отправляет, пока вы не нажмёте кнопку, и только туда, куда вы скажете. Единственное исключение — проверка обновлений в настольном приложении, раз в день, и её можно выключить (см. Обновления).
- Стартовые сигналы, стартовые эмуляторы и шаблоны экспериментов указывают на
127.0.0.1, этот компьютер. Выход в сеть — ваш выбор: вы делаете его, когда вводите адрес. - Сервер, запущенный без токена доступа, слушает только
127.0.0.1и отказывается работать на любом другом адресе. - Брандмауэр меняется, только когда вы сами нажмёте, чтобы это разрешить.
Ответственное использование
Настоящий трафик на настоящие хосты
Шторм, Сканер и Броадкаст отправляют настоящий трафик на настоящие хосты, а широковещательная рассылка или обход подсети достаётся каждому устройству сегмента, а не только тому, которое вы имели в виду. Направляйте их только на системы, которые принадлежат вам или которые вам разрешено тестировать, и сначала проверьте, в какой вы сети. Высокий темп может забить каналы и поднять тревогу в системе обнаружения вторжений.
В движке есть ограничители: обход охватывает не больше 1024 хостов, а маяк отправляет не больше 50 000 пакетов в секунду на все свои цели вместе. Это ограничители, а не разрешение.
Языки
Интерфейс, его подсказки и сообщения об ошибках, командная строка signallab, страница входа на сервер и установщик для Windows говорят на 11 языках: English (английский), Русский, Español (испанский), Français (французский), Deutsch (немецкий), Português (бразильский португальский), 中文 (упрощённый китайский), 日本語 (японский), 한국어 (корейский), हिन्दी (хинди) и العربية (арабский, справа налево). Язык переключается на лету в шапке окна; см. Окно.
Что дальше
- Установите Signal Lab.
- Освойтесь в окне.
- Пройдите первые шаги на этом компьютере.
- Прочитайте об основных понятиях, на которых всё построено.