use of joynr.ImmutableMessage in project joynr by bmwcarit.
the class AbstractBounceProxyServerTest method testSendAndReceiveMessagesConcurrently.
@Test(timeout = 1000000)
@Ignore
public // results in duplicate messages in the long poll.
void testSendAndReceiveMessagesConcurrently() throws Exception {
final int maxRuns = 1000;
bpMock.createChannel(channelId);
// createChannel(channelIdProvider);
RestAssured.baseURI = getBounceProxyBaseUri();
List<byte[]> expectedPayloads = new ArrayList<byte[]>();
for (int i = 0; i < maxRuns; i++) {
expectedPayloads.clear();
ScheduledFuture<Response> longPollConsumer = bpMock.longPollInOwnThread(channelId, 30000);
byte[] postPayload = (payload + i + "-" + UUID.randomUUID().toString()).getBytes(Charsets.UTF_8);
expectedPayloads.add(postPayload);
ScheduledFuture<Response> postMessage = bpMock.postMessageInOwnThread(channelId, 5000, postPayload);
// wait until the long poll returns
Response responseLongPoll = longPollConsumer.get();
byte[] responseBody = responseLongPoll.getBody().asByteArray();
List<ImmutableMessage> receivedMessages = Utilities.splitSMRF(responseBody);
// wait until the POSTs are finished.
postMessage.get();
ArrayList<byte[]> payloads = new ArrayList<byte[]>();
for (ImmutableMessage message : receivedMessages) {
payloads.add(message.getUnencryptedBody());
}
// assertFalse("Unresolved bug that causes duplicate messages to be sent", payloads.size() == 2);
// assertEquals(1, payloads.size());
assertThat(payloads, hasItems(postPayload));
}
}
use of joynr.ImmutableMessage in project joynr by bmwcarit.
the class DispatcherImplTest method testPropagateCompressFlagFromRequestToRepliesImpl.
private void testPropagateCompressFlagFromRequestToRepliesImpl(final boolean compress) throws Exception {
MessagingQos messagingQos = new MessagingQos(1000L);
messagingQos.setCompress(compress);
String requestReplyId = UUID.randomUUID().toString();
Request request = new Request("methodName", new Object[] {}, new String[] {}, requestReplyId);
final String providerParticipantId = "toParticipantId";
MutableMessage joynrMessage = messageFactory.createRequest("fromParticipantId", providerParticipantId, request, messagingQos);
ImmutableMessage outgoingMessage = joynrMessage.getImmutableMessage();
fixture.messageArrived(outgoingMessage);
verify(requestReplyManagerMock).handleRequest(providerCallbackReply.capture(), eq(providerParticipantId), eq(request), eq(joynrMessage.getTtlMs()));
providerCallbackReply.getValue().onSuccess(new Reply(requestReplyId));
verify(messageSenderMock).sendMessage(argThat(new MessageIsCompressedMatcher(compress)));
}
use of joynr.ImmutableMessage in project joynr by bmwcarit.
the class MutableMessageFactoryTest method setUp.
@Before
public void setUp() throws NoSuchMethodException, SecurityException {
fromParticipantId = "sender";
toParticipantId = "receiver";
Injector injector = Guice.createInjector(new JoynrPropertiesModule(new Properties()), new JsonMessageSerializerModule(), new AbstractModule() {
@Override
protected void configure() {
bind(Long.class).annotatedWith(Names.named(ConfigurableMessagingSettings.PROPERTY_TTL_UPLIFT_MS)).toInstance(NO_TTL_UPLIFT);
requestStaticInjection(Request.class);
Multibinder<JoynrMessageProcessor> joynrMessageProcessorMultibinder = Multibinder.newSetBinder(binder(), new TypeLiteral<JoynrMessageProcessor>() {
});
joynrMessageProcessorMultibinder.addBinding().toInstance(new JoynrMessageProcessor() {
@Override
public MutableMessage processOutgoing(MutableMessage joynrMessage) {
joynrMessage.getCustomHeaders().put("test", "test");
return joynrMessage;
}
@Override
public ImmutableMessage processIncoming(ImmutableMessage joynrMessage) {
return joynrMessage;
}
});
}
});
objectMapper = injector.getInstance(ObjectMapper.class);
payload = "payload";
Method method = TestProvider.class.getMethod("methodWithStrings", new Class[] { String.class });
request = new Request(method.getName(), new String[] { payload }, method.getParameterTypes());
String requestReplyId = request.getRequestReplyId();
reply = new Reply(requestReplyId, objectMapper.<JsonNode>valueToTree(payload));
messagingQos = new MessagingQos(TTL);
expiryDate = DispatcherUtils.convertTtlToExpirationDate(messagingQos.getRoundTripTtl_ms());
String subscriptionId = "subscription";
String attributeName = "attribute";
PeriodicSubscriptionQos subscriptionqos = new PeriodicSubscriptionQos();
subscriptionqos.setPeriodMs(1000).setValidityMs(10).setAlertAfterIntervalMs(1500).setPublicationTtlMs(1000);
subscriptionRequest = new SubscriptionRequest(subscriptionId, attributeName, subscriptionqos);
String response = "response";
publication = new SubscriptionPublication(Arrays.asList(response), subscriptionId);
mutableMessageFactory = injector.getInstance(MutableMessageFactory.class);
}
use of joynr.ImmutableMessage in project joynr by bmwcarit.
the class CcMessageRouterTest method testNoRetryForMulticastWithoutAddress.
@Test
public void testNoRetryForMulticastWithoutAddress() throws Exception {
joynrMessage.setTtlMs(ExpiryDate.fromRelativeTtl(1000).getValue());
joynrMessage.setType(Message.VALUE_MESSAGE_TYPE_MULTICAST);
joynrMessage.setRecipient("multicastId");
ImmutableMessage immutableMessage = joynrMessage.getImmutableMessage();
messageRouter.route(immutableMessage);
Thread.sleep(100);
verify(addressManager).getAddresses(immutableMessage);
}
use of joynr.ImmutableMessage in project joynr by bmwcarit.
the class CcMessageRouterTest method testRetryWithMaxRetryCount.
@Test
public void testRetryWithMaxRetryCount() throws Exception {
final long routingMaxRetryCount = 3;
MessageRouter messageRouterWithMaxRetryCount = getMessageRouterWithMaxRetryCount(routingMaxRetryCount);
ImmutableMessage immutableMessage = retryRoutingWith1msDelay(messageRouterWithMaxRetryCount, 100000000);
verify(messagingStubMock, times((int) routingMaxRetryCount + 1)).transmit(eq(immutableMessage), any(SuccessAction.class), any(FailureAction.class));
}
Aggregations