Search in sources :

Example 1 with Party

use of com.quorum.tessera.test.Party in project tessera by ConsenSys.

the class StressSendIT method sendToSingleRecipientUntilFailureOrMaxReached.

/**
 * Quorum sends transaction with single public recipient key
 */
@Test
public void sendToSingleRecipientUntilFailureOrMaxReached() {
    LOGGER.info("stress test starting");
    final Party firstParty = partyHelper.findByAlias("A");
    final Party secondParty = partyHelper.findByAlias("B");
    byte[] transactionData = utils.createTransactionData();
    final AtomicInteger sendCounter = new AtomicInteger(0);
    final AtomicInteger invalidResults = new AtomicInteger(0);
    final List<Thread> stressThreads = new ArrayList<>();
    for (int i = 0; i < THREAD_COUNT; i++) {
        final Thread stressThread = new Thread(() -> {
            int currentCount = sendCounter.incrementAndGet();
            while (currentCount < MAX_COUNT) {
                final SendRequest sendRequest = new SendRequest();
                sendRequest.setFrom(firstParty.getPublicKey());
                sendRequest.setTo(secondParty.getPublicKey());
                sendRequest.setPayload(transactionData);
                try (Response response = client.target(firstParty.getQ2TUri()).path(SEND_PATH).request().post(Entity.entity(sendRequest, MediaType.APPLICATION_JSON))) {
                    if (response.getStatus() != 201) {
                        LOGGER.info("Response is not 201. MessageCount=" + currentCount);
                        sendCounter.addAndGet(MAX_COUNT);
                        invalidResults.incrementAndGet();
                    }
                }
                currentCount = sendCounter.incrementAndGet();
                if (currentCount % 1000 == 0) {
                    LOGGER.info("currentCount={}", currentCount);
                }
            }
        });
        stressThread.start();
        stressThreads.add(stressThread);
    }
    // wait for stress threads to finish
    for (int i = 0; i < THREAD_COUNT; i++) {
        try {
            stressThreads.get(i).join();
        } catch (InterruptedException e) {
            LOGGER.error("Error while waiting for clients to stop.", e);
        }
    }
    LOGGER.info("stress test finished");
    assertThat(invalidResults.get()).isEqualTo(0);
}
Also used : Response(jakarta.ws.rs.core.Response) Party(com.quorum.tessera.test.Party) SendRequest(com.quorum.tessera.api.SendRequest) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 2 with Party

use of com.quorum.tessera.test.Party in project tessera by ConsenSys.

the class PrivacyIT method sendTransactionsWithFlagMismatched.

@Test
public void sendTransactionsWithFlagMismatched() {
    Party sender = partyHelper.findByAlias(NodeAlias.A);
    final String originalHash = sendContractCreationTransaction(PrivacyMode.PARTY_PROTECTION);
    SendRequest secondRequest = new SendRequest();
    secondRequest.setPayload(new RestUtils().createTransactionData());
    secondRequest.setFrom(sender.getPublicKey());
    List<String> recipientList = List.of(partyHelper.findByAlias(NodeAlias.B).getPublicKey());
    secondRequest.setTo(recipientList.toArray(new String[recipientList.size()]));
    secondRequest.setPrivacyFlag(PrivacyMode.STANDARD_PRIVATE.getPrivacyFlag());
    secondRequest.setAffectedContractTransactions(originalHash);
    Response secondResponse = sender.getRestClientWebTarget().path("send").request().post(Entity.entity(secondRequest, MIME_TYPE_JSON_2_1));
    assertThat(secondResponse.getStatus()).isEqualTo(403);
}
Also used : SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) Party(com.quorum.tessera.test.Party) SendRequest(com.quorum.tessera.api.SendRequest) RestUtils(com.quorum.tessera.test.rest.RestUtils) Test(org.junit.Test)

Example 3 with Party

use of com.quorum.tessera.test.Party in project tessera by ConsenSys.

the class PrivacyIT method enhancedPrivacyTransactionsNotEnabled.

@Test
public void enhancedPrivacyTransactionsNotEnabled() {
    Party legacySender = partyHelper.findByAlias(NodeAlias.D);
    SendRequest sendRequest = new SendRequest();
    sendRequest.setPayload(new RestUtils().createTransactionData());
    sendRequest.setFrom(legacySender.getPublicKey());
    List<String> recipientList = List.of(partyHelper.findByAlias(NodeAlias.A).getPublicKey());
    sendRequest.setTo(recipientList.toArray(new String[recipientList.size()]));
    sendRequest.setPrivacyFlag(PrivacyMode.PARTY_PROTECTION.getPrivacyFlag());
    sendRequest.setAffectedContractTransactions(new String[0]);
    Response response = legacySender.getRestClientWebTarget().path("send").request().post(Entity.entity(sendRequest, MIME_TYPE_JSON_2_1));
    assertThat(response.getStatus()).isEqualTo(403);
}
Also used : SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) Party(com.quorum.tessera.test.Party) SendRequest(com.quorum.tessera.api.SendRequest) RestUtils(com.quorum.tessera.test.rest.RestUtils) Test(org.junit.Test)

