Size: a a a

2019 January 09

S

SaneQ in LoadLand
гайз нид хелп, в гатлинге не могу передать токен между сценариями,
в первом сценарии:
     .check(jsonPath("$..token").exists.saveAs("token"))
     )
     .exec(session => {
     token = session("token").as[String]
     println("%%%%%%%%%%% token =====>>>>>>>>>> " + token)
     session}
     )
во втором сценарии:
 val scnList = scenario("list")
   .pause(1)
   .exec(_.set("token", token))
   .exec(http("list_"+serv)
   .get("account/list")
   .headers(Map(
      "Authorization" -> "Bearer ${token}",
     "Accept" -> "application/json"))
   .check(status.is(200))
источник

S

SaneQ in LoadLand
второй сценарий выполняется с одним и тем же токеном
источник

АБ

Алексей Богданов in LoadLand
SaneQ
гайз нид хелп, в гатлинге не могу передать токен между сценариями,
в первом сценарии:
     .check(jsonPath("$..token").exists.saveAs("token"))
     )
     .exec(session => {
     token = session("token").as[String]
     println("%%%%%%%%%%% token =====>>>>>>>>>> " + token)
     session}
     )
во втором сценарии:
 val scnList = scenario("list")
   .pause(1)
   .exec(_.set("token", token))
   .exec(http("list_"+serv)
   .get("account/list")
   .headers(Map(
      "Authorization" -> "Bearer ${token}",
     "Accept" -> "application/json"))
   .check(status.is(200))
// Получить токен один раз. Используется при тестировании запросов от одного юзера
 val getToken = scenario(s"Get token ${client}")
   .exec(
     http("getToken")
       .post(authURI)
       .header("Content-Type", "application/x-www-form-urlencoded")
       .basicAuth(client, secret)
       .body(StringBody(s"grant_type=password&username=${login}&password=${password}"))
       .check(status.in(200))
       .check(jsonPath("$.access_token").saveAs("token"))
   )
   .exec(
     session => {
       token = session("token").as[String].trim
       session
     }
   )

 // Сценарий
 val scn = scenario("----").feed(csvData)
   .exec(_.set("token", token))
   .exec(
     http("-----")
       .get(appURI + "/----")
       .header("Authorization", """Bearer ${token}""")
       .check(status.in(200, 204))
       //.check(responseTimeInMillis.is(200))
   )
источник

АБ

Алексей Богданов in LoadLand
как-то так
источник

S

SaneQ in LoadLand
Алексей Богданов
// Получить токен один раз. Используется при тестировании запросов от одного юзера
 val getToken = scenario(s"Get token ${client}")
   .exec(
     http("getToken")
       .post(authURI)
       .header("Content-Type", "application/x-www-form-urlencoded")
       .basicAuth(client, secret)
       .body(StringBody(s"grant_type=password&username=${login}&password=${password}"))
       .check(status.in(200))
       .check(jsonPath("$.access_token").saveAs("token"))
   )
   .exec(
     session => {
       token = session("token").as[String].trim
       session
     }
   )

 // Сценарий
 val scn = scenario("----").feed(csvData)
   .exec(_.set("token", token))
   .exec(
     http("-----")
       .get(appURI + "/----")
       .header("Authorization", """Bearer ${token}""")
       .check(status.in(200, 204))
       //.check(responseTimeInMillis.is(200))
   )
мне надо разных юзеров
источник

АБ

Алексей Богданов in LoadLand
SaneQ
мне надо разных юзеров
а зачем тогда разделять на два сценария?
источник

S

SaneQ in LoadLand
Алексей Богданов
а зачем тогда разделять на два сценария?
токены один раз получать и после распоряжаться ими как угодно
источник

АБ

Алексей Богданов in LoadLand
SaneQ
токены один раз получать и после распоряжаться ими как угодно
Может тогда лучше сохранить в файл все токены? и не придется хранить в памяти весь объем
источник

S

SaneQ in LoadLand
Алексей Богданов
Может тогда лучше сохранить в файл все токены? и не придется хранить в памяти весь объем
может быть, вот пытаюсь понять как лучше
источник

ΙΤ

Ιωάννης Τσεκούρι in LoadLand
SaneQ
может быть, вот пытаюсь понять как лучше
мы обычно пользуемся пейсингом и forever, т.е. структура будет типа
getToken
.forever { ActionsWithToken }
источник

ΙΤ

Ιωάννης Τσεκούρι in LoadLand
одинраз получил и используешь
источник

S

SaneQ in LoadLand
Ιωάννης Τσεκούρι
мы обычно пользуемся пейсингом и forever, т.е. структура будет типа
getToken
.forever { ActionsWithToken }
А можно подробней? Пока совсем не понятно
источник

ΙΤ

Ιωάννης Τσεκούρι in LoadLand
SaneQ
А можно подробней? Пока совсем не понятно
что именно подробнее?
источник

ΙΤ

Ιωάννης Τσεκούρι in LoadLand
тебе железно нужен один токен на всех?
источник

S

SaneQ in LoadLand
Ιωάννης Τσεκούρι
тебе железно нужен один токен на всех?
Нет, наоборот я хотел несколько токенов от разных пользователей
источник

ΙΤ

Ιωάννης Τσεκούρι in LoadLand
SaneQ
Нет, наоборот я хотел несколько токенов от разных пользователей
ну так, получи первым делом токен, запиши его в сессию, и дальше в цикле выполняй любые действия передавая токен
источник

S

SaneQ in LoadLand
Ιωάννης Τσεκούρι
ну так, получи первым делом токен, запиши его в сессию, и дальше в цикле выполняй любые действия передавая токен
ну вот я вроде записываю его в сессию(код выше), но почему следущий сценарий исполняется не с разными токенами а с одним?
источник

ΙΤ

Ιωάννης Τσεκούρι in LoadLand
SaneQ
ну вот я вроде записываю его в сессию(код выше), но почему следущий сценарий исполняется не с разными токенами а с одним?
потому что ты его нигде и не вызываешь потом?)
источник

ΙΤ

Ιωάννης Τσεκούρι in LoadLand
.exec(Auth())
       .forever {
         pace(10 seconds)
           .exec(GetInfo())
       }
источник

ΙΤ

Ιωάννης Τσεκούρι in LoadLand
вот так сценарий авторизуется и с одним токеном для каждого пользователя будет гонять действия
источник