最新社区Tempest结构

这两天一直在研究tempest,目前社区最新的目录结构如下

$ tree -F -L 2
.
├── HACKING.rst
├── LICENSE
├── README.rst
├── REVIEWING.rst
├── doc/
│   └── source/
├── etc/
│   ├── accounts.yaml.sample
│   ├── javelin-resources.yaml.sample
│   ├── logging.conf.sample
│   └── whitelist.yaml
├── openstack-common.conf
├── requirements.txt
├── run_tempest.sh*
├── run_tests.sh*
├── setup.cfg
├── setup.py
├── tempest/
│   ├── README.rst
│   ├── __init__.py
│   ├── api/
│   ├── api_schema/
│   ├── clients.py
│   ├── cmd/
│   ├── common/
│   ├── config.py
│   ├── exceptions.py
│   ├── hacking/
│   ├── manager.py
│   ├── scenario/
│   ├── services/
│   ├── stress/
│   ├── test.py
│   ├── test_discover/
│   ├── tests/
│   └── thirdparty/
├── test-requirements.txt
├── tools/
│   ├── check_logs.py*
│   ├── check_uuid.py*
│   ├── colorizer.py*
│   ├── config/
│   ├── find_stack_traces.py*
│   ├── install_venv.py
│   ├── install_venv_common.py
│   ├── pretty_tox.sh*
│   ├── pretty_tox_serial.sh*
│   ├── skip_tracker.py*
│   └── with_venv.sh*
└── tox.ini

17 directories, 33 files

主要的测试代码都在tempest/tempest下面,但是觉得跟目前我们用的havana版本变化还是挺大的,就核心代码来看

$ tree -F -L 1
.
├── README.rst
├── __init__.py
├── api/
├── api_schema/
├── clients.py
├── cmd/
├── common/
├── config.py
├── exceptions.py
├── hacking/
├── manager.py
├── scenario/
├── services/
├── stress/
├── test.py
├── test_discover/
├── tests/
└── thirdparty/

11 directories, 7 files

少了一些,然后多了一些;花了点时间都捋了一捋

api:这个没变,依旧是API接口的测试用例

api_schema:看了下这个目录下有request和response两个文件夹,八成是辅助API接口测试的一些依赖函数

cmd:这个好像是啥时候新添加的,看了下里面的脚本,基本都是执行一些系统命令,做一些初始化或者清理工作

common:看了下,好像也是一些公用的类和函数

hacking:2013年IBM里面加了一个脚本,看了下,不知所云

scenario:这个目录下有些脚本,基本是测试常用的场景,比如虚拟机启动,网络连通性,卷的挂卸载等

services:这个目录下是tempest自己实现了一套openstack的API接口,目测跟api_schema是一伙的,共同封装了一层接口

stress:根据名字也知道是压力测试,从driver.py里看到了import multiprocessing,猜想也应该是起多个并发操作进行压力测试

test_discover:看了下,里面就三个脚本,都是test什么plugins的

tests:未知

third party:一堆EC2,S3命名,猜想应该是为了兼容亚马逊AWS的一些接口

 

除了上面这些,我印象深刻少了一个重要的东西:cli

下面是havana版本当时的tempest

$ tree -F -L 2
.
├── README.rst
├── __init__.py
├── output_parser.py
└── simple_read_only/
    ├── README.txt
    ├── __init__.py
    ├── heat_templates/
    ├── test_ceilometer.py
    ├── test_cinder.py
    ├── test_glance.py
    ├── test_heat.py
    ├── test_keystone.py
    ├── test_neutron.py
    ├── test_nova.py
    └── test_nova_manage.py

2 directories, 13 files

测试啥的呢,看下面就知道了

$ cat simple_read_only/test_nova.py | grep '\-list'
        self.nova('image-list')
        self.nova('interface-list')
        self.nova('keypair-list')
        self.nova('network-list')
        self.nova('secgroup-list')
        self.nova('secgroup-list-rules')
        self.nova('service-list')

没错,测试通过client直接调用的系统命令的正确性,不清楚为什么会被去掉,查看了下github的记录

| tempest/
 |    api/ - API tests
-|    cli/ - CLI tests
 |    scenario/ - complex scenario tests
 |    stress/ - stress tests
 |    thirdparty/ - 3rd party api tests
 @@ -38,16 +37,6 @@ projects themselves, possibly as functional tests in their unit test

的确社区已经去掉了无疑,至于原因,暂时未知

发表回复