2013-12-09 4 views
0

Мой вопрос заключается в настройке моего файла tsung.xml для приложения для загрузки-тестирования чата.Испытание нагрузки Tsung для MongooseIM (websockets)

Итак, у нас есть наш сервер MongooseIM на стороне сервера, библиотека jsjac.js для нашего веб-клиента. Мы используем xmpp и websockets для связи.

httpbase для jsjac выглядит как ws://hostname:5288/ws-xmpp/, и эта часть работает отлично для меня. Tsung поддерживает 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

Лучший способ проверить XMPP над WebSockets является использование стандартного сценария Jabber с конкретной конфигурацией сервера:

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

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

Пример сценария Jabber можно найти, например, в каталоге «examples» в репозитории Tsung. Я думаю, что открытый текст Логин используется там, так что если вы все еще будете иметь проблемы с подключением пользователей, заменить транзакции «подлинность» с:

<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 СПАСИБО ПЕТРУ! его ответ (+ пример трескотня сценарий) позволило решить мою проблему

здесь мой рабочий 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 пользователей (user001 - user0020) и я могу видеть их все в моем списке «Боб». Я использую клиент Spark IM для мониторинга этого.

Смежные вопросы