Guia de Integração e Validação do OpenStack com Tempest

Arquitetura e Propósito do Framework

O Tempest funciona como a suíte oficial de testes de integração para infraestruturas OpenStack. Diferente de testes unitários isoldaos, ele valida o comportamento real dos serviços em conjunto. A organização interna do código segue uma divisão lógica por camadas de validação:

  • api/: Validação contrato a contrato dos endpoints REST.
  • scenario/: Fluxos completos de uso, como provisionamento de instâncias, attach de volumes e configuração de redes virtuais.
  • cli/: Verificação da saída e comportamento dos clientes de linha de comando.
  • services/: Implementação própria de clientes HTTP para evitar que falhas nas bibliotecas oficiais mascarem erros na nuvem.
  • stress/: Carga concorrente utilizando multiprocessing para simular picos de requisições.
  • whitebox/: Testes de caixa branca que manipulam diretamente o banco de dados antes de disparar chamadas de API.

A base do framework é construída em Python, orquestrada por runners como nose ou stestr, e depende de bibliotecas como testtools para asserções avançadas. A classe raiz BaseTestCase gerencia o carregamento automático de arquivos de configuração, enquanto TestCase expõe métodos utilitários reutilizáveis. Cada validação pode ser executada negociando payloads em JSON ou XML.

Preparação do Ambiente

A obtenção do código-fonte e a instalação das dependências devem ser realizadas em um ambiente virtual isolado para evitar conflitos de pacotes:

# Clonar o repositório em um diretório personalizado
git clone https://opendev.org/openstack/tempest.git /opt/validacao-cloud
cd /opt/validacao-cloud

# Instalar dependências primárias antes do pacote principal
pip install -r requirements.txt
pip install .

# Módulos complementares para execução, logging e acesso remoto
pip install nose oslo.log testrepository paramiko urllib3

Geração e Ajuste de Configuração

O arquivo de configuração central é gerado através do tox. Após a criação do template, copie-o para o diretório de trabalho e ajuste os parâmetros de acordo com a topologia da sua nuvem:

# Instalar ferramentas de build e gerar o template
pip install tox
tox -egenconfig
cp etc/tempest.conf.sample etc/tempest.conf

A edição do tempest.conf exige o mapeamento correto dos endpoints e credenciais. Abaixo, um exemplo simplificado com as seções críticas:

[auth]
use_dynamic_credentials = true
admin_username = cloud_admin
admin_project_name = service_project
admin_password = S3cur3P@ss
admin_domain_name = Default

[compute]
image_ref = ubuntu-22.04-server
flavor_ref = m1.tiny
flavor_ref_alt = m1.small

[identity]
uri = http://10.0.80.15:5000/v3
uri_v3 = http://10.0.80.15:5000/v3
auth_version = v3
username = cloud_admin
project_name = service_project
password = S3cur3P@ss
domain_name = Default

[identity-feature-enabled]
api_v3 = true

[dashboard]
dashboard_url = http://10.0.80.15/
login_url = http://10.0.80.15/auth/login/

Para detalhes sobre cada parâmetro, consulte a documentação oficial de configuração do projeto.

Execução de Casos de Teste

A execução pode ser segmentada conforme a necessidade de validação. Utilize os runners compatíveis para filtrar módulos ou arquivos específicos:

# Validar um módulo administrativo específico
testr run tempest.api.compute.admin.test_servers_admin

# Executar toda a suíte de testes (pode consumir bastante tempo)
nosetests tempest

# Focar apenas nos testes de identidade
nosetests tempest/tests/identity

# Rodar um arquivo de validação isolado
nosetests tempest/api/identity/v3/test_domains.py

Padrões de desenvolvimento e boas práticas para contribuir com novos casos de teste estão detalhados no guia de contribuição do repositório.

Tags: openstack Tempest Python IntegrationTesting CloudInfrastructure

Publicado em 10-7 21:21