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: ...
随机推荐
- [转]使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化
原文: https://www.cnblogs.com/phpdragon/p/5314650.html ----------------------------------------------- ...
- intel 汇编中断解释
汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序.使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用. 显示服务 (Video Service: ...
- IT行业简报 2014-2-8
1.微信在“我的银行卡”页面接入嘀嘀打车,三天内微信打车突破10万单,日均订单为70万,其中微信支付订单超过48万单2.三大运营商手机支付用户仅366.3万,与腾讯单月发展手机支付用户500万户相比, ...
- 国外某牛人的JsonModelBinder 实现 MVC 3.0
public class JsonModelBinder : DefaultModelBinder { public override object BindModel(ControllerConte ...
- oj
https://github.com/zhblue/hustoj insert into privilege(user_id,rightstr) values('wxy','administrator ...
- mysql 俩个时间相减后取分钟
CASE WHEN TIMESTAMPDIFF(MINUTE,o.createDate,o.chargingStartDate) != THEN 'APP解锁计费' ELSE '系统自动计费' END ...
- 定制保存top输出信息的格式详解
top命令的重要性和使用方法不多说了,这里终点讨论如何保存top命令的输出信息. 保存top命令的输出到一个文件的方法是:top -n1b > topinfo.txt,这没什么好奇的,但 ...
- 再次编译 arm toolchains
为什么说再呢,因为已经好多次了.每次失败,都再从失败的地方开始.今天这篇呢,主要是记录今天的进展. 1. 编译要分三步走 之前学习的时候就有印象,要三步走.但是因为没有实践过,所以,忘差不多了.所谓三 ...
- E437: terminal capability "cm" required 错误出现的原因和解决方法
E437: terminal capability "cm" required 错误: 出现这个问题原因是没有配置export TERM=xterm 执行:export TERM= ...
- 在vim中安装及配置NERDTree插件
使用Vundle插件安装,在.vimrc中加入以下代码: Plugin 'scrooloose/nerdtree' 打开vim,输入命令如下: :BundleInstall 等待安装完毕 配置NERD ...