Gatling - Schleife durch JSON-array
Habe ich einen code-block muss in einer Schleife durch ein JSON-array, welches erhalten wird aus der Reaktion von einem REST-service. (Voll gist verfügbar hier.)
.exec(http("Request_1")
.post("/endPoint")
.headers(headers_1)
.body(StringBody("""REQUEST_BODY""")).asJSON
.check(jsonPath("$.result").is("SUCCESS"))
.check(jsonPath("$.data[*]").findAll.saveAs("pList")))
.exec(session => {
println(session)
session
})
.foreach("${pList}", "player"){
exec(session => {
val playerId = JsonPath.query("$.playerId", "${player}")
session.set("playerId", playerId)
})
.exec(http("Request_1")
.post("/endPoint")
.headers(headers_1)
.body(StringBody("""{"playerId":"${playerId}"}""")).asJSON
.check(jsonPath("$.result").is("SUCCESS")))
}
Antwortformat der ersten Anfrage war
{
"result": "SUCCESS",
"data": [
{
"playerId": 2
},
{
"playerId": 3
},
{
"playerId": 4
}
]
}
Sowie playerId
zeigt sich in der Sitzung als
pList -> Vector({playerId=2, score=200}, {playerId=3, score=200}
Ich sehe bei der zweiten Anfrage der Körper ist
{"playerId":"Right(empty iterator)}
Erwartet : 3 Anfragen, die sich mit dem Körper als
{"playerId":1}
{"playerId":2}
{"playerId":3}
Kann ich Loop-Schleife über das resultierende array erfolgreich, wenn ich speichern nur die playerIds:
.check(jsonPath("$.data[*].playerId").findAll.saveAs("pList")))
InformationsquelleAutor Neil | 2014-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnte ich die Anfragen, die Sie suchen gesendet (obwohl noch immer ein 404, aber das könnte sein, server-side-oder die Aufforderung, Ihr Kern ist der Versand könnte etwas fehlen). Der trick war zu geben, bis auf JsonPath ganz:
Hier, die
jsonPath
überprüfen kann automatisch speichern Sie Ihre JSON-Objekt als eine Karte, und dann können Sie den Zugriff auf die player-ID. Der Wertetyp muss nicht seinAny
könnten SieInt
oderLong
wenn alle Ihre Werte sind zahlen. Wenn Sie möchten mehr info, was schief gegangen ist mitJsonPath
Lesen.Ihre erste problem ist, dass
JsonPath.query()
nicht nur wieder den Wert, den Sie suchen. Aus der JsonPath readme:Nun, wenn es sagt, dass
Right(non-empty iterator)
, ich nahm an, das bedeutete, dass der iterator nicht leer war. Allerdings, wenn Sie versuchen, diese:...es gibt "leere " iterator". Ich bin mir nicht sicher, ob es ein problem mit
JsonPath
, diejsonPath
überprüfen, oder die Nutzung irgendwo dazwischen, aber es ist nicht ganz genug, Dokumentation für mich zu wollen, in Sie Graben.Ich habe nicht alles importieren. Welche version der Gatling verwenden Sie?
ofType
- und/oderofType[Map]
vielleicht neu in der RC1 oder RC2.gatling-charts-highcharts-2.0.0-RC2
Sorry, ich hatte die extra import scala.Sammlung.Karte entfernt , um loszuwerden, diese Fehler
Mit dem Datentyp Any ich habe ein problem im Vergleich. Grundsätzlich ist die Spieler-ID ist eine Zahl, wenn also (playerId < ${"playerIdFromSession"} gibt mir Kompilierungsfehler Wert < ist kein Mitglied einer)
InformationsquelleAutor Michelle