Перейти к содержимому

Что такое 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 (бразильский португальский), 中文 (упрощённый китайский), 日本語 (японский), 한국어 (корейский), हिन्दी (хинди) и العربية (арабский, справа налево). Язык переключается на лету в шапке окна; см. Окно.

Что дальше ​

  1. Установите Signal Lab.
  2. Освойтесь в окне.
  3. Пройдите первые шаги на этом компьютере.
  4. Прочитайте об основных понятиях, на которых всё построено.