В этой статье рассмотрим установку, настройку 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 как технологию.

Комментарии (0)