MongooseIM(websockets)的Tsung负载测试
我的问题是如何配置tsung.xml文件以加载测试聊天应用程序 因此,服务器端有我们的MongooseIM服务器,用于基于web的客户端的jsjac.js库。我们使用xmpp和WebSocket进行通信 jsjac的httpbase看起来像MongooseIM(websockets)的Tsung负载测试,websocket,load-testing,tsung,mongoose-im,Websocket,Load Testing,Tsung,Mongoose Im,我的问题是如何配置tsung.xml文件以加载测试聊天应用程序 因此,服务器端有我们的MongooseIM服务器,用于基于web的客户端的jsjac.js库。我们使用xmpp和WebSocket进行通信 jsjac的httpbase看起来像ws://hostname:5288/ws-xmpp/,这部分对我来说很好。Tsung是“从盒子里”支持WebSocket的,每个人都说测试WebSocket的最好方法是使用Tsung。但关于如何做到这一点的信息并不多 这是我的tsung.xml: <?
ws://hostname:5288/ws-xmpp/
,这部分对我来说很好。Tsung是“从盒子里”支持WebSocket的,每个人都说测试WebSocket的最好方法是使用Tsung。但关于如何做到这一点的信息并不多
这是我的tsung.xml:
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
<clients>
<client host="localhost" use_controller_vm="true" maxusers="10" />
</clients>
<servers>
<server host="hostname" port="5288" type="tcp" />
</servers>
<load>
<arrivalphase phase="1" duration="10" unit="second">
<users maxnumber="1" arrivalrate="1" unit="second" />
</arrivalphase>
</load>
<sessions>
<session name="websocket" probability="100" type="ts_websocket">
<request subst="true">
<websocket type="connect" path="/ws-xmpp"></websocket>
</request>
<request>
<dyn_variable name="uid" jsonpath="uid"/>
<websocket type="message">{"user":"bob", "password":"bob"}</websocket>
</request>
<request subst="true">
<match do="log" when="nomatch">ok</match>
<websocket type="message">{"uid":"%%_uid%%", "data":"data"}</websocket>
</request>
<request>
<websocket type ="message">{"key":"value"}</websocket>
</request>
<request>
<websocket type="close"></websocket>
</request>
</session>
</sessions>
</tsung>
用户“bob”确实存在于服务器的数据库中,通过客户端应用程序可以正常工作
谁能告诉我我做错了什么吗?或者有人可以提供指向某篇文章或工作xml文件的链接?
谢谢。在WebSocket上测试XMPP的最佳方法是使用标准Jabber场景和特定的服务器配置:
<servers>
<server host="localhost" port="5288" type="websocket"></server>
</servers>
<options>
(...)
<option name="websocket_path" value="/ws-xmpp"/>
</options>
(...)
例如,可以在Tsung repo的“示例”目录中找到Jabber场景示例。我认为这里使用的是纯文本登录,因此如果您在连接用户时仍然存在问题,请将事务“身份验证”替换为:
有几件事要做。。。所以,首先,非常感谢Piotr! 他的回答(+叽叽喳喳的场景示例)帮助解决了我的问题 这是我的工作tsung.xml
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/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="servernameOrIp" port="5288" type="websocket"></server>
</servers>
<load>
<arrivalphase phase="1" duration="20" unit="second">
<users interarrival="1" unit="second"></users>
</arrivalphase>
</load>
<!-- JABBER parameters -->
<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="servernameOrIp"></option>
<option type="ts_jabber" name="username" value="user00"></option>
<option type="ts_jabber" name="passwd" value="user00"></option>
<option name="websocket_path" value="/ws-xmpp"/>
</options>
<sessions>
<session probability="100" name="jabber-example" type="ts_jabber">
<request> <jabber type="connect" ack="no_ack"></jabber> </request>
<thinktime value="2"></thinktime>
<transaction name="authenticate">
<request><jabber type="auth_sasl" ack="local" /></request>
<request><jabber type="connect" ack="local" /></request>
<request><jabber type="auth_sasl_bind" ack="local" /></request>
<request><jabber type="auth_sasl_session" ack="local" /></request>
</transaction>
<request> <jabber type="presence:initial" ack="no_ack"/> </request>
<thinktime value="10"></thinktime>
<transaction name="roster">
<request> <jabber type="iq:roster:get" ack="local"></jabber></request>
</transaction>
<thinktime value="10"></thinktime>
<transaction name="online">
<request> <jabber type="chat" ack="no_ack" size="16" destination="online"></jabber> </request>
</transaction>
<thinktime value="10"></thinktime>
<transaction name="offline">
<request> <jabber type="chat" ack="no_ack" size="56" destination="offline"></jabber> </request>
</transaction>
<thinktime value="2"></thinktime>
<transaction name="close">
<request> <jabber type="close" ack="no_ack"></jabber> </request>
</transaction>
</session>
</sessions>
</tsung>
通过这个tsung is生成了20个用户(user001-user0020),我可以在我的“bob’s”花名册中看到他们。我使用Spark IM客户端来监视这一点 非常感谢!它对我有用。你的答案和叽叽喳喳的场景例子就是我要找的。
<transaction name="authenticate">
<request><jabber type="auth_sasl" ack="local" /></request>
<request><jabber type="connect" ack="local" /></request>
<request><jabber type="auth_sasl_bind" ack="local" /></request>
<request><jabber type="auth_sasl_session" ack="local" /></request>
</transaction>
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/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="servernameOrIp" port="5288" type="websocket"></server>
</servers>
<load>
<arrivalphase phase="1" duration="20" unit="second">
<users interarrival="1" unit="second"></users>
</arrivalphase>
</load>
<!-- JABBER parameters -->
<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="servernameOrIp"></option>
<option type="ts_jabber" name="username" value="user00"></option>
<option type="ts_jabber" name="passwd" value="user00"></option>
<option name="websocket_path" value="/ws-xmpp"/>
</options>
<sessions>
<session probability="100" name="jabber-example" type="ts_jabber">
<request> <jabber type="connect" ack="no_ack"></jabber> </request>
<thinktime value="2"></thinktime>
<transaction name="authenticate">
<request><jabber type="auth_sasl" ack="local" /></request>
<request><jabber type="connect" ack="local" /></request>
<request><jabber type="auth_sasl_bind" ack="local" /></request>
<request><jabber type="auth_sasl_session" ack="local" /></request>
</transaction>
<request> <jabber type="presence:initial" ack="no_ack"/> </request>
<thinktime value="10"></thinktime>
<transaction name="roster">
<request> <jabber type="iq:roster:get" ack="local"></jabber></request>
</transaction>
<thinktime value="10"></thinktime>
<transaction name="online">
<request> <jabber type="chat" ack="no_ack" size="16" destination="online"></jabber> </request>
</transaction>
<thinktime value="10"></thinktime>
<transaction name="offline">
<request> <jabber type="chat" ack="no_ack" size="56" destination="offline"></jabber> </request>
</transaction>
<thinktime value="2"></thinktime>
<transaction name="close">
<request> <jabber type="close" ack="no_ack"></jabber> </request>
</transaction>
</session>
</sessions>
</tsung>