diff --git a/pom.xml b/pom.xml
index 6ec9575..a1483db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -114,8 +114,9 @@
${gatling-maven-plugin.version}
- -Xms25600m
- -Xmx25600m
+ -XX:+UseG1GC
+ -Xms12400m
+ -Xmx12400m
diff --git a/src/test/java/requests/Queries.java b/src/test/java/requests/Queries.java
index 0168e75..bbcbf47 100644
--- a/src/test/java/requests/Queries.java
+++ b/src/test/java/requests/Queries.java
@@ -1,7 +1,6 @@
package requests;
import io.gatling.javaapi.core.ChainBuilder;
-import javassist.bytecode.ByteArray;
import jp.co.soramitsu.iroha2.CryptoUtils;
import jp.co.soramitsu.iroha2.ExtensionsKt;
import jp.co.soramitsu.iroha2.generated.*;
@@ -13,19 +12,18 @@
import static io.gatling.javaapi.core.CoreDsl.*;
import static io.gatling.javaapi.http.HttpDsl.http;
-import static jp.co.soramitsu.iroha2.client.Iroha2Client.QUERY_ENDPOINT;
public class Queries extends Constants {
/*
- Тяжёлые query
+ heavy query
FindAllAccounts
FindAccountsByDomainId
FindAllAssets
FindAllAssetsDefinitions
FindAssetsByDomainId
- Лёгкие query
+ lite query
FindAccountById
FindAssetById
FindAssetDefinitionById
@@ -34,6 +32,12 @@ public class Queries extends Constants {
FindDomainById
*/
+ private static QueryAndExtractor queryFindAllAsset;
+ private static BatchedResponse batchedResponse;
+ private static BatchedResponse.V1 batchedResponseV1;
+ private static List resultList = new ArrayList<>();
+ private static ForwardCursor cursor;
+
public static ChainBuilder healthCheck = exec(feed(CSV_FEEDER)).exec(feed(PEERS_FEEDER))
.exec(http("health check")
.get(session -> {
@@ -189,118 +193,6 @@ public class Queries extends Constants {
}))
);
- /*
- отправить запрос гатлингом
- проверить есть ли батчи
- если батчи есть
- отправить дозапросы на эти батчи
- */
-
- /*private static QueryAndExtractor queryFindAllAsset;
- private static BatchedResponse responseDecoded;
- private static byte[] response;
-
- public static ChainBuilder paginatedQueryPostFindAllAssets = exec(feed(CSV_FEEDER)).exec(feed(PEERS_FEEDER))
- .exec(session -> {
- ForwardCursor cursor = null;
- queryFindAllAsset = QueryBuilder
- .findAllAssets()
- .account(ExtensionsKt.asAccountId(session.getString("anotherDevAccountIdSender")))
- .buildSigned(CryptoUtils.keyPairFromHex(
- session.getString("publicKeySender"),
- session.getString("privateKeySender")));
- return session;
- }
- )
- .exec(http("checkBatchesQuery")
- .post(session -> {
- return session.getString("peer") + URL_QUERY;
- }
- )
- .body(ByteArrayBody(session -> {
- return SignedQuery.Companion.encode(queryFindAllAsset.getQuery());
- }
- )
- //сохранил тело ответа как байт массив
- ).check(bodyBytes().saveAs("fullResponse")) // save id
- )
- .exec(session -> {
- //реализовать работу с результатом предыдущего запроса
- //ты знаешь какой будет курсор, а что если пропустить шаг с получением курсора и сразу имплементировать получение батчей
- return session;
- }
- )
- .exec(http("findAllAssets")
- .post(session -> {
- return session.getString("peer") + URL_QUERY;
- }
- )
- .body(ByteArrayBody(session -> {
- ForwardCursor cursor = null;
- QueryAndExtractor queryFindAllAsset = QueryBuilder
- .findAllAssets()
- .account(ExtensionsKt.asAccountId(session.getString("anotherDevAccountIdSender")))
- .buildSigned(CryptoUtils.keyPairFromHex(
- session.getString("publicKeySender"),
- session.getString("privateKeySender")));
-
-
-
- var responseDecoded = sendQueryRequest(queryFindAllAsset, cursor);
- BatchedResponse.V1 decodedCursor = null;
- decodedCursor = (BatchedResponse.V1) responseDecoded.;
- if (decodedCursor.getBatchedResponseV1().getCursor() == null) {
- var finalResult = queryFindAllAsset.getResultExtractor().extract((responseDecoded);
- return finalResult;
- } else {
- List resultList = getQueryResultWithCursor(queryFindAllAsset, decodedCursor.getBatchedResponseV1().getCursor());
- resultList.add(responseDecoded.getBatch());
- var finalResult = queryFindAllAsset.getResultExtractor().extract(new BatchedResponse.V1(
- new BatchedResponseV1(new QueryOutputBox.Vec(resultList), new ForwardCursor())));
- return finalResult;
- }
- }
- )
- )
- );
-
- private static BatchedResponse sendQueryRequest(QueryAndExtractor queryAndExtractor, ForwardCursor cursor) {
- if (cursor == null) {
- return client.post(getApiUrl() + QUERY_ENDPOINT,
- request -> request.setBody(SignedQuery.encode(queryAndExtractor.getQuery()))
- ).thenApply(response -> {
- byte[] responseBody = response;
- return BatchedResponse.Companion.decode(responseBody);
- });
- } else {
- return client.post(getApiUrl() + QUERY_ENDPOINT,
- request -> {
- request.parameter("query", cursor.getQuery());
- request.parameter("cursor", cursor.getCursor() != null ? cursor.getCursor().getU64() : null);
- }
- ).thenApply(response -> {
- byte[] responseBody = response.body();
- return BatchedResponseV1.Companion.decode(responseBody);
- });
- }
- }
-
- private static List getQueryResultWithCursor(QueryAndExtractor queryAndExtractor, ForwardCursor queryCursor) {
- if (queryCursor == null) {
- queryCursor = new ForwardCursor();
- }
- List resultList = new ArrayList<>();
- BatchedResponseV1 responseDecoded = sendQueryRequest(queryAndExtractor, queryCursor);
- resultList.add(responseDecoded.getBatch());
- var cursor = responseDecoded.getCursor();
- if (cursor.getCursor() == null) {
- return resultList;
- } else {
- resultList.addAll(getQueryResultWithCursor(queryAndExtractor, cursor));
- return resultList;
- }
- }*/
-
public static ChainBuilder queryPostFindAllAccounts = exec(feed(CSV_FEEDER)).exec(feed(PEERS_FEEDER))
.exec(
http("findAllAccounts")
@@ -318,7 +210,6 @@ private static List getQueryResultWithCursor(QueryAndExtractor q
.getQuery());
}))
);
-
public static ChainBuilder queryPostFindAllTransactions = exec(feed(CSV_FEEDER)).exec(feed(PEERS_FEEDER))
.exec(
http("findAllTransactions")
@@ -336,4 +227,75 @@ private static List getQueryResultWithCursor(QueryAndExtractor q
.getQuery());
}))
);
+
+ public static ChainBuilder paginatedQueryPostFindAllAssets = exec(feed(CSV_FEEDER)).exec(feed(PEERS_FEEDER))
+ .exec(session -> {
+ queryFindAllAsset = QueryBuilder
+ .findAllAssets()
+ .account(ExtensionsKt.asAccountId(session.getString("anotherDevAccountIdSender")))
+ .buildSigned(CryptoUtils.keyPairFromHex(
+ session.getString("publicKeySender"),
+ session.getString("privateKeySender")));
+ return session;
+ }
+ )
+ .exec(http("checkBatchesQuery")
+ .post(session -> {
+ return session.getString("peer") + URL_QUERY;
+ }
+ )
+ .body(ByteArrayBody(session -> {
+ var response = SignedQuery.Companion.encode(queryFindAllAsset.getQuery());
+ BatchedResponse rawResponse = BatchedResponse.Companion.decode(response);
+ if (rawResponse instanceof BatchedResponse) {
+ batchedResponse = (BatchedResponse) rawResponse;
+ }
+ cursor = ((BatchedResponse.V1) batchedResponse).getBatchedResponseV1().getCursor();
+ session.set("conditionCursor", ((BatchedResponse.V1) batchedResponse).getBatchedResponseV1().getCursor().toString());
+ return null;
+ }
+ )
+ )
+ )
+ .doWhile(session -> session.get("conditionCursor"))
+ .on(http("additionQuery")
+ .post("")
+ .queryParam("query", cursor.getQuery())
+ .queryParam("cursor", cursor.getCursor().getU64())
+ .body(ByteArrayBody(session -> {
+ var response = SignedQuery.Companion.encode(queryFindAllAsset.getQuery());
+ BatchedResponse rawResponse = BatchedResponse.Companion.decode(response);
+ if (rawResponse instanceof BatchedResponse) {
+ batchedResponse = (BatchedResponse) rawResponse;
+ }
+ batchedResponseV1 = (BatchedResponse.V1) batchedResponse;
+ resultList.addAll(
+ (List) batchedResponseV1.component1().getBatch()
+ );
+ cursor = ((BatchedResponse.V1) batchedResponse).getBatchedResponseV1().getCursor();
+ session.set("conditionCursor", ((BatchedResponse.V1) batchedResponse).getBatchedResponseV1().getCursor().toString());
+ return null;
+ }
+ )
+ )
+ )
+ /*.exec(session -> {
+ byte[] responseBodyByte = session.get("fullResponse");
+ try {
+ BatchedResponse rawResponse = BatchedResponse.Companion.decode(responseBodyByte);
+ if (rawResponse instanceof BatchedResponse) {
+ batchedResponse = (BatchedResponse) rawResponse;
+ }
+ } catch (ClassCastException ex) {
+ ex.getMessage();
+ }
+ batchedResponseV1 = (BatchedResponse.V1) batchedResponse;
+ resultList.addAll(
+ (List) batchedResponseV1.component1().getBatch()
+ );
+ var batch = new BatchedResponse.V1(new BatchedResponseV1(new QueryOutputBox.Vec(resultList), new ForwardCursor()));
+ queryFindAllAsset.getResultExtractor().extract(batch);
+ return session;
+ }
+ )*/;
}