Я хотел бы получить доступ к сеансу гатлинга из функции карате. Это возможно?
Например, в сеансе gatling присутствует поле userId
, которое я хочу использовать.
Мой вариант использования: у меня есть функция, в которой я создаю так называемое приложение, и каждому приложению нужен уникальный appId, поэтому я хочу использовать добавление переменной userId
к имени приложения, фактически давая каждому виртуальному пользователю свой собственный appId.
Feature: Run an app
Background:
# userId is taken from gatling session
* def appId = 'run_perf' + userId
Было бы здорово, если бы карате позволяло использовать переменные сеанса гатлинга, как любые другие переменные. Поэтому, если я обращаюсь к переменной foo
, карате сначала проверяет, определена ли эта переменная как «нормальная» переменная карате, а если не находит ее, то может проверять, определена ли такая переменная в сеансе гатлинга.
редактировать:
val runApp = scenario("runApp").exec(karateFeature("classpath:performance/createAndRunApp.feature"))
setUp(
runApp.inject(atOnceUsers(50)).protocols(protocol)
)
Если createAndRunApp.feature
использует константу appId
(например: myId
) и я запускаю эту функцию с 50 виртуальными пользователями, все они, возможно, попытаются создать приложение с идентификатором myId
, и 49 потерпят неудачу, потому что приложение с этим идентификатором уже существует. Я хочу, чтобы пользователь 1 использовал appId myId1
, пользователь 2 использовал myId2
и так далее. Этого можно достичь, добавив значение поля userId
из gatling Session
к константе appId, или этого также можно добиться, добавив некоторый случайный идентификатор, например UUID
, но в отчетах труднее увидеть, какой пользователь сделал запрос, потому что Я не могу узнать из appId{Some-UUID}
, какой это был пользователь.