notice:该设计文档是基于demo项目进行的,设计一些技术上的验证,以及整个流程的打通,今后正式开发,也是基于这个核心进行扩展。
前端设计
技术栈:
- html5
- jQuery
- ajax
- jinja2

模块:
前端主要涉及三个模块。rally的压力测试,tempest功能性测试,配置信息。
关于流程:rally和tempest测试项都是openstack的一些常用组件,在前端通过jquery,ajax,jinja2和后端进行数据交互。
同时,在前端click触发后端进行相关的操作。
关于数据:前端和后端数据格式统一采取json格式。后端向前端传递数据为测试平台获得的经过处理的json格式的数据。这些数据用于展示测试结果。
服务端设计
技术栈:
- flask
- python
- 蓝图
- 路由
- 工厂模式

模块:
服务端主要涉及三个模块:展示模块,主要是为了和前端进行交互的;远程处理,主要是完成在测试平台完成测试的,以及获取一些测试结果;而数据处理主要是对测试结果进行分析提取,使用设计的数学模型对rally和tempest模块进行分。
关于流程:整个服务端开发基于Python的flask web框架进行开发,使用蓝图进行路由的注册,为了后续易于扩展其他openstack组件来进行测试,使用蓝图可以很方便进行解耦。同时因为很多模块使用蓝图都需要在application注册路由,为了方便使用工厂模式进行处理。
远程模块的处理主要使用paramiko模块进行远程连接和执行命令。并把处理的数据保存到本地。
数据处理:数据处理模块的流程暂时只是把后端测试结果(json)格式的保存到本地,后续会采用一些算法进行分类处理。
测试平台
技术栈:
- linux命令
- rally使用
- shell脚本
- apache+docker(部署使用)

模块:
这部分主要是在openstack可达环境进行测试,测试项为rally和tempest,然后对数据进行简单处理(如:生成的html报告去掉google的渲染)
关于流程:由于是demo的设计方案,所以上图只给出了rally的demo设计方案。主要对rally安装,以及在rally中注册openstack的认证。通过rally调用openstack的api来进行测试工作。rally执行测试命令和步骤集成到一个shell脚本里进行,然后再通过另外一个脚本来进行对数据的处理。