Код: Выделить всё
package com.mycompany.amlar.performancetests;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mycompany.amlar.openapi.Notification;
import io.gatling.javaapi.core.ChainBuilder;
import io.gatling.javaapi.core.ScenarioBuilder;
import io.gatling.javaapi.core.Simulation;
import io.gatling.javaapi.http.HttpProtocolBuilder;
import static io.gatling.javaapi.core.CoreDsl.*;
import static io.gatling.javaapi.http.HttpDsl.*;
public class AmlarSimulation extends Simulation {
private final HttpProtocolBuilder httpProtocol = http
.disableFollowRedirect()
.baseUrl(BASE_URL)
.acceptHeader("application/json")
.header("X-AmlArReporting-CID", CID)
.header("X-AmlArReporting-ICAs", ICAS);
private final ScenarioBuilder mainScn = scenario("MainScenario")
.exec(getStatus())
.exec(postStatus())
);
private static ChainBuilder getStatus() {
return exec(http("GetStatus")
.get(session -> API_PATH + "/notifications/00000000-0000-6000-7000-000000000000/status")
.check(status().is(200))
.check(jsonPath("$[0].id").notNull())
.check(jsonPath("$[0].modelVersion").notNull().saveAs("modelVersion"))
);
}
private static ChainBuilder postStatus() {
return exec(session -> {
// Retrieve the current modelVersion from the session
String currentModelVersion = session.getString("modelVersion");
// Increment the modelVersion by 1
int incrementedModelVersion = Integer.parseInt(currentModelVersion) + 1;
// Update the session with the incremented modelVersion
session.set("modelVersion", String.valueOf(incrementedModelVersion));
return session;
}).exec(http("PostStatus")
.post(session -> API_PATH + "/notifications/00000000-0000-6000-7000-000000000000/status")
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.body(StringBody(session -> """
{
"comment":"",
"fiFlaggedStatus":"FLAGGED",
"investigationAssessment":"WORTHY",
"investigationStatus":"COMPLETED",
"panRiskScore":986,
"modelVersion":"%s",
"created":"2026-07-02T08:20:38.814Z",
"id":""
}
""".formatted(session.getString("modelVersion"))))
.check(status().is(200))
.check(jsonPath("$.modelVersion").saveAs("modelVersion")) // Add this line
.check(jsonPath("$.id").notNull()));
}
{
setUp(mainScn.injectOpen(atOnceUsers(2))).protocols(httpProtocol);
}
}
Код: Выделить всё
curl -X GET "https://aml-ar-reporting.apps.stl.bnw-dev-pas.mycompany.int/notifications/00000000-0000-6000-7000-000000000000/status" \
-H "accept: application/json" \
-H "X-AmlArReporting-CID: 125283" \
-H "X-AmlArReporting-ICAs: 31931,5655,20929,9529,31627"
curl -X POST "https://aml-ar-reporting.apps.stl.bnw-dev-pas.mycompany.int/notifications/00000000-0000-6000-7000-000000000000/status" \
-H "accept: application/json" \
-H "X-AmlArReporting-CID: 125283" \
-H "X-AmlArReporting-ICAs: 31931,5655,20929,9529,31627" \
-H "Content-Type: application/json" \
--data-binary '{"comment":"","fiFlaggedStatus":"FLAGGED","investigationAssessment":"WORTHY","investigationStatus":"COMPLETED","panRiskScore":986,"modelVersion":"1","created":"2026-07-02T08:20:38.814Z","id":""}'
curl -X POST "https://aml-ar-reporting.apps.stl.bnw-dev-pas.mycompany.int/notifications/00000000-0000-6000-7000-000000000000/status" \
-H "accept: application/json" \
-H "X-AmlArReporting-CID: 125283" \
-H "X-AmlArReporting-ICAs: 31931,5655,20929,9529,31627" \
-H "Content-Type: application/json" \
--data-binary '{"comment":"","fiFlaggedStatus":"FLAGGED","investigationAssessment":"WORTHY","investigationStatus":"COMPLETED","panRiskScore":986,"modelVersion":"1","created":"2026-07-02T08:20:38.814Z","id":""}'
К начальному значению следует добавить 1 поверх того, что уже есть в базе данных, которая извлекается как часть API получения статуса. Это значение впоследствии также является частью ответа на запрос статуса публикации. Однако, как видно из запросов на завивку, два запроса на публикацию выполняются с одной и той же версией модели, и я не уверен, что делать, чтобы обойти это.
Спасибо. ты.
Подробнее здесь: https://stackoverflow.com/questions/787 ... dated-valu