这两天一直在研究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
的确社区已经去掉了无疑,至于原因,暂时未知