Добрый день, разбираюсь с нагрузочным тестированием с помощью инструменты jmeter, пытаюсь записать сценарий авторизации в приложении написанном на meteor js, записывается много запросов, но сам запрос авторизации не записывается, почитал что meteor частично работает через протокол DDP может в этом проблема. Может кто сталкивался с такой проблемой.
Посмотрите в браузере, что происходит при авторизации (какой запрос отправляется) и сэмулируйте его в Jmeter
Столкнулся с такой же проблемой. Пока что пробую юзать meteor-load-test (GitHub - alanning/meteor-load-test: Load testing tool for Meteor applications).
Может у кого-то появились новьіе идеи/експириенс?
Решил проблему нагрузочного тестирования метеор приложений средствами Jmeter и Junit.
С помощью java-ddp-client формирую запросы по ddp протоколу к приложению в Junit тестах и данные тесты запускаю через Jmeter Junit Sampler.
А можна по-подробней ? Например описать какойнибудь кейс и на примере показать как его заимплементить? Или может есть ссьілка на репозиторий
Вот например небольшой кейс авторизации в приложении, выполняются два запроса сначала tronicSignIn, а потом login.
public class LoginUser extends TestCase {
public LoginUser(String test) {
super(test);
}
public LoginUser() {
super();
}
@Before
protected void setUp() throws Exception {
System.setProperty(org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "DEBUG");
super.setUp();
}
@After
protected void tearDown() throws Exception {
super.tearDown();
}
@Test
public void testLoginUser() throws URISyntaxException, InterruptedException, NoSuchAlgorithmException {
String email = "email@mail.ru";
String subdomain = "test";
String userId = "ArjLzkHWvbtK9fuWf";
String accountId = mongo.getAccountId(user).toString();
String schemaId = "hsykH8LcX8xcb6ayG";
DDPClient ddp = new DDPClient("host", 3000);
DDPTestClientObserver obs = new DDPTestClientObserver();
ddp.addObserver(obs);
ddp.connect();
while ("Disconnected".equals(ddp.getState().toString()) || "Closed".equals(ddp.getState().toString())) {
Thread.sleep(500);
}
assertEquals("Connected", ddp.getState().toString());
Object[] methodArgs11 = new Object[3];
String password = "123456789a";
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(password.getBytes());
byte byteData[] = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++) {
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
}
methodArgs11[0] = subdomain;
methodArgs11[1] = email;
methodArgs11[2] = sb.toString();
ddp.call("tronicSignIn", methodArgs11, obs);
while (obs.mResumeToken == null) {
Thread.sleep(500);
}
Object[] login = new Object[1];
java.util.Map < String, Object > resume = new HashMap < String, Object > ();
resume.put("resume", obs.mResumeToken);
login[0] = resume;
ddp.call("login", login, obs);
while (obs.mSessionId == null) {
Thread.sleep(500);
}
ddp.disconnect();
while ("Connected".equals(ddp.getState().toString())) {
Thread.sleep(500);
}
assertEquals("Closed", ddp.getState().toString());
}
}
Хочу попробовать тоже meteor-load-test с толкнулся с проблемой на этапе установки при запуске сервера ошибки, не подскажите не сталкивались ли вы с данной проблемой и если да то каковы ее решения?
При установке meteor-load-test проблем особьіх небьіло. Но мьі еще так и не определились какую все-таки тулзу использовать.
В meteor-load-test из коробки не получится (скорее всего) делать связаннье запросьі. Например если брать значение из респонса одного запроса и вставлять в другой.
Смотрели в сторону meteor-down, но она не работает по https. Хотя если получится победить єту ошибку то я бьі вьібрал именно его. Там можна делать логику между колами из коробки.