Запрос Gatling Java будет вызываться только один раз для получения информации для входа в систему для других запросов, кJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Запрос Gatling Java будет вызываться только один раз для получения информации для входа в систему для других запросов, к

Сообщение Anonymous »

Я хочу, чтобы мой вход в систему выполнялся только один раз, поскольку он управляется сторонней службой, поэтому после того, как токен будет получен один раз в течение всего времени тестов, он не должен выполняться снова. Этот токен должен быть внедрен как заголовок файла cookie для других вызовов API, не меняясь независимо от того, сколько вызовов было выполнено для этих других запросов в рамках одного и того же выполнения тестов. Ниже приведено то, что у меня есть, но, возможно, из-за того, как Гатлинг управляет сеансами, он не работает, и вход в систему выполняется столько раз, сколько вызывают другие API.

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

import io.gatling.javaapi.core.ScenarioBuilder;
import io.gatling.javaapi.core.Simulation;
import io.gatling.javaapi.http.HttpProtocolBuilder;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.atomic.AtomicReference;

import static io.gatling.javaapi.core.CoreDsl.*;
import static io.gatling.javaapi.http.HttpDsl.*;

@Slf4j
public class DebugSimulation extends Simulation {

private static final String BASE_URL_DEV = "https://aml-ar-reporting.apps.stl.bnw-dev-pas.mycompany.int";
private static final String BASE_URL_STAGE = "https://dtl.mycompanyconnect.com/";
private static final String ENV = System.getProperty("env");
private static final String BASE_URL = ENV.equals("dev") ? BASE_URL_DEV : BASE_URL_STAGE;
private static final String API_PATH = ENV.equals("dev") ? "" : "aml-account-risk/api";

private static final AtomicReference authCookieRef = new AtomicReference();

private final HttpProtocolBuilder httpProtocol = http
.disableFollowRedirect()
.baseUrl(BASE_URL)
.acceptHeader("application/json")
.header("X-AmlArReporting-CID", "125283")
.header("X-AmlArReporting-ICAs", "5655,9529,14516,15662,20929,31627,31931");

private final ScenarioBuilder scn = scenario("MyScenario")
.exec(session -> {
if (authCookieRef.get() != null) {
System.out.println("User does not need cookie");
return session.set("authCookie", authCookieRef.get());
}
else {
System.out.println("User needs cookie");
}
return session.set("needLogin", true);
})
.doIf(session -> session.contains("needLogin")).then(
exec(http("Login")
.post("/heracles/login")
.header("Content-Type", "application/x-www-form-urlencoded")
.formParam("username", "aml_ar_stg")
.formParam("password", "1234")
.formParam("login-form-type", "token")
.check(status().is(302), header("Set-Cookie").saveAs("authCookie")))
.exec(session -> {
String authCookie = session.getString("authCookie").split(";")[0];
authCookieRef.set("auth_token=" + authCookie);
return session.set("authCookie", authCookieRef.get());
})
)
.exec(http("LastRefreshDate")
.get(API_PATH + "/notifications/last-refresh-date")
.header("cookie", "#{authCookie}")
.check(status().is(200))
);

{
setUp(
scn.injectOpen(atOnceUsers(2))
).protocols(httpProtocol);
}
}
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ion-for-ot
Ответить

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

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

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

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

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