Первые шаги
Для этого занятия не нужно ничего, кроме Signal Lab: всё идёт на 127.0.0.1, этот компьютер, так что ни устройства, ни сеть, ни правила брандмауэра не участвуют. Вы:
- отправите OSC-сообщение и увидите, как оно приходит;
- увидите то же сообщение в Инспекторе;
- сохраните его в библиотеку и отправите снова откуда угодно;
- запустите эмулированный HTTP API и что-нибудь у него спросите;
- запустите эксперимент с этим API, разберётесь, почему он не проходит, исправите его и добавите проверку.
Если Signal Lab ещё не установлен, см. Установка и обновление. Не знаете, где что находится в окне? См. Окно.
Отправьте OSC-сообщение и посмотрите, как оно приходит
Сначала нужно то, что примет сообщение, — монитор на экране OSC.
- Откройте экран OSC на боковой панели.
- В разделе Монитор укажите в поле Адрес прослушивания
127.0.0.1:9000, чтобы монитор слушал только этот компьютер. - Нажмите Слушать. Кнопка сменится на Стоп, консоль сообщит, что монитор слушает, а сам монитор появится как задача на полосе нижней панели.
Теперь само сообщение — из отправителя рядом:
- В разделе Отправитель оставьте в поле Цель host:port
127.0.0.1:9000— порт, который слушает монитор. - Оставьте в поле OSC-адрес
/hello/avatar/1, а единственный аргумент типа float в разделе Аргументы —1.0, или введите свои адрес и значения. - Нажмите Отправить или Enter в поле цели или адреса.
В таблице монитора появится строка со столбцами Время (когда сообщение пришло), Откуда (127.0.0.1 и порт, с которого его отправили), Адрес и Аргументы. Под отправителем строка подтверждает, что отправлено и сколько это байт; если отправить ещё раз, она посчитает повторы.
Уведомление о брандмауэре?
В Windows при запуске монитора под шапкой может появиться уведомление о брандмауэре Windows. Оно касается сообщений с других машин; трафик на 127.0.0.1 никогда не фильтруется. Пока нажмите Не сейчас — когда стоит дать разрешение, объясняет раздел Уведомление о брандмауэре.
Посмотрите на него в Инспекторе
Инспектор записывает каждый кадр, который отправляет и получает любой инструмент, — но только пока включён захват.
- В нижней панели откройте вкладку Инспектор.
- Нажмите Включить захват. Точка на вкладке загорится.
- Вернитесь к отправителю и нажмите Отправить ещё раз.
Появятся две строки, новые сверху: сообщение, как оно было отправлено (→) и как его получил монитор (←), — у каждой протокол, адрес другой стороны, размер и краткое содержание. Щёлкните одну из них: панель Детали кадра покажет, какой инструмент отправил или получил кадр и на каких адресах, само сообщение (Декодировано) и байты, из которых оно состоит (Байты).
Закончив, нажмите Выключить захват; выключенный захват ничего не стоит. Подробнее — в разделе Инспектор.
Сохраните его как сигнал и отправьте снова
Сообщению, которое ещё понадобится, место в библиотеке сигналов.
- На экране OSC нажмите Сохранить… под отправителем.
- В окне Сохранить в библиотеку укажите в поле Имя
First message, а в поле Папка —Tutorial: новая папка создаётся, когда в неё сохраняют. - Нажмите Сохранить.
Теперь отправитель привязан к этому сигналу: на кнопке написано Сохранено, а плашка рядом показывает, где лежит сигнал. Измените аргумент — и плашка отметит изменение; кнопка Сохранить (Ctrl+S) обновила бы сигнал.
Теперь отправьте его снова, тремя способами:
- Из библиотеки. Щёлкните плашку: откроется экран Сигналы с этим сигналом, выделенным в папке
Tutorial(или откройте Сигналы и щёлкните сигнал там). Нажмите Отправить или Ctrl+Enter; двойной щелчок по сигналу в списке тоже его отправляет. - Откуда угодно. На любом экране нажмите Ctrl+K, наберите
firstи нажмите Enter. - Из эксперимента. Когда вы добавляете узел, меню показывает ваши сигналы в разделе Сохранённые сигналы — любой из них можно сделать шагом, который его отправляет.
Каждый раз монитор показывает, что сообщение пришло, а консоль называет сигнал. Сигнал отправляет ровно то, что отправил бы его экран. Подробнее — в разделе Сигналы.
Закончив с OSC, нажмите Стоп у монитора.
Спросите эмулированный API
В комплекте Signal Lab пять эмуляторов, все на 127.0.0.1. Один из них, Демо API, — это HTTP API на 127.0.0.1:8080 с такими маршрутами:
| Запрос | Ответ |
|---|---|
GET /health | 200 с {"status":"ok","time":"…"} — текущим временем |
GET /users/:id | 200 с пользователем с этим id, например {"id":"42","name":"User 42"} |
POST /users | 201 с заголовком Location и новым id |
GET /slow | 200 через 1,5 секунды |
любой метод, /flaky | 503, 503, а начиная с третьего запроса — 200 |
| всё остальное | 404 |
- Откройте экран Эмуляторы. В списке Библиотека все пять; выберите Демо API.
- Нажмите Запустить. Теперь он отвечает на
127.0.0.1:8080и работает как задача. - Откройте экран HTTP. Метод —
GET; задайте URLhttp://127.0.0.1:8080/health. - Нажмите Отправить или Enter в поле URL.
В разделе Ответ видны Статус 200, Задержка, Размер, заголовки ответа и тело в JSON. Отправьте http://127.0.0.1:8080/flaky три раза: два ответа 503, затем 200 — так восстанавливающийся сервис выглядит для клиента, который повторяет запросы.
Вернитесь на экран Эмуляторы: панель Сейчас считает каждый запрос, а список Пришло показывает каждый из них со столбцами Правило (какое правило ответило) и Ответ. Оставьте Демо API работать — он понадобится дальше. Подробнее — в разделе Эмуляторы.
Запустите эксперимент
Эксперимент — это сценарий из шагов, который можно запускать снова и снова. Тот, с которым Signal Lab открывается в первый раз, — шаблон Проверка HTTP — отправляет запрос на http://127.0.0.1:8080/ и проверяет, что ответ — 200.
Откройте шаблон
- Откройте экран Эксперименты.
- Если на холсте нет четырёх узлов — Старт, HTTP-запрос, Статус HTTP, Финиш, — нажмите ☰ слева на панели инструментов (Эксперименты), выберите в списке шаблонов Проверка HTTP и нажмите Открыть схему. Открытие заменяет эксперимент на холсте; Ctrl+Z возвращает прежний.
Щёлкните узел, чтобы увидеть его настройки на панели Параметры справа. Эксперименты сохраняются сами по ходу правки.
Запустите и разберитесь, почему он не проходит
- Нажмите Запустить.
Под холстом открывается панель Ход запуска: по строке на каждый шаг, когда он начинается (Выполняется), и ещё раз, когда заканчивается, — время, узел и результат. Этот запуск не проходит:
- Старт проходит и называет seed запуска.
- HTTP-запрос проходит: запрос ушёл, и пришёл ответ —
HTTP 404. - Статус HTTP не проходит: ожидался
200, а получен404.
У Демо API нет маршрута для /, поэтому он ответил 404, и проверка это поймала. В строке вверху ленты написано Ошибка и указана причина. Щёлкните строку, чтобы выделить её узел на холсте.
Не прошёл сам запрос?
Если шаг HTTP-запрос не проходит из-за отказа в соединении, на 127.0.0.1:8080 никто не слушает: запустите Демо API на экране Эмуляторы и запустите эксперимент снова.
Исправьте запрос
- Щёлкните узел HTTP-запрос.
- На панели Параметры замените URL на
http://127.0.0.1:8080/health. - Нажмите Запустить.
На этот раз проходят все шаги: у Статус HTTP написано Условие выполнено, у Финиш — Сценарий завершён, а в заголовке ленты — Успешно.
Добавьте проверку
Статус 200 говорит, что сервис ответил, но не говорит, что именно. Проверьте и тело:
- Щёлкните узел Статус HTTP.
- На панели Параметры нажмите Добавить следующий — или нажмите A, когда фокус на холсте. Откроется меню узлов с полем поиска.
- Наберите
assert_bodyи нажмите Enter. Между Статус HTTP и Финиш добавится узел Текст ответа, уже подключённый, с полем Содержит текст, готовым для ввода. - Введите
"status":"ok". - Нажмите Запустить.
Новый шаг проходит. Замените текст на такой, которого в теле нет, и запустите снова — шаг не пройдёт, и будет указана причина.
Что остаётся после запуска
- Отчёт. Когда запуск заканчивается, в заголовке ленты появляется Отчёт сохранён; наведите на надпись указатель, чтобы увидеть файл. Каждый завершившийся запуск, успешный или нет, записывает отчёт в папку
runsвашей папки данных — со значениями, которые он использовал, и со всеми шагами. В браузере это ссылка для скачивания. - Seed. В заголовке также виден seed запуска с кнопкой Закрепить: случайные значения в запуске выводятся из его seed, и если закрепить его, они повторятся в точности.
Подробнее — в разделе Запуски и отчёты.
Уберите за собой
Нажмите Остановить всё в шапке: это остановит Демо API и всё остальное, что ещё работает. Ваш сигнал, эксперимент и его отчёты остаются в папке данных.
Что дальше
- Основные понятия: идеи, на которых построены экраны, сигналы, задачи, эмуляторы и эксперименты.
- Эксперименты: редактор целиком, а каждый вид узлов — в разделе Узлы.
- OSC, HTTP и страницы других протоколов — когда направите Signal Lab на настоящее оборудование.
- Командная строка: тот же эксперимент из терминала или конвейера.