Example 4 with Party

use of com.quorum.tessera.test.Party in project tessera by ConsenSys.

the class PrivacyIT method sendPSVTransactionsWithRecipientsMismatched.

@Test
public void sendPSVTransactionsWithRecipientsMismatched() {
    Party sender = partyHelper.findByAlias(NodeAlias.A);
    final String originalHash = sendContractCreationTransaction(PrivacyMode.PRIVATE_STATE_VALIDATION);
    SendRequest secondRequest = new SendRequest();
    secondRequest.setPayload(new RestUtils().createTransactionData());
    secondRequest.setFrom(sender.getPublicKey());
    List<String> anotherList = List.of(partyHelper.findByAlias(NodeAlias.B).getPublicKey(), partyHelper.findByAlias(NodeAlias.C).getPublicKey());
    secondRequest.setTo(anotherList.toArray(new String[anotherList.size()]));
    secondRequest.setPrivacyFlag(PrivacyMode.PRIVATE_STATE_VALIDATION.getPrivacyFlag());
    secondRequest.setAffectedContractTransactions(originalHash);
    secondRequest.setExecHash("execHash");
    Response secondResponse = sender.getRestClientWebTarget().path("send").request().post(Entity.entity(secondRequest, MIME_TYPE_JSON_2_1));
    assertThat(secondResponse.getStatus()).isEqualTo(403);
}
Also used : SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) Party(com.quorum.tessera.test.Party) SendRequest(com.quorum.tessera.api.SendRequest) RestUtils(com.quorum.tessera.test.rest.RestUtils) Test(org.junit.Test)

Example 5 with Party

use of com.quorum.tessera.test.Party in project tessera by ConsenSys.

the class PrivacyIT method oneOfTargetedRecipientsDoesNotHaveEnhancedPrivacyEnabled.

@Test
public void oneOfTargetedRecipientsDoesNotHaveEnhancedPrivacyEnabled() {
    Party sender = partyHelper.findByAlias(NodeAlias.A);
    SendRequest sendRequest = new SendRequest();
    sendRequest.setPayload(new RestUtils().createTransactionData());
    sendRequest.setFrom(sender.getPublicKey());
    List<String> recipientList = List.of(partyHelper.findByAlias(NodeAlias.C).getPublicKey(), partyHelper.findByAlias(NodeAlias.D).getPublicKey());
    sendRequest.setTo(recipientList.toArray(new String[recipientList.size()]));
    sendRequest.setPrivacyFlag(PrivacyMode.PARTY_PROTECTION.getPrivacyFlag());
    sendRequest.setAffectedContractTransactions(new String[0]);
    Response response = sender.getRestClientWebTarget().path("send").request().post(Entity.entity(sendRequest, MIME_TYPE_JSON_2_1));
    assertThat(response.getStatus()).isEqualTo(500);
}
Also used : SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) Party(com.quorum.tessera.test.Party) SendRequest(com.quorum.tessera.api.SendRequest) RestUtils(com.quorum.tessera.test.rest.RestUtils) Test(org.junit.Test)

Aggregations

Party (com.quorum.tessera.test.Party)63 Response (jakarta.ws.rs.core.Response)60 Test (org.junit.Test)46 SendResponse (com.quorum.tessera.api.SendResponse)45 SendRequest (com.quorum.tessera.api.SendRequest)43 ReceiveResponse (com.quorum.tessera.api.ReceiveResponse)32 URI (java.net.URI)16 RestUtils (com.quorum.tessera.test.rest.RestUtils)11 JsonObject (jakarta.json.JsonObject)7 PartyHelper (com.quorum.tessera.test.PartyHelper)5 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)5 PayloadEncryptResponse (com.quorum.tessera.api.PayloadEncryptResponse)4 Entity (jakarta.ws.rs.client.Entity)4 StringReader (java.io.StringReader)4 ExecutionContext (suite.ExecutionContext)4 ServerConfig (com.quorum.tessera.config.ServerConfig)3 ConfigDescriptor (config.ConfigDescriptor)3 Json (jakarta.json.Json)3 Client (jakarta.ws.rs.client.Client)3 Before (org.junit.Before)3