Как сделать вызов вложенного запроса в Gatling scala

Я смог вызвать вложенный запрос на 2-х уровнях, но на третьем уровне он не выполняется, так что я делаю это правильно или нет, если нет, то как правильно выполнить вложенный запрос на основе ответа

Вот мой код, который я использовал

import scala.concurrent.duration._
import java.net.{URLDecoder, URLEncoder}
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._

class NestedRequestResoponse extends Simulation {
val scn = scenario("NestedRequestResoponse ")
.exec(http("request_2")
            .post("https://myurl:443/autho/login/login.html""")
            .formParam("""userid""", """userName""")
            .formParam("""password""", """password""")
            .formParam("""target""", """""")
            .formParam("""smauthreason""", """""")
            .formParam("""smquerydata""", """""")
            .formParam("""smagentname""", """""")
            .formParam("""postpreservationdata""", """""")
            .formParam("""SMENC""", """""")
            .formParam("""SMLOCALE""", """""")
            .check(currentLocation.transform(s => {
                val locationRegex = """.*/autho/fed/(.*)/.*""".r
                val locationKey = locationRegex findFirstIn s
                URLDecoder.decode(locationKey.get.replace("somepath/to/replace", ""), "UTF-8")
              }).saveAs("redirectURL") )
            .resources(         
                http("request_3 ${redirectURL}")
                .get("https://go.to.this.url:443${redirectURL}")
                .check(currentLocation.transform(s => {
                    val locationRegexN = """.*/*/.*""".r
                    val locationKeyN = locationRegexN findFirstIn s
                    URLDecoder.decode(locationKeyN.get, "UTF-8")
                  }).saveAs("pingURL") )
                    .resources(
                        http("request_4  ${pingURL}").get("${pingURL}").check(status.is(200))
                    )
            ))
}



Итак, здесь я не могу выполнить "request_4", пожалуйста, подскажите мне правильный способ сделать это.


person Kundan Atre    schedule 26.11.2014    source источник


Ответы (1)


Мы поддерживаем только один уровень ресурсов.

person Stephane Landelle    schedule 26.11.2014
comment
Итак, как сделать вложенные вызовы на основе ответа на один запрос? - person Kundan Atre; 26.11.2014
comment
Блок ресурсов предназначен для выполнения параллельных пакетов запросов, таких как выборка ресурсов страницы. В противном случае просто напишите exec(request1).exec(request2) - person Stephane Landelle; 26.11.2014
comment
Спасибо за ваш быстрый ответ, Стефан, я тоже пробовал это, но проблема в том, что если выполнить его таким образом, ответ даст 500 в качестве статуса. Я пробовал с декодированием URL-адреса первого запроса и без него, в обоих случаях он дает одинаковый ответ 500. Принимая во внимание, что он показывает правильный ответ в регистраторе Гатлинга. Так как же записывающее устройство Гатлинга выполняет свою работу, чтобы получить правильный вывод? - person Kundan Atre; 26.11.2014