Изменить значение заголовков при вводе пользователем в сценарии gatling - PullRequest
0 голосов
/ 24 января 2020

Я хочу менять значение заголовков каждый раз, когда пользователь вводит данные в Gatling. потому что у меня есть ошибка в моем коде, когда код выполняется. ошибка: «Срок действия подписи истек: 20200124T170359Z более ранний, чем 20200124T170552Z (20200124T172052Z - 15 мин.». Мой код


val signer: AwsSigner = AwsSigner(AwsCredentialsProviderWithSession, region, Service, clock)

val signedHeaders = signer.getSignedHeaders(Uri, PostMethod, queryParams, headers, emptyPayload)

 val scen =scenario("Home page").repeat(100) {

 .exec(
     http("Custom headers")
       .get("Url"+"?Action=SendMessage&MessageBody=" + queryEnc)
     .headers(signedHeaders)


setUp(

   sendLoadToAws.scen.inject(rampUsersPerSec(10) to 15  during (60))
)

Ответы [ 2 ]

0 голосов
/ 27 января 2020

У меня проблема с тем, чтобы обновить sh значения заголовков до 15 минут, потому что мой код, запущенный через 15 минут, показывает, что singatureDoesNotMatch или подпись устарела через 15 минут. поэтому я сделал исправления в своем коде с подсказкой @ Amerousful . Я использовал Session подобно

val scen = scenario("Home page") {
   exec(session => session.set("authroization", signedHeaders("Authorization"))
  .set("host", signedHeaders("Host"))
  .set("x-amz-date", signedHeaders("x-amz-date"))
  .set("x-amz-security-token", signedHeaders("x-amz-security-token"))

)
 .exec(
    http("Custom headers")
      .get("url + "?Action=SendMessage&MessageBody=" + message)
      .header("Authorization", "${authroization}")
      .header("Host", "${host}")
      .header("x-amz-date", "${x-amz-date}")
      .header("x-amz-security-token", "${x-amz-security-token}")
    //.header("header", "${signer}")

  )

 setUp(
   scen.inject(nothingFor(5), constantUsersPerSec(80) during (3600)))

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

0 голосов
/ 24 января 2020

Вам нужен канал, есть документация для получения дополнительной информации https://gatling.io/docs/current/session/feeder/.

Итак, сначала создайте этот канал

val signedHeaders = {
    val signedHeaders = signer.getSignedHeaders(Uri, PostMethod, queryParams, headers, emptyPayload)

    Iterator.continually(Map(
    "header_1" -> signedHeaders.header_1,
    "header_2" -> signedHeaders.header_2
  }

Теперь нужно добавить канал для вашего сценария

.feed(signedHeaders)
   .exec(
     http("Custom headers")
       .get("url"+"?Action=SendMessage&MessageBody=" + queryEnc)

И, наконец, добавьте заголовки к запросу

.feed(signedHeaders)
       .exec(
         http("Custom headers")
           .get("url"+"?Action=SendMessage&MessageBody=" + queryEnc)
           .header("header_name_1", "${header_1}")
           .header("header_name_2", "${header_2}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...