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

Первые шаги ​

Для этого занятия не нужно ничего, кроме Signal Lab: всё идёт на 127.0.0.1, этот компьютер, так что ни устройства, ни сеть, ни правила брандмауэра не участвуют. Вы:

  1. отправите OSC-сообщение и увидите, как оно приходит;
  2. увидите то же сообщение в Инспекторе;
  3. сохраните его в библиотеку и отправите снова откуда угодно;
  4. запустите эмулированный HTTP API и что-нибудь у него спросите;
  5. запустите эксперимент с этим API, разберётесь, почему он не проходит, исправите его и добавите проверку.

Если Signal Lab ещё не установлен, см. Установка и обновление. Не знаете, где что находится в окне? См. Окно.

Отправьте OSC-сообщение и посмотрите, как оно приходит ​

Сначала нужно то, что примет сообщение, — монитор на экране OSC.

  1. Откройте экран OSC на боковой панели.
  2. В разделе Монитор укажите в поле Адрес прослушивания 127.0.0.1:9000, чтобы монитор слушал только этот компьютер.
  3. Нажмите Слушать. Кнопка сменится на Стоп, консоль сообщит, что монитор слушает, а сам монитор появится как задача на полосе нижней панели.

Теперь само сообщение — из отправителя рядом:

  1. В разделе Отправитель оставьте в поле Цель host:port 127.0.0.1:9000 — порт, который слушает монитор.
  2. Оставьте в поле OSC-адрес /hello/avatar/1, а единственный аргумент типа float в разделе Аргументы — 1.0, или введите свои адрес и значения.
  3. Нажмите Отправить или Enter в поле цели или адреса.

В таблице монитора появится строка со столбцами Время (когда сообщение пришло), Откуда (127.0.0.1 и порт, с которого его отправили), Адрес и Аргументы. Под отправителем строка подтверждает, что отправлено и сколько это байт; если отправить ещё раз, она посчитает повторы.

Уведомление о брандмауэре?

В Windows при запуске монитора под шапкой может появиться уведомление о брандмауэре Windows. Оно касается сообщений с других машин; трафик на 127.0.0.1 никогда не фильтруется. Пока нажмите Не сейчас — когда стоит дать разрешение, объясняет раздел Уведомление о брандмауэре.

Посмотрите на него в Инспекторе ​

Инспектор записывает каждый кадр, который отправляет и получает любой инструмент, — но только пока включён захват.

  1. В нижней панели откройте вкладку Инспектор.
  2. Нажмите Включить захват. Точка на вкладке загорится.
  3. Вернитесь к отправителю и нажмите Отправить ещё раз.

Появятся две строки, новые сверху: сообщение, как оно было отправлено (→) и как его получил монитор (←), — у каждой протокол, адрес другой стороны, размер и краткое содержание. Щёлкните одну из них: панель Детали кадра покажет, какой инструмент отправил или получил кадр и на каких адресах, само сообщение (Декодировано) и байты, из которых оно состоит (Байты).

Закончив, нажмите Выключить захват; выключенный захват ничего не стоит. Подробнее — в разделе Инспектор.

Сохраните его как сигнал и отправьте снова ​

Сообщению, которое ещё понадобится, место в библиотеке сигналов.

  1. На экране OSC нажмите Сохранить… под отправителем.
  2. В окне Сохранить в библиотеку укажите в поле Имя First message, а в поле Папка — Tutorial: новая папка создаётся, когда в неё сохраняют.
  3. Нажмите Сохранить.

