Search in sources :

Example 1 with SendRequest

use of com.quorum.tessera.api.SendRequest 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 SendRequest

use of com.quorum.tessera.api.SendRequest in project tessera by ConsenSys.

the class TransactionForwardingIT method sendNewTransaction.

private String sendNewTransaction(final Party party) {
    final URI node = party.getQ2TUri();
    final String from = party.getPublicKey();
    SendRequest sendRequest = new SendRequest();
    sendRequest.setFrom(from);
    sendRequest.setPayload(transactionData);
    LOGGER.debug("Sending {} to {}", sendRequest, node);
    final Response response = party.getRestClient().target(node).path("/send").request().post(Entity.entity(sendRequest, MediaType.APPLICATION_JSON));
    assertThat(response).isNotNull();
    assertThat(response.getStatus()).isEqualTo(201);
    LOGGER.debug("Sent {} to {}", sendRequest, node);
    // check the call was success
    final SendResponse result = response.readEntity(SendResponse.class);
    LOGGER.debug("Response status : {}, body: {}", response.getStatus(), result);
    assertThat(result.getKey()).isNotBlank();
    return result.getKey();
}
Also used : SendResponse(com.quorum.tessera.api.SendResponse) Response(jakarta.ws.rs.core.Response) ReceiveResponse(com.quorum.tessera.api.ReceiveResponse) SendRequest(com.quorum.tessera.api.SendRequest) SendResponse(com.quorum.tessera.api.SendResponse) URI(java.net.URI)

Example 3 with SendRequest

use of com.quorum.tessera.api.SendRequest 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 4 with SendRequest

use of com.quorum.tessera.api.SendRequest 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 5 with SendRequest

use of com.quorum.tessera.api.SendRequest 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)

Aggregations

SendRequest (com.quorum.tessera.api.SendRequest)64 Response (jakarta.ws.rs.core.Response)60 SendResponse (com.quorum.tessera.api.SendResponse)50 Party (com.quorum.tessera.test.Party)43 Test (org.junit.Test)43 ReceiveResponse (com.quorum.tessera.api.ReceiveResponse)27 MessageHash (com.quorum.tessera.data.MessageHash)13 PublicKey (com.quorum.tessera.encryption.PublicKey)13 URI (java.net.URI)13 RestUtils (com.quorum.tessera.test.rest.RestUtils)11 PayloadEncryptResponse (com.quorum.tessera.api.PayloadEncryptResponse)8 ReceiveResponse (com.quorum.tessera.transaction.ReceiveResponse)8 Stream (java.util.stream.Stream)6 PrivacyGroup (com.quorum.tessera.enclave.PrivacyGroup)5 PrivacyMode (com.quorum.tessera.enclave.PrivacyMode)5 MIME_TYPE_JSON_2_1 (com.quorum.tessera.version.MultiTenancyVersion.MIME_TYPE_JSON_2_1)5 TransactionManager (com.quorum.tessera.transaction.TransactionManager)4 Operation (io.swagger.v3.oas.annotations.Operation)4 PartyHelper (com.quorum.tessera.test.PartyHelper)3 Content (io.swagger.v3.oas.annotations.media.Content)3