
В этой статье рассмотрим установку, настройку 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/
Добавить комментарий