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

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

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

    На данном этапе, для этих задач используется 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


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



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



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



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


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



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


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

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



    Запуск Tempest


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



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


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



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


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





    Бенчмаркинг 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.



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





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





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





    Заключение


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

    Оригинал статьи на английском языке.
    • +10
    • 3,2k
    • 2

    Mirantis/OpenStack

    56,00

    Компания

    Поделиться публикацией
    Комментарии 2
      0
      Tempest это не TEMPEST. Фух.
        0
        Допустимые названия наборов тестов: full, smoke, baremetal, compute, data_processing, identity, image, network, object_storage, orchestration, telemetry и volume.

        А не подскажете, где можно найти описание каждого из этих наборов? Имею в виду какие тесты включены и что они делают

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое