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