搭建分布式测试环境和批量性能测试的思路
作者:网络转载 发布时间:[ 2013/1/4 10:34:53 ] 推荐标签:
配置文件设计好了,下面我们来写我们的Python脚本了(这里仅仅给出一些主要代码,大致明白意思可以了)
1.import subprocess
2.from mako.template import Template
3.import yaml
4.
5.# 运行一个测试任务
6.def runTask(config, task):
7. runAbench(config, task)
8.
9.def runAbench(config, task):
10. # 得到完成的abench运行命令
11. command = Template(config["abenchCommand"]).render(
12. abenchPath=config["abenchPath"],
13. parallelNum=task["parallelNum"],
14. seconds=task["seconds"],
15. targetHost=task["targetHost"],
16. targetPort=task["targetPort"],
17. queryFilePath=task["queryFilePath"],
18. )
19. pipe = subprocess.Popen(command,
20. stdin=subprocess.PIPE,
21. stdout=subprocess.PIPE,
22. stderr=subprocess.PIPE,
23. shell=True
24. )
25. # 读取abench的运行结果,因为可能得保存下来吧
26. result = pipe.stdout.read()
27. # 下面可能是保存结果什么的
28.
29.if __name__ == "__main__":
30. config = yaml.load(file(configFile))
31. for task in config["tasks"]:
32. runTask(config, task)
自动更新测试环境
在我实际测试过程中,因为要更新的环境其实相当复杂,多的时侯需要去10几台机器上做更新环境、停止/启动进程的操作。但我这里主要介绍思路,多一些机器和进程其实都一样。
接着刚才的配置文件,我们只是在每一个task中设计了加压任务,但在加压前需要更新哪些环境没有涉及,按照阿里巴巴的ISearch架构,我启动一个一行两列的Searcher环境,2列Searcher上有一个Merger,然后再有一个clustermap来监控。
1.abenchPath: /opt/usr/bin/abench # abench在哪儿?
2.abenchCommand: "${abenchPath} -p ${parallelNum} -s ${seconds} -k --http -o /dev/null ${targetHost} ${targetPort} ${queryFilePath}"
3.# 关于Searcher的一些通用配置
4.searcher:
5. templateConfigFile: /home/admin/access-log/searcher_server.cfg # 因为启动时的监听端口等信息需要从下面的运行任务中读取,因此这个也设计成一个模版文件
6. templateLogConfigFile: /home/admin/access-log/searcher_log.cfg
7. # 在Search机器上操作的命令
8. commands:
9. - "${searchRoot}/bin/is_searcher_server -c ${configFile} -l ${logConfigFile} -k stop > /dev/null 2>&1"
10. - "${searchRoot}/bin/is_searcher_server -c ${configFile} -l ${logConfigFile} -k start -d > /dev/null 2>&1"
11.# 关于Merger的一些通用配置,和Searcher差不多,不写了
12.
13.tasks:
14. # 第一个测试用例,我可能需要测试单线程的情况
15. -
16. id: 1 # ID的作用是你在脚本中可以拿id作为结果存放的目录
17. parallelNum: 1 # 并发数
18. seconds: 1800 # 压半个小时
19. targetHost: 10.20.137.22 # 目标主机
20. targetPort: 9999
21. queryFilePath: /home/admin/access-log/add-600w.query # 请求放在这儿
22.
23. # 两台Search机器,定义一个List
24. searchers:
25. -
26. host: 10.20.150.61
27. port: 6322 # 监听的端口
28. username: test # 因为需要通过ssh协议登录上去操作,因此需要用户名密码。如果你已经把机器ssh都打通了,那不需要了
29. password: 12345
30. configFile: "${searchRoot}/scripts/conf/searcher_server.cfg" # 启动时运行的配置文件
31. logConfigFile: "${searchRoot}/scripts/conf/searcher_log.cfg" # 启动时运行的日志文件
32. -
33. host: 10.20.150.60
34. port: 6322
35. username: test
36. password: 12345
37. configFile: "${searchRoot}/scripts/conf/searcher_server.cfg"
38. logConfigFile: "${searchRoot}/scripts/conf/searcher_log.cfg"
39.
40. # 我这边只有一台merger,如果merger也是有多台的话,也可以把这个设计成一个List
41. merger:
42. host: 10.20.137.22
43. port: 6088
44. username: test
45. password: 12345
46. configFile: "${searchRoot}/scripts/conf/merger_server.cfg"
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11