STAF进行分布式脚本分发----实践篇
该博文理论支持文章:http://www.cnblogs.com/zhangfei/p/3169139.html
一.准备条件
1.安装STAF.由于其官网被墙了,所以大家可进入WAT群的网盘里去下载对应版本(有32位与64位两个版本)
2.安装完成后,打开STAF\bin下面的STAF.cfg文件,添加信任,把所有安装了staf的机器都添加进去,如下:
3.重启staf .
二.实践
1.下载distribute.rar并解压。http://files.cnblogs.com/zhangfei/distribute.rar
2.打开config/config.xml
<define>结点:定义一些结点变量,以便其它的结点来调用,比如在里面定义一个<ip>192.168.1.1</ip>,如果在下面的<server>结点中要用到,这样写便可以:<server>#{ip}</server>
<threadPoolSize>结点:在程序运行时,会有一个线程池启动,这个结点定义了线程池的大小,比如一共有20个CASE要运行,如果这个结点的值为10,那么在一开始只会有10个CASE进入线程池里去进行分发,其余的等待线程池中有线程结束后,立刻给补上来
<machineMaxThread>结点:定义每台slave最多允许多少个CASE同时运行
<waitToCheckMachineStatus>结点:定义了当有CASE需要申请slave去运行,但此时没有slave空闲,那么就等待结点定义的值的时间再去检查一次是否有slave可用
<server>结点:定义server的IP
<slaves>结点:定义slave的IP,多个slave时,中间用","分隔,比如<slaves>192.168.1.102,192.168.1.103</slaves>
<serverWorkSpace>结点:定义一个server的workspace,便于你从slave把文件或文件夹从slave给拷贝到workspace,该值可以为空
<slaveWorkSpace>结点:定义一个slave的workspace,该值可以为空
<copyFilesFromSlaveToServer>结点:定义从slave拷贝文件到server。其有三个参数可以被用到:SERVERRUNID,SLAVERUNID,ARGS[][],如果有多个文件,可以添加多个file的子结点:
<copyFilesFromSlaveToServer>
<file from="" to=""></file>
<file from="" to=""></file>
</copyFilesFromSlaveToServer>
<copyDirsFromSlaveToServer>结点:定义从slave拷贝文件顾问到server。其有三个参数可以被用到:SERVERRUNID,SLAVERUNID,ARGS[][],如果有多个文件夹,可以添加多个dir的子结点
<needRunId>结点:每次运行时,程序都会为该次运行产生一个唯一的run ID,当然这个run ID也可以由用户提供,如果该结点的值为y,则由用户自已提供进去,规定传进去的args[0]为run ID,如果该结点的值为n,则程序会自动的产生一个run ID
<interfaces>结点:该程序为用户提供了五个接口,便于用户自已实现,在其子结点中对应的填上接口的地址名称即可
<command>结点:在slave上要执行的命令,其有三个参数可以被用到:SERVERRUNID,SLAVERUNID,ARGS[][].参数的调用方式:${SERVERRUNID},${ARGS[][0]}
- SERVERRUNID指每次程序运行时产生的一个唯一的run ID
- SLAVERUNID指程序运行时,当为case选定机器后,就会在slave上为该case产生一个唯一的ID
- ARGS[][]是用户运行时提供的参数,在调用时,一定要为ARGS[][数字],第一个[]里要保持为空,否则会不认为其是一个参数
3.接口说明
<inputParameters>接口
- 用户提供的参数的处理,比如,提供一个参数为:abc,def,mnl,把这一个字符串当成了一个参数提供给程序,但用户的需求是这个字符串以","split下,然后当成三个case的名称给传到程序里面去,对于这种需求,程序提供了该接口让用户自已去处理这个参数
- 完成该interface:InputParameters
<outputConsole>接口
- 程序运行时,会有一些输出,这些输出是输出到控制台呢,还是输出到文件里,或者是其它的处理,在这里提供了该接口让用户自已去处理,如果用户不处理,默认是输出到控制台。
- 完成该interface:OutputConsole
<caseStatus>接口
- 由于staf只是向slave去发送一个command,command执行完成后,该过程就完成了,所以程序并不知道slave运行的命令是否成功还是失败了,所以提供了该接口让用户去扩展并返回command是运行成功还是失败了,如果不完成该接口,默认值就是为""
- 完成该interface:CaseResult
<provideParameters>接口
- 程序在执行的过程中,对case的状态的跟踪,比如在此时,该case是等待执行,还是正在执行,还是已经执行完成,可以通过该接口得到数据,用户也可以通过该接口把值显示出来或者存入数据库都可以
- 完成该interface:ProvideParameters
<report>接口
- 程序运行完成后,当把所有的文件或文件夹都给拷贝到server端后,还是没有产生一个总的报告出来,这时候就需要用户根据该接口提供的参数或者拷贝过来的文件来生成一个总的报告。
- 完成该interface:Report
4.CD到解压缩的文件夹下面,然后可以运行bat文件,也可以根据bat文件里面内容定制出自已命令,从而运行程序。
5.用户在使用的过程中,如有任何疑问,都可以直接和我联系(该程序QQ支持群:254285583)。
STAF进行分布式脚本分发----实践篇的更多相关文章
- JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法
前些天,在进行分布式参数化测试的时候,出现了如题所示的错误报错信息.此文,针对此做一个简略的重现及分析说明. JMX脚本线程组参数配置如下所示: 参数文件路径配置如下所示: 执行JMX脚本后,服务器对 ...
- JMeter学习-028-JMeter默认jmx脚本分发目录(路径)定制
我们在分布式执行参数化脚本时,为尽可能多的利用Slave资源,尽可能将参数文件配置为相对路径,以更好的去适配Slave环境.与此同时,每台Slave的服务jmeter -s 启动的路径可能不尽相同,同 ...
- 分布式任务分发框架Gearman教程和PHP实现实例
1.Gearman介绍和使用场景 Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相 比,Gearman更偏向于任务分发功能.它的任务分布非常简单,简单得可以只需要用脚本即可完 ...
- jemter分布式部署及linux下分布式脚本执行
jmeter进行接口性能测试,占用内存较大,在模拟千万计并发用户时,使用分布式部署进行分压测试. 操作步骤:选择一台机器作为调度机,其他机器作为执行机 一.jmeter分布式部署 前提条件:A.执行机 ...
- 【费元星原创】一键安装Hadoo2.7.6 集群完全分布式脚本-完美解决
有Bug 欢迎反馈,我不烦:feiyuanxing@gmail.com 1 #!/bin/bash #@author:feiyuanxing [既然笨到家,就要努力到家] #@date:2017-01 ...
- shell脚本实现anisble客户端脚本分发和密钥授权配置
##############################Deploy ansible client shell######################## echo "start d ...
- 【SSH项目实战三】脚本密钥的批量分发与执行
[SSH项目实战]脚本密钥的批量分发与执行 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载, ...
- 【SSH项目实战】脚本密钥的批量分发与执行【转】
[TOC] 前言 <项目实战>系列为<linux实战教学笔记>第二阶段内容的同步教学配套实战练习,每个项目循序衔接最终将组成<Linux实战教学笔记>第二阶段核心教 ...
- SaltStack实现动态文件分发,支持脚本换行,中文乱码
场景:将动态脚本分发到各个机器的指定目录下 说明:使用SaltStack的 file.managed file.managed 里面可以定义内容的几种方式 - source: - contents: ...
随机推荐
- Mahout源码目录说明
http://www.cnblogs.com/dlts26/archive/2011/08/23/2150230.html mahout项目是由多个子项目组成的,各子项目分别位于源码的不同目录下,下面 ...
- RabbitMQ的应用场景以及基本原理介绍 【转】
http://blog.csdn.net/whoamiyang/article/details/54954780 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 背景 应用 ...
- svn commit --cl app 时手动输入提交的注释,而不是在 -m 'comments here'这里输入
原来只需要,提交的时候不指定 -m ,也不指定 -F就可以了,提交之前,svn会自动弹出编辑框来,可以修改信息. https://stackoverflow.com/questions/1746891 ...
- (转)Unity3D研究院之Assetbundle的原理(六十一)
Assetbundle 是Unity Pro提供提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中,提供了封装与解包的方法使用起来很便利. 1.预设 A ...
- SharePoint 2010/2013: List view Lookup threshold uncovered
SharePoint with Large lists is common scenario in any Sharepoint deployment. While there are Several ...
- [Canvas]游戏增加怪物爆炸效果,改善箭头形状
请点此下载代码并用浏览器打开试玩. 图例: 代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-eq ...
- HTML5画布生成的3D飞船舰队效果
在线演示 本地下载 使用HTML5画布2D来模拟3D的空间效果,生成舰队飞行效果,了解如何开发,请阅读下面代码相关“轻视频”: HTML5画布模拟生成3D的舰队飞行效果
- 牛客网-《剑指offer》-调整数组顺序使奇数位于偶数前面
题目:http://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593 C++ class Solution { public: vo ...
- vcenter 5.1安装亲历
这一步死活提示nslookup 解析不了 ping的结果如下: 下载http://support.microsoft.com/kb/929852 工具 禁用IPv6即可,而且还需要在DNS中创建反向查 ...
- C++ 第三课:常量转义字符
常量转义字符 以下的转义字符使普通字符表示不同的意义. 转义字符 描述 \' 单引号 \" 双引号 \\ 反斜杠 \0 空字符 \a 响铃 \b 后退 \f 走纸 \n 换行 \r 回车 \ ...