#xmpp #jmeter
#xmpp #jmeter
Вопрос:
Я создаю план тестирования для тестирования XMPP с помощью JMeter. Но я всегда сталкиваюсь с ошибкой, когда отправляю строку аутентификации на сервер, даже если строка аутентификации верна. У кого-нибудь такая же проблема или он знает, как исправить эту проблему? Спасибо.
2014/07/04 10:23:22 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
2014/07/04 10:23:22 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(true,*local*)
2014/07/04 10:23:22 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
2014/07/04 10:23:22 INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group Thread Group.
2014/07/04 10:23:22 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
2014/07/04 10:23:22 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 1 ramp-up 1 perThread 1000.0 delayedStart=false
2014/07/04 10:23:22 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
2014/07/04 10:23:22 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
2014/07/04 10:23:22 INFO - jmeter.threads.JMeterThread: Thread started: Thread Group 1-1
2014/07/04 10:23:22 ERROR - ru.yandex.jmeter.XMPPClientImpl: Error reading data java.lang.RuntimeException: Retries more than 1000, aborting read
at ru.yandex.jmeter.XMPPClientImpl.read(XMPPClientImpl.java:116)
at org.apache.jmeter.protocol.tcp.sampler.TCPSampler.sample(TCPSampler.java:414)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:428)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
at java.lang.Thread.run(Unknown Source)
2014/07/04 10:23:22 ERROR - jmeter.protocol.tcp.sampler.TCPSampler: java.lang.RuntimeException: Error reading data
at ru.yandex.jmeter.XMPPClientImpl.read(XMPPClientImpl.java:152)
at org.apache.jmeter.protocol.tcp.sampler.TCPSampler.sample(TCPSampler.java:414)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:428)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: Retries more than 1000, aborting read
at ru.yandex.jmeter.XMPPClientImpl.read(XMPPClientImpl.java:116)
... 4 more
2014/07/04 10:23:22 INFO - jmeter.threads.JMeterThread: Thread finished: Thread Group 1-1
2014/07/04 10:23:22 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
2014/07/04 10:23:22 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(false,*local*)
Комментарии:
1. Не могли бы вы показать свой план тестирования, увеличить XMPPSampler и показать свою конфигурацию
2. @PMDUBIK-ИЗОБРЕТАТЕЛЬНОСТЬ dropbox.com/s/v8hlav0mdnmmhrw/xmpp.png Вы можете перейти по ссылке, чтобы проверить мою конфигурацию.
3. Вам когда-нибудь удавалось решить эту проблему? Я сталкиваюсь с той же проблемой с плагином XMPPClientImpl. Я добавил прослушиватель BeanShell, чтобы посмотреть, смогу ли я получить какую-либо дополнительную информацию об отладке, но бесполезно, я просто получаю бесполезную информацию, подобную той, которую вы опубликовали выше. Сервер, который я пытаюсь протестировать, является сервером чата Openfire, и в его журналах даже не отображаются попытки подключения из интерфейса Jmeter. Мой следующий шаг — использовать Wireshark, чтобы посмотреть, смогу ли я получить какие-либо полезные ответы по мере выполнения плана тестирования, но я не надеюсь.
Ответ №1:
Я пытался использовать плагин XMPPClientImpl, но всегда получал одну и ту же ошибку («Повторных попыток более 1000, прерывание чтения»), поэтому я решил оставить его и написать свой собственный код.
Я использую семплер BeanShell, в котором я запускаю следующий код (используя библиотеку smack) для подключения к серверу XMPP.
String CLASS_PATH = "C:/JMeter/apache-jmeter-2.13/lib/ext/smack/";
addClassPath(CLASS_PATH "smack-android-extensions-4.1.3.jar");
addClassPath(CLASS_PATH "smack-tcp-4.1.3.jar");
addClassPath(CLASS_PATH "smack-android-4.1.3.jar");
// explicitly import every class you need
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.ConnectionListener;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
String jabberId = "...";
String jabberPass = "...";
String SERVER_ADDRESS = "...";
int PORT = 5222; // or any other port
XMPPTCPConnection getConnection() {
XMPPTCPConnectionConfiguration config =
XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(jabberId, jabberPass)
.setHost(SERVER_ADDRESS)
.setServiceName(SERVER_ADDRESS)
.setPort(DEFAULT_PORT)
// .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.setSendPresence(true)
// .setDebuggerEnabled(YouMe.DEBUG)
.build();
XMPPTCPConnection con = new XMPPTCPConnection(config);
int REPLY_TIMEOUT = 50000; // 50 seconds, but can be shorter
con.setPacketReplyTimeout(REPLY_TIMEOUT);
return con;
}
Не забудьте добавить путь smack (например C:JMeterapache-jmeter-2.13libextsmack ) в поле библиотека (в разделе «Добавить каталог или путь к классу jar«) в узле плана тестирования вашего плана тестирования.
Для подключения —
con = getConnection();
con.connect();
Для входа в систему —
con.login(jabberId, jabberPass);
Вы также можете добавить прослушиватель подключений —
ConnectionListener listener = new ConnectionListener() {
public void connected(XMPPConnection xmppConnection) {
// run main code incl. the login code
runMain();
}
public void authenticated(XMPPConnection xmppConnection, boolean resumed) {
}
public void connectionClosed() {
}
public void connectionClosedOnError(Exception e) {
}
public void reconnectingIn(int i) {
}
public void reconnectionSuccessful() {
}
public void reconnectionFailed(Exception e) {
}
};
con.addConnectionListener(listener);
// connect
con.connect();
runMain() {
con.login(jabberId, jabberPass);
// ...
}