平时tsung测试时使用的都是tsung产生的用户名及密码,现在因为要登录另外一个系统,必须使用指定的用户名及密码才行,整理了一下在Tsung中读取文件中的用户名,密码方法.
需要的文件
userlist.csv
格式如一下,每个用户一行
usernam;passwd
在测试脚本tsung.xml的
<options>节点中加入<option name="file_server" id="file1" value="/root/java/tsung/xmpp/chat/userlist.csv"></option>,
参考来自tsung手册 http://tsung.erlang-projects.org/user_manual/conf-advanced-features.html#reading-external-file 6.7.2 reading-external-file
在<session>节点中定义变量
<setdynvars sourcetype="file" fileid="file1" delimiter=";" order="iter">
<var name="username" />
<var name="user_password" />
</setdynvars>
此处注意fileid要与<options>中定义的id一致,delimiter与用户名,密码配置文件中的分割符一致,username,user_password为自定义的变量名,在接下来的脚本中将使用到.
在<jabber type="connect" ack="local">节点中增加<xmpp_authenticate username="%%_username%%" passwd="%%_user_password%%"/>指定认证时使用的用户及密码,此处注意要使变量名username生效,在<jabber type="connect" ack="local">的父节点<request subst="true">设置xubst="true".
至此使用文件中定义的用户登录openfire配置完成.
完整配置文件如下
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" dumptraffic="false" version="1.0">
<clients>
<client host="localhost" use_controller_vm="false" maxusers="19000">
</client>
</clients>
<servers>
<server host='192.168.4.146' port='5222' type='tcp'/>
</servers>
<load>
<arrivalphase phase="1" duration="5" unit="minute">
<users maxnumber="19000" interarrival="0.02" unit="second"></users>
</arrivalphase>
</load>
<options>
<option type="ts_jabber" name="global_number" value="20"></option>
<option type="ts_jabber" name="userid_max" value="20"></option>
<option type="ts_jabber" name="domain" value="bs201"></option>
<option type="ts_jabber" name="username" value="bbz"></option>
<option type="ts_jabber" name="passwd" value="bbz"></option>
<option name="file_server" id="file1" value="/root/java/tsung/xmpp/chat/userlist.csv"></option>
</options>
<sessions>
<!-- set bidi to true -->
<session bidi="true" probability="100" name="jabber-example" type="ts_jabber">
<setdynvars sourcetype="file" fileid="file1" delimiter=";" order="iter">
<var name="username" />
<var name="user_password" />
</setdynvars>
<request subst="true">
<jabber type="connect" ack="local">
<xmpp_authenticate username="%%_username%%" passwd="%%_user_password%%"/>
</jabber>
</request>
<thinktime value="2"></thinktime>
<transaction name="authenticate">
<request> <jabber type="auth_get" ack="local"></jabber> </request>
<request> <jabber type="auth_set_plain" ack="local"></jabber> </request>
</transaction>
<thinktime value="2"></thinktime>
<request> <jabber type="iq:roster:get" ack="local"/> </request>
<thinktime value="2"></thinktime>
<request> <jabber type="presence:initial" ack="no_ack"/> </request>
<thinktime value="3"></thinktime>
<transaction name="onlineChat">
<request> <jabber type="chat" ack="no_ack" size="16" destination="online"></jabber> </request>
</transaction>
<thinktime value="120"></thinktime>
<request> <jabber type="presence:final" ack="no_ack"/> </request>
<thinktime value="3"></thinktime>
<request> <jabber type="close" ack="local"></jabber> </request>
</session>
</sessions>
</tsung>