Установка, настройка и запуск тестов Tempest для Openstack

от автора

В этой статье рассмотрим установку, настройку tempest и запуск тестов. Tempest — это инструмент Openstack для интеграционного тестирования. В tempest есть как наборы интеграционных тестов, так и модульные тесты для отдельных проектов, например, для neutron-lbaas. Мы настроим tempest для работы со стеком с F5 Openstack Agent и F5 Openstack LBaaSv2 driver.

Подробнее о том, как команда F5 OpenStack используют Tempest, вы можете прочитать в статье F5 OpenStack Testing Methodology (Методология тестирования F5 OpenStack).

Большая часть информации для этой статьи взята из документации Tempest — The Openstack Integration Test Suite. 

Установка Tempest

Начинаем с установки Tempest. Создаем виртуальное окружение:

pip install virtualenv # Укажите директорию, в которой можно создать директории виртуального окружения. virtualenv <test-env> source <test-env>/bin/activate

После установки и активации virtualenv клонируйте репозиторий tempest и выполните pip install:

git clone http://git.openstack.org/openstack/tempest pip install tempest/

При установке tempest будет создан каталог /etc/tempest в virtualenv с примером файла конфигурации. Укажите в tempest.conf и account.yaml необходимые параметры, скопируйте оба файла в  директорию <test-env>/etc/tempest/ и выполните следующую команду:

export TEMPEST_CONFIG_DIR=<test-env>/etc/tempest/

Запуск тестов Tempest для проекта neutron_lbaas

Для запуска юнит-тестов neutron_lbaas клонируйте проект:

git clone https://github.com/openstack/neutron-lbaas.git

Для тестов можно также использовать tox. Установите его с помощью pip:

pip install tox

Настройка файла tox.ini

При установке tox будет создан файл tox.ini в корне проекта neutron_lbaas. Для запуска tox для lbaasv2 в файле tox.ini в параметре envlist укажите только apiv2. Первый запуск tox для пакета neutron_lbaas займет около 15 минут из-за создания virtualenv в каталоге .tox в директории проекта и установки зависимостей. Последующие запуски будут намного быстрее.

envlist=apiv2

В этой статье будем запускать тесты с помощью py.test. Добавляем pytest в deps в файле tox.ini:

deps=<already defined dependencies>   Pytest

Также добавляем pytest в параметр commands раздела [testenv:apiv2]

commands={posargs:py.test}

Файл tempest.conf

Ниже приведен пример tempest.conf  с комментариями для обязательных параметров. Не забудьте раскомментировать необходимые параметры, иначе они будут заменены значением по умолчанию.

[auth]  ######################  # Укажите учетные данные в файле accounts.yaml   # и сохраните его в том же каталоге, что и файл tempest.conf  ######################  #test_accounts_file = <None>    ######################  # Укажите здесь значение admin  ######################  #admin_username = <None>     ######################  # Имя проекта в Openstack  ######################  #admin_project_name = <None>    ######################  # Пароль пользователя admin в Openstack  ######################  #admin_password = <None>      [compute]  ######################  # Параметр требуется для scenario-тестов,   # раскомментируйте image_ref и укажите image_id для образа cirros в Glance  ######################  #image_ref = <None>    ######################  # Укажите flavor_ref из списка доступных flavor   # для scenario-тестов  ######################  #flavor_ref = 1     ######################  # Имя сети для admin tenant,  # которая имеет порты в router и external_network   ######################  #fixed_network_name = <None>     [identity]  ######################  # uri в следующем формате:  # http://<CONTROLLER_IP>:35357/v2.0  ######################  #uri = <None>      [identity-feature-enabled]   ######################  # api_v2 надо установить в true  ######################  # Включение v2 identity API (boolean)  #api_v2 = true       [network]   ######################  # Укажите cidr из "fixed_network_name"  ######################  #project_network_cidr = 10.100.0.0/16     #####################  # Маска подсети для "fixed_network_name"  #####################  #project_network_mask_bits = 28       ######################  # Идентификатор External network.  ######################  #public_network_id =     ######################  # Имя External network.  ######################  #floating_network_name = <None>     ######################  # Идентификатор public router.  ######################  #public_router_id =     ######################  # Адрес DNS-сервера  ######################  #dns_servers = 8.8.8.8,8.8.4.4     ######################  # Адрес fixed network  ######################  #default_network = 1.0.0.0/16,2.0.0.0/16      [service_available]     ######################  # Включение neutron (boolean).  ######################  #neutron = false     [validation]     ######################  # Имя пользователя для образа, ID которого указано в image_ref.  # Для образа cirros это "cirros"  ######################  #image_ssh_user = root     ######################  # Пароль для образа, ID которого указано в image_ref.  # Для образа cirros это "cubswin:)"  ######################  #image_ssh_password = password     ######################  # Имя сети в admin tenant,   # которая может использоваться для SSH подключений  ######################  network_for_ssh = tempest-mgmt-network

Файл account.yaml

Заполните username, tenant_name и password.

username: 'admin'   tenant_name: 'admin'   password: 'changeme'

Запуск тестов

В проекте neutron_lbaas есть API-тесты и scenario-тесты. Тесты API отвечают за проверку API Openstack, scenario — это «сквозные» тесты. После настройки tempest.conf и account.yaml вы сможете запустить тесты с помощью следующей команды:

cd neutron_lbaas/ tox -- py.test -lvv neutron_lbaas/tests/tempest/v2/api/test_health_monitor_admin.py

Теперь, когда у вас настроен Tempest, вы можете перейти к написанию собственных тестов Tempest. Подробнее смотрите в F5 Tempest Plugin and Writing Tempest Tests.


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

При решении данной задачи возникают вопросы, как поставлять тесты и в каком виде их поставлять? На эти и другие вопросы вы получите ответы на открытом уроке онлайн-курса «Автоматизация тестирования OpenStack». На данном уроке рассмотрим:
— Docker, как инструмент поставки тестов;
— рассмотрим, как обернуть тесты на tempest в докер образы и поставить их заказчику;
— разберем Docker как технологию.


ссылка на оригинал статьи https://habr.com/ru/company/otus/blog/700170/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *