Hi all, I managed to do what you want but only in hacky way:
val initStarted = new AtomicBoolean(false)
val initCompleteLatch = new CountDownLatch(1)
scenario("myScenario")
.doIf(_ => initStarted.getAndSet(true) == false) {
exec(http("first")
.get("/endpoint")
.check(status.is(200),
jsonPath("$..response.id").findAll.saveAs("reponseVariable")
)
).exec { session =>
reponseVariable = session("reponseVariable").as[String]
initCompleteLatch.countDown()
session
}
}
.exec { session =>
initCompleteLatch.await()
session.set("reponseVariable", reponseVariable)
}
.exec(http("second")
.post("/another/endpoint/{responseVariable}")
.body(...)
.check(status.is(200))
)
Hope it helps :) It can chain serveral requests, passthrough response along, and ensures first request is send only once.
T. Yuan, G. Li, J. Lu, C. Liu, L. Li, and J. Xue. 2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), page 187-199. Los Alamitos, CA, USA, IEEE Computer Society, (March 2021)
O. Babaoglu, T. Binci, M. Jelasity, and A. Montresor. SASO '07: Proceedings of the First International Conference on Self-Adaptive and Self-Organizing Systems, page 77--86. Washington, DC, USA, IEEE Computer Society, (Jul 11, 2007)