Size: a a a

QA — Load & Performance

2020 April 22

A

Andrii in QA — Load & Performance
хм, должно быть норм
связь же между машинами есть?
можно достучаться по порту jmeter с мастера на слейв?
источник

СЧ

Сергей Чепкасов in QA — Load & Performance
Kseniya Hodakovskaya
Всем привет!
Подскажите, что может быть не так?
Есть вот такой код:
 val record = csv("wsIDs.csv").queue
 val size = Source.fromFile("wsIDs.csv").getLines.size

 val scnWebSocket = scenario("WebSocket")
   repeat(size) {
     feed(record)
     .exec(ws("Connect WS").connect("/status/ws"))
     .exec(ws("Send").sendText("${record}"))
     .exec(ws("Close").close)
   }
size - как я ожидаю, количество строк в файле, но это не точно ))
record - вроде как, последовательно из файла строки беру
При запуске сценария выдается ошибка :
[error] java.lang.IllegalArgumentException: requirement failed: Scenario WebSocket is empty
привет, точка перед repeat пропущена:
val scnWebSocket = scenario("WebSocket")
   .repeat(size) {
     feed(record)
     .exec(ws("Connect WS").connect("/status/ws"))
     .exec(ws("Send").sendText("${record}"))
     .exec(ws("Close").close)
   }
источник

AR

Artem Rozhkov in QA — Load & Performance
Andrii
хм, должно быть норм
связь же между машинами есть?
можно достучаться по порту jmeter с мастера на слейв?
Пробовали достучаться. Но не помогло.
источник

VS

Vladislav Suvorov in QA — Load & Performance
Добрый день!
Коллеги подскажите, в LR есть возможность при считывании файла в параметр указывать, чтобы при каждом упоминании параметра в скрипте бралась следующая строка из файла.
Как можно сделать то же самое в jmeter?
источник

AR

Artem Rozhkov in QA — Load & Performance
Andrii
хм, должно быть норм
связь же между машинами есть?
можно достучаться по порту jmeter с мастера на слейв?
То есть видно что  master отсылает на слейв запрос. Но обратного ответа нет.
источник

VK

Vitaliy Kudryashov in QA — Load & Performance
Да, их диффом для репортов пользуюсь
источник

ΙΤ

Ιωάννης Τσεκούρι in QA — Load & Performance
val records = csv("wsIDs.csv").queue
val size = records.readRecords.length
источник

ΙΤ

Ιωάννης Τσεκούρι in QA — Load & Performance
Kseniya вот чтобы не читать файл 2 раза
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Artem Rozhkov
Пробовали достучаться. Но не помогло.
Возможно это ошибка настройки конкретного узла.
Пример коварной ошибки - настройки ключей java key store, которая влияет на работу связки master - slave.

Можно скопировать файл с ключом с рабочий станции на нерабочую. Имею в виду файл, который используется именно для jmeter.

Возможно, причина просто в сети. Что-то не так закешировалось. И надо почистить dns кеш на станции.
источник

AR

Artem Rozhkov in QA — Load & Performance
Вячеслав Смирнов
Возможно это ошибка настройки конкретного узла.
Пример коварной ошибки - настройки ключей java key store, которая влияет на работу связки master - slave.

Можно скопировать файл с ключом с рабочий станции на нерабочую. Имею в виду файл, который используется именно для jmeter.

Возможно, причина просто в сети. Что-то не так закешировалось. И надо почистить dns кеш на станции.
Я понимаю, что скорее всего, не в этом проблема. Мы не использовали rmi-keystore. Это как то может повлиять?

java-keystore - это и будет rmi-keystore?
Что-запутался
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Artem Rozhkov
Я понимаю, что скорее всего, не в этом проблема. Мы не использовали rmi-keystore. Это как то может повлиять?

java-keystore - это и будет rmi-keystore?
Что-запутался
rmi-keystore, его имел в виду
источник

A

