搭建分布式测试环境和批量性能测试的思路
作者:网络转载 发布时间:[ 2013/1/4 10:34:53 ] 推荐标签:
然后比如关于Searcher的配置文件,在上面也是一个模版文件阿,我们可以把这个文件设计成:
1.se_conf_file=${searchRoot}/scripts/conf/se.conf
2.simon_conf_path=${searchRoot}/scripts/conf/simon_searcher.xml
3.sort_config=${searchRoot}/scripts/conf/searcher_sort.xml
4.cache_size=0
5.cache_min_doc=0
6.conn_queue_limit=500
7.[services]
8.tcp ${port} # 主要是为了替换监听的端口,其实要做得通用一点的话,很多配置都可以搞成变量,但是可能你自己的配置文件变得很复杂。因此我们能不改的尽量不改。
9.
10.[clustermap]
11.local_config_path=${searchRoot}/scripts/conf/clustermap.xml
上述是关于searcher和merger多行多列的配置,下面我们完善一下我们刚才的Python脚本
1.# 得的一个ssh登录后的client对象,用于调用远程机器上的命令
2.def getClient(host, port, username, password):
3. client = paramiko.SSHClient()
4. client.load_system_host_keys()
5. client.set_missing_host_key_policy(paramiko.WarningPolicy()
6. client.connect(hostname, port, username, password)
7. return client
8.
9.# 得到一个sftp对象,因为需要scp渲染好的配置文件什么的,因此需要sftp对象,它的put方法其实类似scp
10.def getSftp(host, port, username, password):
11. transport = paramiko.Transport((hostname, port))
12. transport.connect(username=username, password=password)
13. sftp = paramiko.SFTPClient.from_transport(transport)
14. return sftp
15.
16.# 更新和部署Searchers
17.def cleanSearchers(config, searchers):
18. for searcher in searchers:
19. # 得到渲染好的配置文件的内容
20. templateLine = Template(file(config["searcher"]["templateConfigFile"]).read()).render(
21. port=searcher["port"],
22. searchRoot=config["searchRoot"]
23. )
24. # 将渲染好的配置文件写入一个临时文件
25. tmpConfigFile = tempfile.NamedTemporaryFile(delete=False)
26. tmpConfigFile.file.write(templateLine)
27. tmpConfigFile.file.close()
28. # 将这个临时文件scp拷远程机器上的哪儿
29. targetConfigFile = Template(searcher["configFile"]).render(searchRoot=config["searchRoot"])
30. sftp = getSftp(searcher["host"], 22, searcher["username"], searcher["password"])
31. sftp.put(tmpConfigFile.name, targetConfigFile)
32. sftp.close()
33. # 删除掉之前的临时文件
34. os.remove(tmpConfigFile.name)
35. # 运行启动searcher的命令
36. client = getClient(searcher["host"], 22, searcher["username"], searcher["password"])
37. for command in config["searcher"]["commands"]:
38. command = Template(command).render(
39. searchRoot=config["searchRoot"],
40. configFile=targetConfigFile,
41. logConfigFile=targetLogConfigFile
42. )
43. client.exec_command(cmd)
44. client.close()
相关推荐
更新发布
功能测试和接口测试的区别
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