Size: a a a

QA — Load & Performance

2019 September 12

В

Валерий in QA — Load & Performance
Artem Fedorov
я делал отдельную TG с 1 юзером, а внутри таймер, где указывается период обновления токена и запрос на обновление токена. Токен хранился в Property чтобы он был доступен для всех TG.
тоже думал об этом. а как остановить в таком случае тест в тот момент, когда завершается основной сценарий?
источник

AF

Artem Fedorov in QA — Load & Performance
Валерий
тоже думал об этом. а как остановить в таком случае тест в тот момент, когда завершается основной сценарий?
сделать такое же время выполнения, как и у основного сценария. Например в стандартной TG есть галочка Scheduler, а в ней поле duration. При этом Loop Count сделать forever.
источник

В

Валерий in QA — Load & Performance
Artem Fedorov
сделать такое же время выполнения, как и у основного сценария. Например в стандартной TG есть галочка Scheduler, а в ней поле duration. При этом Loop Count сделать forever.
то есть, для основного как на картинке, а для TG с рефрешем только назначить Loop Count - Forever, я правильно понял?
источник

В

Валерий in QA — Load & Performance
источник

AF

Artem Fedorov in QA — Load & Performance
Валерий
то есть, для основного как на картинке, а для TG с рефрешем только назначить Loop Count - Forever, я правильно понял?
мне тут не понятно, как задается длительность основного сценария. Судя по картинке он выполняется 1 раз. Допустим, если основной сценарий выполняется 2 часа и как-то там задается, то для рефреша токена можно сделать так:
источник

AF

Artem Fedorov in QA — Load & Performance
источник

В

Валерий in QA — Load & Performance
только хотел написать, что у меня нет четких временных рамок на выполнение скрипта. то есть, время может варьироваться
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Валерий
тоже думал об этом. а как остановить в таком случае тест в тот момент, когда завершается основной сценарий?
В момент завершения основного сценария можно ставить в Property текущее время.

А в сценарии обновления, проверять, что если от текущего момента до времени из Property не прошло 5 минут, то не останавливаться. Иначе SampleResult.setStopThread(true)
источник

В

Валерий in QA — Load & Performance
Вячеслав Смирнов
В момент завершения основного сценария можно ставить в Property текущее время.

А в сценарии обновления, проверять, что если от текущего момента до времени из Property не прошло 5 минут, то не останавливаться. Иначе SampleResult.setStopThread(true)
это интересно) буду пробовать, спасибо всем за помощь!
источник

ВС

Вячеслав Смирнов in QA — Load & Performance
Здорово. Так просто
источник

VG

Viktor Ganeles in QA — Load & Performance
Валерий
это интересно) буду пробовать, спасибо всем за помощь!
Ещё можно попробовать проверять количество потоков: если оно =1, то стопить тест
источник

VG

Viktor Ganeles in QA — Load & Performance
Главное эту проверку проводить не в самом начале тредгруппы-рефрешера, а то стартанёт первой и сразу выйдет
источник

В

Валерий in QA — Load & Performance
Viktor Ganeles
Главное эту проверку проводить не в самом начале тредгруппы-рефрешера, а то стартанёт первой и сразу выйдет
да стартовать то они будут одновременно, перед запросом на рефреш стоит констант таймер, откладывающие его отправку на нужное время
источник

В

Валерий in QA — Load & Performance
придумал еще умеренно странное решение, но оно требует опроса каждую миллисекунду
if  controller с запросом на рефреш и условием
${__javaScript((${__time()}-${TESTSTART.MS})%30000 == 0)}
источник

В

Валерий in QA — Load & Performance
30000- это промежуток времени между отправкой запроса  на рефреш
источник

VG

Viktor Ganeles in QA — Load & Performance
У меня похожий кейс, но у каждого юзера токен свой (юзеров много)

И скрипты, которые могут долго выполняться.

Напихал в скриптах в этапах, где обновление долгое проверку жизни токена и, соответственно, рефреш
источник

В

Валерий in QA — Load & Performance
Viktor Ganeles
У меня похожий кейс, но у каждого юзера токен свой (юзеров много)

И скрипты, которые могут долго выполняться.

Напихал в скриптах в этапах, где обновление долгое проверку жизни токена и, соответственно, рефреш
а можно поподробнее про реализацию проверки ttl токена?
источник

VG

Viktor Ganeles in QA — Load & Performance
Валерий
а можно поподробнее про реализацию проверки ttl токена?
Примерно так:
-TestPlan
|-Thread-group
||-HTTP-Request (вход в систему, получаем token)
||-JSR223 (кладём время получения токена в переменную "TokenTime")
||-...
||-...
||-While Controller (${__groovy("${status}"!="OK")})
|||-HTTP-Request (определяем статус)
|||
|||-JSR223 (кладём "текущее время МИНУС TokenTime" в переменную "refreshTime" )
|||
|||-IF Controller ( ${__groovy(Integer.parseInt(vars.get("CurrentTime"))>Integer.parseInt("590000"),)} )
||||-HTTP-Request (обновляем token)
|||
|||-IF Controller (${__groovy("${status}"!="OK")})
||||-JSR223 (Thread.sleep(5000))
||
||... (продолжаем работу)
источник

В

Валерий in QA — Load & Performance
Viktor Ganeles
Примерно так:
-TestPlan
|-Thread-group
||-HTTP-Request (вход в систему, получаем token)
||-JSR223 (кладём время получения токена в переменную "TokenTime")
||-...
||-...
||-While Controller (${__groovy("${status}"!="OK")})
|||-HTTP-Request (определяем статус)
|||
|||-JSR223 (кладём "текущее время МИНУС TokenTime" в переменную "refreshTime" )
|||
|||-IF Controller ( ${__groovy(Integer.parseInt(vars.get("CurrentTime"))>Integer.parseInt("590000"),)} )
||||-HTTP-Request (обновляем token)
|||
|||-IF Controller (${__groovy("${status}"!="OK")})
||||-JSR223 (Thread.sleep(5000))
||
||... (продолжаем работу)
круто, спасибо)
источник

VG

Viktor Ganeles in QA — Load & Performance
JMX сложно вытащить
источник