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

1 Tempest配置

1.1 配置文件模板

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

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

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

1.3.2 静态凭证

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

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

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

[auth]
use_dynamic_credentials = false
test_accounts_file = <path_to_credential_yaml>

开启静态凭证需要关闭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时创建的网络。在二者同时存在的情况下,优先使用account file中的网络,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 <testcase_name>

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

发布了5 篇原创文章 · 获赞 0 · 访问量 85

猜你喜欢

转载自blog.csdn.net/yangfan16120029/article/details/105338189