原料准备:
centos 6.4 64bit
erlang
tsung运行环境
openfire
spark(用来验证消息是否成功发送)
一.tsung的安装参考
1.到erlang网站上下载erlang源码包,
按以下步骤安装
yum install ncurses-devel.i686
yum -y install ncurses-devel
./configure --prefix=/usr/local/servers/erlang --without-javac --with-ssl=/usr/local/ssl/
make
make install
ln -s /usr/local/servers/erlang/bin/erl /usr/local/bin/erl
ln -s /usr/local/servers/erlang/bin/erlc /usr/local/bin/erlc
2.安装tsung
到tsung网站下载源码包编译安装
./configure
make
make install
二.到openfire网站下载openfire rpm包直接安装(如果是windows则下载windows安装包)
三.openfire配置更改.授权模块处理.
自定义一个authProvider代码如下:
import org.jivesoftware.openfire.auth.AuthProvider;
import org.jivesoftware.openfire.auth.ConnectionException;
import org.jivesoftware.openfire.auth.InternalUnauthenticatedException;
import org.jivesoftware.openfire.auth.UnauthorizedException;
import org.jivesoftware.openfire.user.UserNotFoundException;
public class NoAuth implements AuthProvider {
//这里很重要,关系到能否得到授权
return true;
}
@Override
public boolean isDigestSupported() {
return false;
}
@Override
public void authenticate(String username, String password)
throws UnauthorizedException, ConnectionException,
InternalUnauthenticatedException {
}
@Override
public void authenticate(String username, String token, String digest)
throws UnauthorizedException, ConnectionException,
InternalUnauthenticatedException {
}
@Override
public String getPassword(String username) throws UserNotFoundException,
UnsupportedOperationException {
return null;
}
@Override
public void setPassword(String username, String password)
throws UserNotFoundException, UnsupportedOperationException {
}
@Override
public boolean supportsPasswordRetrieval() {
return false;
}
}
编译得到class文件 使用 jar cvf jar包名 文件夹 打包为jar包.复制到 openfirHone/lib/ 下.
设置openfire系统属性 provider.auth.className 为自定义类.
设置
四.编辑tsung 脚本
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
<clients>
<client host="localhost" use_controller_vm="true"></client>
</clients>
<!-- Server side setup -->
<servers>
<server host="192.168.7.123" port="5222" type="tcp"></server>
</servers>
<load>
<arrivalphase phase="1" duration="1" unit="minute">
<users interarrival="2" unit="second"></users>
</arrivalphase>
</load>
<!-- JABBER parameters -->
<!-- to synchronise users, use a global acknoledgement -->
<options>
<option type="ts_jabber" name="global_number" value="100"></option>
<option type="ts_jabber" name="userid_max" value="10"></option>
<option type="ts_jabber" name="domain" value="floatant"></option>
<option type="ts_jabber" name="username" value="admin"></option>
<option type="ts_jabber" name="passwd" value="admin"></option>
</options>
<sessions>
<session probability="100" name="jabber-example" type="ts_jabber">
<request>
<jabber type="connect" ack="no_ack"></jabber>
</request>
<thinktime value="2"></thinktime>
<!-- 获取授权 -->
<request>
<jabber type="auth_set_plain" ack="local"></jabber>
</request>
<transaction name="online">
<request><span style="white-space:pre"> </span> <!-- 这里的data为要发送的packet,可以为任务合法的packet类型.注意 < >符号要使用转义字符 -->
<jabber type="raw" ack="no_ack" data="<message type='chat' to='a@floatant' ><
body>zhouhui</body> </message>"></jabber>
</request>
</transaction>
<thinktime value="30"></thinktime>
<transaction name="close">
<request>
<jabber type="close" ack="no_ack"></jabber>
</request>
</transaction>
</session>
</sessions>
</tsung>
删改来自tsung自带的脚本 /usr/local/share/doc/tsung/examples/jabber.xml
五.运行tsung测试
tsung -f 测试脚本 -l 日志保存文件夹
六.效果图如下
证明消息有发送成功.
六.生成tsung报告
切换到日志所在文件夹
cd /root/java/tsung/xmpp/chat/log/20150112-1619
运行tsung脚本
/usr/local/lib/tsung/bin/tsung_stats.pl 生成测试报告