Happy — это инструмент для упрощенной оркестровки смоделированных сетевых топологий. Используйте его для тестирования сетевых протоколов и других распределенных программ выполнения на одном компьютере для разработки Linux без использования аппаратного обеспечения устройства IoT.
Что это такое?
Happy моделирует сложные сетевые топологии. На одном компьютере с Linux Happy может создать несколько узлов с независимыми друг от друга сетевыми стеками. Некоторые узлы могут быть подключены к смоделированным сетям Thread, другие могут подключаться к смоделированным сетям Wi-Fi, WAN (Интернет) или сотовым сетям.
Happy обращается к следующим вариантам использования:
- Тестирование сетевых протоколов и других распределенных программ выполнения на одной машине разработки Linux без использования оборудования
- Выполнение автоматизированного функционального тестирования в сети
- Запуск нескольких одновременных параллельных сетей в одной системе для повышения производительности тестирования.
Happy решает эти проблемы, создавая абстракции сетевой топологии с минимальной нагрузкой на пользователя. Сложные топологии могут быть созданы одним вызовом команды оболочки. Happy поддерживает как интерактивное использование, так и автоматическое создание сценариев.
Используйте команды оболочки Happy для настройки, тестирования и отладки их кода во время разработки. Та же сетевая конфигурация и тестовые программы могут быть затем написаны сценариями и использованы в автоматизированном тестировании.
Начать
Самый быстрый и простой способ начать работу с Happy — пройти Codelab. Он знакомит пользователя со всеми основами Happy, включая:
- Создание и удаление топологии
- Сетевые узлы вместе
- Сохранение и восстановление топологий
- Подключение топологии к Интернету
- Основы плетения
Попробуйте Начало работы с Happy Codelab
Дополнительные сведения о настройке и использовании Happy см. в разделе « Настройка и использование».
Архитектура
Счастливые модели следующие:
- Node — сетевое пространство имен Linux. Процессы, составляющие узел, выполняются в указанном сетевом пространстве имен.
- Ссылка — сетевой интерфейс Linux. Happy использует сетевое устройство
veth
для поддержки интерфейсов L3 (IP) и сетевое устройствоtap
для поддержки интерфейсов L2 из коробки. - Сеть — сетевые пространства имен Linux с работающим в них мостом Ethernet.
Реализация
Happy — это набор модулей Python. Модули Core Happy предоставляют абстракции для:
- Управление абстракциями узлов
- Добавление, изменение и удаление узлов
- Запуск набора процессов внутри узла
- Управление ссылками
- Добавление, изменение и удаление ссылок
- Назначение ссылок узлу и сети
- Назначение и изменение назначений адресов
- Управление сетями
- Создание, изменение и уничтожение сетей
- Сетевое подключение
- Согласованное управление общим состоянием фреймворка
Большинство абстракций, реализованных модулями Happy, отображаются в команды, которые вызывают сетевые инструменты Linux.
Happy также содержит набор плагинов, которые можно найти в /plugins
. Плагины реализуют набор функций, связанных с определенной технологией. Например, /plugins/weave
содержит помощники, которые оборачивают различные приложения Weave для выполнения в Happy.
Исполнение
Пользователи могут создавать смоделированные топологии двумя способами:
- Команды оболочки — все команды находятся в
/bin
. - Скрипты Python — импортируйте модули Happy для вызова команд Happy в ваших собственных скриптах Python. Модули находятся в
/happy
.
Дополнительные сведения об использовании модулей Happy в ваших собственных скриптах Python см. в разделе Python scripting .