Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

в 12:12, , рубрики: open source, openrc, opensource, openstack, rally, tempest, бенчмаркинг, Блог компании Mirantis/OpenStack, мирантис

Автор: Андрей Курилин

В современном мире, при построении облачных сервисов ограничиться лишь установкой платформы не удается, приходится модернизировать компоненты, интегрировать новые аппаратные средства, заниматься масштабированием и вносить множество изменений в настройки. Но как при этом оставаться уверенным в том, что после всех этих изменений ваше облако продолжит исправно работать и служить на благо империи заказчикам?

На данном этапе, для этих задач используется Tempest (официальный компонент OpenStack для функционального тестирования). Tempest тесты автоматически прогоняются для каждого нового изменения практически во всех проектах OpenStack, что позволяет сократить вероятность применения неправильных изменений(битых, кривых, другими словами — изменений, которые могут сломать что-либо в вашей инфраструктуре).

Однако при использовании Tempest пользователи зачастую сталкиваются с некоторыми неудобствами. Использование Tempest напоминает мне изучение Ассемблера в университете. Написание и выполнение инструкций ассемблера напрямую доставляло массу неудобств хотя бы тем, что нельзя было без боли и страданий исправлять свои ошибки, из-за возможных сдвигов памяти. Когда нам предложили возможность использовать Turbo Pascal, как среду запуска инструкций ассемблера, мы были безмерно счастливы, процесс изучение и разработки приложений на Ассемблере был значительно упрощен. Аналогичные ощущения я испытываю, когда вместо мучений с конфигурацией Tempest’а я могу парой простых команд протестировать свое облако.

В большинстве случаев, использовать Tempest сложно и времязатратно. Кроме того, Tempest не поддерживает ряд функциональных возможностей для нагрузочного тестирования, таких как моделирование нагрузки и предоставление результатов в графической форме.

Решить эти проблемы может Rally — проект OpenStack, который способен на многое, в частности: создать окружения для верификации, тестировать производительность, а так же бенчмаркинг OpenStack(в том числе и с помощью Tempest).

Если говорить о Rally+Tempest, то Rally автоматизирует процесс установки, настройки и выполнения Tempest-тестов. В отличие от Tempest, который необходимо устанавливать и конфигурировать отдельно на каждом кластере, единожды установленный сервис Rally может проверять огромное количество облаков – для этого необходимо лишь добавить информацию о ваших кластерах в Rally, при чем между ними впоследствии можно легко переключаться. Механизм бенчмаркинга Rally способен автоматически выполнять тесты, моделируя пользовательскую нагрузку. Результаты как верификации, так и бенчмарков, сохраняются в базу данных Rally. Вы можете просмотреть их сразу, либо спустя определенный период, чтобы сравнить, как изменения конфигурации вашего облака влияют на его работу.

Далее мы рассмотрим, как использовать Rally и Tempest, но перед тем, как перейти к самому интересному, перечислим основные причины интеграции Rally с Tempest:
1.Большинство проектов OpenStack используют системы CI/CD, которые базируется на Tempest для автоматического тестирования новых изменений. Исходя из этого, если есть возможность облегчить жизнь разработчикам, а именно позволить им использовать Tempest более активно и удобно, то мы должны это сделать!

2.Нагрузочное тестирование с помощью Tempest-тестов:

1.В рамках Tempest уже разработано множество тестов, так что нет необходимости дублировать их в Rally. Чем меньше дублирования кода, тем лучше.

2. Верификация не должна ограничиваться тестированием без нагрузки. Rally может моделировать нагрузку для Tempest. Иными словами, механизм бенчмаркинга в Rally может запускать Tempest-тесты с различным количеством (моделируемых) активных пользователей.

3. Debbuging Tempest и OpenStack. При обнаружении race condition в гейтах(“gates”), разработчики смогут запускать один и тот же тест (или набор тестов) под нагрузкой в своей среде, что позволит легче выявлять источник возникновения такого рода ошибок.

