我是新来的斯卡拉。基于Webservice响应的加特林请求
我正在使用Gatling进行压力测试。
我可以做一个向WS发出请求的Gatling测试,我在会话变量中保存了JSON响应。响应是一个JSON数组,其中包含由我的后端提供的多个图像链接。
具体来说,第一个请求检索地图中的点,每个点都有一个图像分配,每个图像必须通过访问由第一个WS响应提供的链接来获取。
我已经以下代码:
class BasicSimulation extends Simulation
{
object Points
{
val jsonFileFeeder = jsonFile("input.json").circular
val points=exec(http("r1").get("/"))
.feed(jsonFileFeeder)
.exec(http("r2")
.post("/ws/getPoints")
.check(bodyString.saveAs("points"))
)
}
object Images
{
val images=exec(session=>{
val respMap = session("points").as[String]
val mapper = new ObjectMapper()
val rA = mapper.readTree(respMap)
for(a <- 0 until (rA.size()-1))
{
val lnk=rA.get(a).get("image").toString()
exec(http("r3").get(lnk))
}
session
}
)
}
val httpConf = http
.baseURL("http://localhost:8000/")
.userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0")
val scn = scenario("Test1").exec(Points.points,Images.images)
setUp(scn.inject(atOnceUsers(2)).protocols(httpConf))
}
第一WS的JSON响应的样品:
[
{
"bid": 1375,
"image": "http://localhost:8000/ws/image/1375",
"position": [2.326609,48.872678]
},
{
"bid": 1375,
"image": "http://localhost:8000/ws/image/1375",
"position": [2.352725,48.87323]
}
]
第一请求工作正常,不解析因为具有jsonPath响应我总是得到错误:
无法提取:字符串匹配正则表达式[$_\p{L}][$_\-\d\p{L}]*' expected but
['找到了
虽然我veryfied我jsonpath表达
https://jsonpath.curiousconcept.com/
随着
import io.gatling.core.json.Jackson
我能够解析响应,问题是,试图使 第二请求EXEC(当http(“r3”)。get(lnk)),请求没有作出,因为 我登录在后端大小的请求,进行第一个请求时,后端记录请求,第二个请求,该请求不记录在后端。
如果我把请求直接取决于场景:
scenario("Test1").exec(http("r").get("http://localhost:8000/ws/image/1375"))
的请求。
我想向WS发出请求,解析响应,迭代响应的JSON元素,并为每个元素再次调用其他webservice。
谢谢你的帮助。