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: ...
随机推荐
- F分布
定义:设X1服从自由度为m的χ2分布,X2服从自由度为n的χ2分布,且X1.X2相互独立,则称变量F=(X1/m)/(X2/n)所服从的分布为F分布,其中第一自由度为m,第二自由度为n.[1] F分布 ...
- linux命令学习——file
1.简介 file命令是用来检测并显示文件类型(determine file type).通过file指令,我们得以辨识该文件的类型,例如可以知道动态连接库是32位还是64位. 2.命令格式 file ...
- 为什么有的需要安全连接的的application只有开Fiddler才好用?
Help! Running Fiddler Fixes My App??? Over the years, the most interesting class of support reques ...
- [Algorithm] How many times is a sorted array rotated?
Given a sorted array, for example: // [2,5,6,8,11,12,15,18] Then we rotated it 1 time, it becomes: / ...
- 编程实战——电影管理器之利用MediaInfo获取高清视频文件的相关信息
随着高速(20M)宽带.HTPC.大容量硬盘(3T)的普及,下载高清片并利用大屏幕观看也成为普通的事情. 随着下载影片的增多,管理就有了问题,有时在茫茫文件夹下找寻一个影片也是一件费时费力的事. 于是 ...
- (算法)AA制
题目: A.B.C.D四个人去吃大餐,吃饭去说好,付钱时AA制,但最后结账时,因为4个人带的钱不一样多,最后A付了112元,B付了86元,C付了10元,D没带钱,所以没有付: 但AA制需要平摊餐费,所 ...
- Android 如何关闭Navigation Bar M
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- 安装MySQL-python报错:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory或者 build\lib.win-amd64-2.7\_mysql.pyd : fatal error LNK1120: 56 unresolved externa
解决办法1: 直接下载MySQL-python-1.2.5.win-amd64/32-py2.7.exe,点击安装 此处要注意自己安装的Python和MySQL版本是64位还是32位,否则在进行安装M ...
- python2.7安装setuptools-36.6.0报ascii' codec can't decode byte 0xce in position 7问题
解决办法1: 原文链接:http://blog.csdn.net/all_over_servlet/article/details/45112221 修改编码为gbk,修改D:\Python27\Li ...
- Visual Studio修改可执行程序的文件名和路径