Tempest学习笔记 003:Tempest配置与运行

1 Tempest配置

1.1 配置文件模板

[DEFAULT]
debug =                          #是否开启DEBUG模式
log_file =                        #日志文件名
log_dir =                         #日志文件路径
 
[auth]
use_dynamic_credentials =        #是否开启动态凭证
admin_username =                  #管理员用户名
admin_password =                  #管理员密码
admin_project_name =              #管理员项目名
admin_domain_name =               #管理员域名
  
[service_available]
nova =                           #nova是否开启
neutron =                        #neutron是否开启
cinder =                         #cinder是否开启
glance =                         #glance是否开启
  
[scenario]
img_dir =                         #镜像文件存储路径
img_file =                        #镜像文件名
  
[validation]
image_ssh_user =                  #SSH连接用户名
image_ssh_password =              #SSH连接密码
 
[compute]
image_ref =                       #创建虚机的默认镜像
image_ref_alt =                   #虚机rebuild的镜像
flavor_ref =                      #创建虚机的默认规格
flavor_ref_alt =                  #虚机resize的规格
min_compute_nodes =                  #计算节点数
min_microversion =                #支持的最低nova micro version
max_microversion =                #支持的最高nova micro version
 
[compute-feature-enabled]
snapshot =                       #是否开启快照功能
shelve =                         #是否开启shelve功能
live_migration =                 #是否开启热迁功能
cold_migration =                 #是否开启冷迁功能
volume_backed_live_migration =   #是否开启卷启动虚机的热迁移功能
resize =                         #是否开启resize功能
vnc_console =                    #是否开启VNC控制台功能
 
[network]
public_network_id =               #外网ID
floating_network_name =           #外网名称
 
[network-feature-enabled]
ipv6_subnet_attributes =         #是否开启IPv6子网
ipv6 =                           #是否开启IPv6
 
[volume]
volume_size =                        #卷大小
min_microversion =                #支持的最低cinder micro version
max_microversion =                #支持的最高cinder micro version
storage_protocol =                #存储协议
vendor_name =                     #厂商名称
 
[volume-feature-enabled]
bootable =                       #卷启动
backup =                         #卷备份
snapshot =                       #卷快照
  
[identity]
region =                          #区域
auth_version = 					  #keystone版本
uri = 							  #认证服务URI
uri_v3 = 						  #认证服务v3 URI

1.2 配置文件的填写

配置文件主要由以下几个部分:

配置项组 (中文) 配置项组 (英文) 功能
默认 DEFAULT 调试参数
认证信息 auth 认证参数
服务可用性 service-available 服务是否开启
计算 compute 计算模块测试用例默认参数
网络 network 网络模块测试用例默认参数
块存储 volume 存储模块测试用例默认参数
计算功能 compute-feature-enabled 计算模块内功能开关
网络功能 network-feature-enabled 网络模块内功能开关
存储功能 volume-feature-enabled 存储模块内功能开关
场景测试 scenario 场景测试测试用例默认参数
验证 validation 验证SSH连接的参数

1.3 动态凭证与静态凭证

Tempest测试时有动态凭证(Dynamic Credential)和静态凭证(Preprovision Credential)2种选项。

1.3.1 动态凭证

动态凭证指执行每个测试用例类的时候使用admin权限创建项目、用户并指定user的角色,每一个资源都在该项目下。

动态凭证所需的认证部分配置内容如下:

[auth]
use_dynamic_credentials = true
admin_username = admin
admin_project_name = admin
admin_password = 
admin_domain_name = Default

use_dynamic_credentials用于开启动态凭证。由于创建项目、用户等需要管理员权限,其余关于管理员的认证信息也需要填写完整。

动态凭证可根据执行测试用例时的需要创建项目和用户,对执行测试的并行性没有影响。

1.3.2 静态凭证

静态凭证指预先指定好执行测试用例的项目、用户等凭证信息。采用这种方式时,Tempest不会创建新的项目和用户。

