Как выполнить каждый запрос Java Gatling с разными динамически обновляемыми значениями для одного и того же виртуальногоJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как выполнить каждый запрос Java Gatling с разными динамически обновляемыми значениями для одного и того же виртуального

Сообщение Anonymous »

У меня есть симуляция Java Gatling:

Код: Выделить всё

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 целое число между запросами), чтобы не возникал конфликт 409.
К начальному значению следует добавить 1 поверх того, что уже есть в базе данных, которая извлекается как часть API получения статуса. Это значение впоследствии также является частью ответа на запрос статуса публикации. Однако, как видно из запросов на завивку, два запроса на публикацию выполняются с одной и той же версией модели, и я не уверен, что делать, чтобы обойти это.
Спасибо. ты.

Подробнее здесь: https://stackoverflow.com/questions/787 ... dated-valu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»