2013-12-09 50 views
0

我的問題是關於配置我的tsung.xml文件來加載測試聊天應用程序。MongooseIM的Tsung負載測試(websockets)

所以,我們在服務器端有我們的MongooseIM服務器,爲我們基於Web的客戶端提供了jsjac.js庫。我們使用xmpp和websockets進行通信。

jsjac的httpbase看起來像ws://hostname:5288/ws-xmpp/,這部分工作適合我。 Tsung支持websocket「從盒子」,每個人都說,測試websockets的最好方法是使用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> 

和試驗後通過的結果是:

connected: 0 
finish_users_count: 1 
users: 1 
users count: 1 
websocket_succ: 1 

用戶「鮑勃」,在服務器的數據庫中確實存在,並通過客戶端應用程序工作正常。

有人可以告訴我我做錯了什麼嗎?
或者,也許有人可以提供一些鏈接到一些文章或工作的XML文件?
謝謝。

回答

1

最佳方式過度的WebSockets測試XMPP是使用標準的Jabber方案與特定服務器配置:

<servers> 
    <server host="localhost" port="5288" type="websocket"></server> 
</servers> 

<options> 
    (...) 
    <option name="websocket_path" value="/ws-xmpp"/> 
</options> 

樣品的Jabber方案可以例如發現在Tsung回購的「examples」目錄中。我覺得明文登錄使用存在,所以如果你仍然有用戶連接問題,請更換交易「認證」有:

<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> 
+0

非常感謝!這個對我有用。你的答案和jabber場景的例子就是我正在尋找的。 – WcN

0

有幾件事情要做......所以,首先,BIG感謝Piotr! 他的反應(+ jabber的情況爲例)有助於解決我的問題

這是我的工作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> 

本聰是產生20個用戶(001 - user0020),我可以看到他們都在我的「鮑勃」名冊中。我使用Spark IM客戶端來監視這個。