在Tempest中可使用tempest account-generator创建用于指定并行数的项目和用户。

静态凭证所需的认证部分配置内容如下:

[auth]
use_dynamic_credentials = false
test_accounts_file = 

开启静态凭证需要关闭use_dynamic_credentials,并填写保存着认证信息的.yaml文件。

1.4 网络

Tempest测试脚本中创建虚机需要指定网络,网络的来源有以下三种:

配置文件中fixed_network_name指向的网络,该网络需对所有租户可见。
account file中指定的网络,该网络一般为tempest account generator在创建租户时创建。
tempest脚本在setup_credential()时创建的网络。

1.4.1 静态凭证

静态凭证下的网络可使用fixed network或account file中指定的网络。在二者同时存在的情况下,优先使用account file中的网络,fixed network为备选方案。

1.4.2 动态凭证

动态凭证下的网络可使用fixed network或setup_credential时创建的网络。在二者同时存在的情况下,优先使用setup_credential中的网络,fixed network为备选方案。

若使用setup_credential()时创建的网络,需要注意配置文件中的create_isolated_networks选项,该选项默认为True,即开启动态创建的网络。若该选项为False,则不能使用动态创建的网络。

需要使用动态创建网络的脚本测试用例类中需覆盖基类的setup_credential(),并在调用父类setup_credential()前调用prepare_instance_network(),如:

@classmethod
def setup_credentials(cls):
    cls.prepare_instance_network()
    super(ServerActionsTestJSON, cls).setup_credentials()
prepare_instance_network()会创建一整套VPC,且路由的网关为ext-net:

@classmethod
def prepare_instance_network(cls):
    if (CONF.validation.auth_method != 'disabled' and
            CONF.validation.connect_method == 'floating'):
        cls.set_network_resources(network=True, subnet=True, router=True,
                                  dhcp=True)

使用该函数创建VPC时需要注意tempest配置文件中validation的配置。

2 Tempest运行

可使用以下几种方法执行Tempest测试用例。

2.1 Tempest命令行

2.1.1 方式一

  • 创建工作空间(tempest init my_space)
    执行后会在目录下形成名为my_space的文件夹,其中/etc目录可放置tempest的配置文件。
  • 执行测试(tempest run)
    运行测试,可使用regex指定正则表达式,可指定并行数等。

2.1.2 方式二

  • 创建.stestr.conf文件
    文件中包含stestr的配置信息,如:
[DEFAULT]
test_path=./tempest/test_discover
  • 执行测试(tempest run)

2.1.3 tempest run命令

[root@ ]# tempest run --help
usage: tempest run [-h] [--workspace WORKSPACE]
                   [--workspace-path WORKSPACE_PATH]
                   [--config-file CONFIG_FILE] [--smoke | --regex REGEX]
                   [--black-regex BLACK_REGEX]
                   [--whitelist-file WHITELIST_FILE]
                   [--blacklist-file BLACKLIST_FILE] [--load-list LOAD_LIST]
                   [--list-tests] [--concurrency CONCURRENCY]
                   [--parallel | --serial] [--save-state] [--subunit]
                   [--combine]

Run tempest

optional arguments:
  --workspace WORKSPACE
                        指定工作空间
  --config-file CONFIG_FILE
                        指定配置文件
  --smoke, -s           只运行冒烟测试
  --regex REGEX, -r REGEX
                        指定正则表达式
  --black-regex BLACK_REGEX
                        指定正则表达式,排除符合条件的用例
  --concurrency CONCURRENCY, -w CONCURRENCY
                        指定并发数,默认为CPU个数
  --parallel            是否并行
  --serial, -t          串行测试

2.2 stestr

  • 创建.stestr.conf文件
  • 执行测试(stestr run)

2.3 testtools

运行以下命令:

python -m testtools.run 

此时Tempest配置文件应在/etc/tempest目录下。

你可能感兴趣的:(Tempest)