Можно много говорить о крутости и перспективности Rally, но вы никогда не узнаете, насколько хорош Rally, пока не испытаете его в действии. Итак, вероятно вы уже готовы перейти от «лирики» к практике. Тогда приступим!

Установка Rally

Неудивительно, но для использования Rally его необходимо для начала скачать(репозиторий github), ну а потом запустить скрипт-установки “install_rally.sh”.

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Добавление вашего облака в Rally

После успешной установки, следует добавить облако в Rally, которое будет тестироваться. Эту операцию можно совершить двумя способами. Один из вариантов инициализации кластера в Rally — использование OpenRC вашего облака. Например вот так:

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Второй способ — описание облака в json-файле, который следует передать в ‘rally deployment create’, используя аргумент –file:

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Выполнив команду `rally deployment list`, вы сможете увидеть список всех инициализированных “развертываний”.

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Проверка вашего облака

Используя `rally deployment check` вы можете проверить корректность добавленного развертывания, а так же увидеть, какие сервисы доступны в вашем облаке из Rally:

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Подготовка Tempest для вашего облака

Как уже упоминалось ранее, Rally может одновременно работать с огромным количеством облаков, следовательно для каждого облака кастомизируется свой Tempest. С целью снижения времени, которое тратится для клонирования репозитория Tempest, Rally клонирует его один раз и затем использует локальный репозиторий, кастомизируя его под каждое облако.

Подготовка Tempest(клонирование репозитория и установка виртуальной среды со всеми зависимостями) выполняется командой `rally-manage tempest install`.

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Запуск Tempest

Запуск автоматической проверки облака(иными словами — верификация облака) реализован с помощью команды `rally verify start`, ей требуется только один аргумент: имя набора тестов. Если данный аргумент не указан, будут выполнены smoke тесты (по умолчанию). Результат данной команды аналогичен результату, выдаваемому Tempest.
Допустимые названия наборов тестов: full, smoke, baremetal, compute, data_processing, identity, image, network, object_storage, orchestration, telemetry и volume.

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Вывод списка всех результатов Tempest

Результаты всех верификаций хранятся в базе данных Rally, так что вы сможете просмотреть и сравнить их в любой момент. Списки запущенных проверок отобразятся на экране при помощи команды `rally verify list`.

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Просмотр результатов конкретной верификации

Просмотр результатов конкретной верификации можно осуществить двумя командами: `rally verify show` и `rally verify detailed`. Последняя дополняет вывод первой команды traceback’ами тестов, которые завершились с ошибкой.

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Бенчмаркинг Tempest-тестами

Помимо установки, настройки и запуска Tempest, Rally может моделировать пользовательскую нагрузку, используя Tempest-тесты. Результаты нагрузочного тестирования также сохраняются и впоследствии могут быть отображены.

Запустим бенчмарк и смоделируем нагрузку(от 2 до 10 пользователей) для следующего тестового сценария: tempest.api.identity.admin.v3.test_domains.DomainsTestXML.test_create_update_delete_domain.
После завершения теста, используя команду `rally task plot2html`, сгенерируем HTML-файл с результатами. Информацию и примеры, как правильно задаются входные данные в файлах JSON/YAML, используемых для определения данного задания, можно найти в репозитории Rally(в директории rally/doc/samples/tasks) или на странице OpenStack wiki.

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

При 2-х активных пользователях:

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

При 6-и активных пользователях:

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

При 10-х активных пользователях:

Rally: Тестировать OpenStack с помощью Tempest стало просто (проще)

Заключение

При использовании облаков в продакшене вам придется иметь дело с постоянными изменениями. Возникает вопрос: как проверять каждое изменение? Tempest – хорошее, но громоздкое решение. Rally, среди прочего, может упростить его использование.
Rally предоставляет механизм для нагрузочного тестирования OpenStack, и теперь, благодаря интеграции с Tempest, библиотека тестовых сценариев стала огромной. Ускорит ли ваше исправление выполнение каких-либо операций? Такое же у вас быстрое облако, как у ваших конкурентов? Почему бы не выяснить это с помощью Rally?!

Оригинал статьи на английском языке.

Автор: Mirantis_OpenStack

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js