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 配置文件的填写
配置文件主要由以下几个部分(Q版):
配置项组 (中文) |
配置项组 (英文) |
功能 |
默认 |
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时创建的网络。在二者同时存在的情况下,优先使用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 <testcase_name> |
此时Tempest配置文件应在/etc/tempest目录下。