Andrii in QA — Load & Performance
что бы исключить сеть я бы попробовал проверить порт на прямую с мастера на слейв telnet или netcat.
Или запустить как-то простой http сервер типа python -m SimpleHTTPServer 8000 на этом порту и постучаться курлом
источник

KH

Kseniya Hodakovskaya in QA — Load & Performance
а скажите, есть какая-то возможность внутри exec вычислить значение переменной какой-то? Мне надо время посчитать, которое прошло между двумя событиями в процессе выполнения сценария, хотела перед началось засечь время и потом в нужный момент(момент смены статуса) и потом вычесть, или есть какой-то другой способ это сделать?
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Kseniya Hodakovskaya
а скажите, есть какая-то возможность внутри exec вычислить значение переменной какой-то? Мне надо время посчитать, которое прошло между двумя событиями в процессе выполнения сценария, хотела перед началось засечь время и потом в нужный момент(момент смены статуса) и потом вычесть, или есть какой-то другой способ это сделать?
Ответ на первый вопрос про переменные:
.exec {
   session =>
   ... любые вычисления ...
   session
}
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Kseniya Hodakovskaya
а скажите, есть какая-то возможность внутри exec вычислить значение переменной какой-то? Мне надо время посчитать, которое прошло между двумя событиями в процессе выполнения сценария, хотела перед началось засечь время и потом в нужный момент(момент смены статуса) и потом вычесть, или есть какой-то другой способ это сделать?
Чтобы сохранённое время попадало в статистику в виде мнимых запросов/ответов есть пример генерации событий

https://github.com/polarnik/gatling-asynclog-plugin/blob/feature/minimalMavenProject/example/src/test/scala/qaload/BasicSimulation.scala

    .exec(asynclog("Generate PDF Report (prepare report complete)")
     .startTimestamp("2019-11-25 00:19:00", "yyyy-MM-dd HH:mm:ss")
       .endTimestamp("2019-11-25 00:29:00", "yyyy-MM-dd HH:mm:ss")
       .status(io.gatling.commons.stats.OK)
       .responseCode("200")
   )
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Обновил пример
    .exec(asynclog("Generate req 1")
     .startTimestamp("${startTime}", "yyyy-MM-dd HH:mm:ss.SSS")
       .endTimestamp("${stopTime}", "yyyy-MM-dd HH:mm:ss.SSS")
       .status(io.gatling.commons.stats.OK)
       .responseCode("200")
   )
источник

KH

Kseniya Hodakovskaya in QA — Load & Performance
Вячеслав Смирнов
Ответ на первый вопрос про переменные:
.exec {
   session =>
   ... любые вычисления ...
   session
}
спасибо!
источник

ΙΤ

Ιωάννης Τσεκούρι in QA — Load & Performance
Вячеслав Смирнов
Обновил пример
    .exec(asynclog("Generate req 1")
     .startTimestamp("${startTime}", "yyyy-MM-dd HH:mm:ss.SSS")
       .endTimestamp("${stopTime}", "yyyy-MM-dd HH:mm:ss.SSS")
       .status(io.gatling.commons.stats.OK)
       .responseCode("200")
   )
крутой плагин
источник

ΙΤ

Ιωάννης Τσεκούρι in QA — Load & Performance
Вячеслав Смирнов
Обновил пример
    .exec(asynclog("Generate req 1")
     .startTimestamp("${startTime}", "yyyy-MM-dd HH:mm:ss.SSS")
       .endTimestamp("${stopTime}", "yyyy-MM-dd HH:mm:ss.SSS")
       .status(io.gatling.commons.stats.OK)
       .responseCode("200")
   )
а можешь показать как выглядит файлик при этом?
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Kseniya Hodakovskaya
спасибо!
Обновил ещё раз. Очень важно оказалось указывать формат даты с часовым поясом.

"yyyy-MM-dd HH:mm:ss.SSS zzz"

Kseniya - нужно не забыть zzz.

И для удобства добавил ещё простые форматы - просто дату. И добавил пример с UnixEpoch: System.currentTimeMillis
источник