У меня есть два сценария: 1-й сценарий «getAssets» будет извлекать все идентификаторы активов и сохранять их в списке, 2-й сценарий «fetchMetadata» будет повторять их ID.
Мне нужно выполнить сценарий «getAssets» только один раз, чтобы получить все идентификаторы, и сценарий «fetchMetadata» до заданного времени только после завершения 1-го сценария.
Как я могу выполнить оба сценария в цепочке (последовательно)?
Вот код, но он не выполняет сценарии последовательно.
import java.util.concurrent.ThreadLocalRandom
import scala.concurrent.duration._
import io.gatling.core.Predef._
import io.gatling.http.Predef._
class getAssetsMetadata extends Simulation {
val getAssetURL = System.getProperty("getAssetURL", "https://performancetesting.net")
val username = System.getProperty("username", "performanceuser")
val password = System.getProperty("password", "performanceuser")
val limit = Integer.getInteger("limit", 1000).toInt
val userCount = Integer.getInteger("userCount", 100).toInt
val duration = Integer.getInteger("duration",1).toInt //in minutes
var IdList: Seq[String] = _
val httpProtocol = http
.basicAuth(username, password)
.baseURL(getAssetURL)
.contentTypeHeader("""application/vnd.v1+json""")
def getAssets = exec(http("List of Assets")
.get(s"""/api/assets;limit=$limit""")
.check(jsonPath("$.assets[*].id").findAll.transform {v => IdList = v; v }.saveAs("IdList"))
)
def fetchMetadata = exec(_.set("IdList", IdList))
.exec(http("Metadata Request")
.get("""/api/assets/${IdList.random()}/metadata""")
)
// Chain scenarios
var scn1 = scenario("Scenario 1")
.exec(getAssets)
var scn2 = scenario("Scenario 2")
.exec(fetchMetadata)
setUp(scn1.inject(atOnceUsers(1)), scn2.inject(constantUsersPerSec(userCount) during(duration minutes))).protocols(httpProtocol)
}
val chainedScenario = scenario("chainedScenario").exec(getAssets).exec(fetchMetadata)
- person Jeffrey Chung   schedule 05.06.2017