use of org.apache.storm.messaging.IConnection in project storm by apache.
the class NettyTest method doTestBatch.
private void doTestBatch(Map<String, Object> stormConf) throws Exception {
int numMessages = 100_000;
LOG.info("Should send and receive many messages (testing with " + numMessages + " messages)");
ArrayList<TaskMessage> responses = new ArrayList<>();
AtomicInteger received = new AtomicInteger();
IContext context = TransportFactory.makeContext(stormConf, null);
try {
try (IConnection server = context.bind(null, 0, mkConnectionCallback((message) -> {
responses.add(message);
received.incrementAndGet();
}), null);
IConnection client = context.connect(null, "localhost", server.getPort(), remoteBpStatus)) {
waitUntilReady(client, server);
IntStream.range(1, numMessages).forEach(i -> send(client, taskId, String.valueOf(i).getBytes(StandardCharsets.UTF_8)));
Testing.whileTimeout(Testing.TEST_TIMEOUT_MS, () -> responses.size() < numMessages - 1, () -> {
LOG.info("{} of {} received", responses.size(), numMessages - 1);
sleep().run();
});
IntStream.range(1, numMessages).forEach(i -> {
assertThat(new String(responses.get(i - 1).message(), StandardCharsets.UTF_8), is(String.valueOf(i)));
});
}
} finally {
context.term();
}
}
use of org.apache.storm.messaging.IConnection in project storm by apache.
the class NettyTest method doTestServerDelayed.
private void doTestServerDelayed(Map<String, Object> stormConf) throws Exception {
LOG.info("4. test server delayed");
String reqMessage = "0123456789abcdefghijklmnopqrstuvwxyz";
IContext context = TransportFactory.makeContext(stormConf, null);
try {
AtomicReference<TaskMessage> response = new AtomicReference<>();
int port = Utils.getAvailablePort(6700);
try (IConnection client = context.connect(null, "localhost", port, remoteBpStatus)) {
AtomicReference<IConnection> server = new AtomicReference<>();
try {
CompletableFuture<?> serverStart = CompletableFuture.runAsync(() -> {
try {
Thread.sleep(100);
server.set(context.bind(null, port, mkConnectionCallback(response::set), null));
waitUntilReady(client, server.get());
} catch (Exception e) {
throw Utils.wrapInRuntime(e);
}
});
serverStart.get(Testing.TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
byte[] messageBytes = reqMessage.getBytes(StandardCharsets.UTF_8);
send(client, taskId, messageBytes);
waitForNotNull(response);
TaskMessage responseMessage = response.get();
assertThat(responseMessage.task(), is(taskId));
assertThat(responseMessage.message(), is(messageBytes));
} finally {
if (server.get() != null) {
server.get().close();
}
}
}
} finally {
context.term();
}
}
use of org.apache.storm.messaging.IConnection in project storm by apache.
the class NettyTest method connectToFixedPort.
private void connectToFixedPort(Map<String, Object> stormConf, int port) throws Exception {
LOG.info("7. Should be able to rebind to a port quickly");
String reqMessage = "0123456789abcdefghijklmnopqrstuvwxyz";
IContext context = TransportFactory.makeContext(stormConf, null);
try {
AtomicReference<TaskMessage> response = new AtomicReference<>();
try (IConnection server = context.bind(null, port, mkConnectionCallback(response::set), null);
IConnection client = context.connect(null, "localhost", server.getPort(), remoteBpStatus)) {
waitUntilReady(client, server);
byte[] messageBytes = reqMessage.getBytes(StandardCharsets.UTF_8);
send(client, taskId, messageBytes);
waitForNotNull(response);
TaskMessage responseMessage = response.get();
assertThat(responseMessage.task(), is(taskId));
assertThat(responseMessage.message(), is(messageBytes));
}
} finally {
context.term();
}
}
use of org.apache.storm.messaging.IConnection in project storm by apache.
the class NettyTest method doTestLargeMessage.
private void doTestLargeMessage(Map<String, Object> stormConf) throws Exception {
LOG.info("3 Should send and receive a large message");
String reqMessage = StringUtils.repeat("c", 2_048_000);
IContext context = TransportFactory.makeContext(stormConf, null);
try {
AtomicReference<TaskMessage> response = new AtomicReference<>();
try (IConnection server = context.bind(null, 0, mkConnectionCallback(response::set), null);
IConnection client = context.connect(null, "localhost", server.getPort(), remoteBpStatus)) {
waitUntilReady(client, server);
byte[] messageBytes = reqMessage.getBytes(StandardCharsets.UTF_8);
send(client, taskId, messageBytes);
waitForNotNull(response);
TaskMessage responseMessage = response.get();
assertThat(responseMessage.task(), is(taskId));
assertThat(responseMessage.message(), is(messageBytes));
}
} finally {
context.term();
}
}
Aggregations