Теперь отправитель привязан к этому сигналу: на кнопке написано Сохранено, а плашка рядом показывает, где лежит сигнал. Измените аргумент — и плашка отметит изменение; кнопка Сохранить (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 /health200 с {"status":"ok","time":"…"} — текущим временем
GET /users/:id200 с пользователем с этим id, например {"id":"42","name":"User 42"}
POST /users201 с заголовком Location и новым id
GET /slow200 через 1,5 секунды
любой метод, /flaky503, 503, а начиная с третьего запроса — 200
всё остальное404
  1. Откройте экран Эмуляторы. В списке Библиотека все пять; выберите Демо API.
  2. Нажмите Запустить. Теперь он отвечает на 127.0.0.1:8080 и работает как задача.
  3. Откройте экран HTTP. Метод — GET; задайте URL http://127.0.0.1:8080/health.
  4. Нажмите Отправить или Enter в поле URL.

В разделе Ответ видны Статус 200, Задержка, Размер, заголовки ответа и тело в JSON. Отправьте http://127.0.0.1:8080/flaky три раза: два ответа 503, затем 200 — так восстанавливающийся сервис выглядит для клиента, который повторяет запросы.

Вернитесь на экран Эмуляторы: панель Сейчас считает каждый запрос, а список Пришло показывает каждый из них со столбцами Правило (какое правило ответило) и Ответ. Оставьте Демо API работать — он понадобится дальше. Подробнее — в разделе Эмуляторы.

Запустите эксперимент ​

Эксперимент — это сценарий из шагов, который можно запускать снова и снова. Тот, с которым Signal Lab открывается в первый раз, — шаблон Проверка HTTP — отправляет запрос на http://127.0.0.1:8080/ и проверяет, что ответ — 200.

Откройте шаблон ​

  1. Откройте экран Эксперименты.
  2. Если на холсте нет четырёх узлов — Старт, HTTP-запрос, Статус HTTP, Финиш, — нажмите ☰ слева на панели инструментов (Эксперименты), выберите в списке шаблонов Проверка HTTP и нажмите Открыть схему. Открытие заменяет эксперимент на холсте; Ctrl+Z возвращает прежний.

Щёлкните узел, чтобы увидеть его настройки на панели Параметры справа. Эксперименты сохраняются сами по ходу правки.

Запустите и разберитесь, почему он не проходит ​

  1. Нажмите Запустить.

Под холстом открывается панель Ход запуска: по строке на каждый шаг, когда он начинается (Выполняется), и ещё раз, когда заканчивается, — время, узел и результат. Этот запуск не проходит:

  • Старт проходит и называет seed запуска.
  • HTTP-запрос проходит: запрос ушёл, и пришёл ответ — HTTP 404.
  • Статус HTTP не проходит: ожидался 200, а получен 404.

У Демо API нет маршрута для /, поэтому он ответил 404, и проверка это поймала. В строке вверху ленты написано Ошибка и указана причина. Щёлкните строку, чтобы выделить её узел на холсте.

Не прошёл сам запрос?

Если шаг HTTP-запрос не проходит из-за отказа в соединении, на 127.0.0.1:8080 никто не слушает: запустите Демо API на экране Эмуляторы и запустите эксперимент снова.

Исправьте запрос ​

  1. Щёлкните узел HTTP-запрос.
  2. На панели Параметры замените URL на http://127.0.0.1:8080/health.
  3. Нажмите Запустить.

На этот раз проходят все шаги: у Статус HTTP написано Условие выполнено, у Финиш — Сценарий завершён, а в заголовке ленты — Успешно.

Добавьте проверку ​

Статус 200 говорит, что сервис ответил, но не говорит, что именно. Проверьте и тело:

  1. Щёлкните узел Статус HTTP.
  2. На панели Параметры нажмите Добавить следующий — или нажмите A, когда фокус на холсте. Откроется меню узлов с полем поиска.
  3. Наберите assert_body и нажмите Enter. Между Статус HTTP и Финиш добавится узел Текст ответа, уже подключённый, с полем Содержит текст, готовым для ввода.
  4. Введите "status":"ok".
  5. Нажмите Запустить.

Новый шаг проходит. Замените текст на такой, которого в теле нет, и запустите снова — шаг не пройдёт, и будет указана причина.

Что остаётся после запуска ​

  • Отчёт. Когда запуск заканчивается, в заголовке ленты появляется Отчёт сохранён; наведите на надпись указатель, чтобы увидеть файл. Каждый завершившийся запуск, успешный или нет, записывает отчёт в папку runs вашей папки данных — со значениями, которые он использовал, и со всеми шагами. В браузере это ссылка для скачивания.
  • Seed. В заголовке также виден seed запуска с кнопкой Закрепить: случайные значения в запуске выводятся из его seed, и если закрепить его, они повторятся в точности.

Подробнее — в разделе Запуски и отчёты.

Уберите за собой ​

Нажмите Остановить всё в шапке: это остановит Демо API и всё остальное, что ещё работает. Ваш сигнал, эксперимент и его отчёты остаются в папке данных.

Что дальше ​

  • Основные понятия: идеи, на которых построены экраны, сигналы, задачи, эмуляторы и эксперименты.
  • Эксперименты: редактор целиком, а каждый вид узлов — в разделе Узлы.
  • OSC, HTTP и страницы других протоколов — когда направите Signal Lab на настоящее оборудование.
  • Командная строка: тот же эксперимент из терминала или конвейера.