ibessonov commented on code in PR #1780:
URL: https://github.com/apache/ignite-3/pull/1780#discussion_r1141700076
##########
modules/network/src/integrationTest/java/org/apache/ignite/internal/network/netty/ItConnectionManagerTest.java:
##########
@@ -302,57 +311,56 @@ public void testStopTwice() throws Exception {
@Test
public void testOneConnectionType() throws Exception {
- int size = 10000000;
- char[] chars = new char[size];
- Arrays.fill(chars, 'a');
- String bigText = new String(chars);
+ String bigText = IgniteTestUtils.randomString(new Random(), 10000000);
+ try (ConnectionManagerWrapper server1 = startManager(4000);
+ ConnectionManagerWrapper server2 = startManager(4001)) {
+ NettySender sender = server1.openChannelTo(server2).get(3,
TimeUnit.SECONDS);
- ConnectionManagerWrapper server1 = startManager(4000);
- ConnectionManagerWrapper server2 = startManager(4001);
+ TestMessage bigMessage =
messageFactory.testMessage().msg(bigText).build();
+ TestMessage msg = messageFactory.testMessage().msg("test").build();
- NettySender sender = server1.openChannelTo(server2,
ChannelType.DEFAULT).get(3, TimeUnit.SECONDS);
+ CompletableFuture<Void> send1 = sender.send(new
OutNetworkObject(bigMessage, Collections.emptyList()));
+ CompletableFuture<Void> send2 = sender.send(new
OutNetworkObject(msg, Collections.emptyList()));
-
- TestMessage bigMessage =
messageFactory.testMessage().msg(bigText).build();
- TestMessage msg = messageFactory.testMessage().msg("test").build();
-
- CompletableFuture<Void> send1 = sender.send(new
OutNetworkObject(bigMessage, Collections.emptyList()));
- CompletableFuture<Void> send2 = sender.send(new OutNetworkObject(msg,
Collections.emptyList()));
-
- assertThat(send2, willCompleteSuccessfully());
- assertThat(send1.isDone(), is(true));
-
- server1.close();
- server2.close();
+ assertThat(send2, willCompleteSuccessfully());
+ assertTrue(send1.isDone());
+ }
}
@Test
public void testTwoConnectionTypes() throws Exception {
- int size = 1000000000;
- char[] chars = new char[size];
- Arrays.fill(chars, 'a');
- String bigText = new String(chars);
-
+ String bigText = IgniteTestUtils.randomString(new Random(), 100000000);
- ConnectionManagerWrapper server1 = startManager(4000);
- ConnectionManagerWrapper server2 = startManager(4001);
+ Map<Integer, String> map = Map.of(1, bigText, 2, bigText);
- NettySender sender1 = server1.openChannelTo(server2,
ChannelType.DEFAULT).get(3, TimeUnit.SECONDS);
- NettySender sender2 = server1.openChannelTo(server2,
ChannelType.TEST).get(3, TimeUnit.SECONDS);
+ try (ConnectionManagerWrapper server1 = startManager(4000);
+ ConnectionManagerWrapper server2 = startManager(4001)) {
+ NettySender sender1 = server1.openChannelTo(server2).get(3,
TimeUnit.SECONDS);
+ NettySender sender2 = server1.openChannelTo(server2,
testChannel).get(3, TimeUnit.SECONDS);
- TestMessage bigMessage =
messageFactory.testMessage().msg(bigText).build();
- TestMessage msg = messageFactory.testMessage().msg("test").build();
+ TestMessage bigMessage =
messageFactory.testMessage().msg(bigText).map(map).build();
- CompletableFuture<Void> send1 = sender1.send(new
OutNetworkObject(bigMessage, Collections.emptyList()));
- CompletableFuture<Void> send2 = sender2.send(new OutNetworkObject(msg,
Collections.emptyList()));
+ CompletableFuture<Void> send1 = sender1.send(new
OutNetworkObject(bigMessage, Collections.emptyList()));
+ CompletableFuture.runAsync(() -> {
+ for (int i = 0; i < 100; i++) {
+ sender2.send(new
OutNetworkObject(messageFactory.emptyMessage().build(),
Collections.emptyList()));
+ }
+ });
- assertThat(send2, willCompleteSuccessfully());
- assertThat(send1.isDone(), is(false));
+ AtomicBoolean atLeastOneSmallWas = new AtomicBoolean(false);
+ server2.connectionManager.addListener(inNetworkObject -> {
+ System.out.println(inNetworkObject.message().groupType());
+ if (inNetworkObject.message().groupType() ==
EmptyMessageImpl.GROUP_TYPE
+ && inNetworkObject.message().messageType() ==
EmptyMessageImpl.TYPE) {
+ atLeastOneSmallWas.set(true);
+ }
+ });
- server1.close();
- server2.close();
+ assertThat(send1, willCompleteSuccessfully());
+ assertTrue(atLeastOneSmallWas.get());
Review Comment:
I don't understand these assertions. We check that by the time we received
big message, at least one small message is received as well?
I think you could also add an assertion that by the time one of the small
messages is received, big message is still sending.
Anyway, all of this still feels luck-based, was it really the only way to
write the test? If there are no other options, I guess I'll approve it, but
generally - I don't like this approach.
Another question - why have you decided to put these tests into
"integrationTest" directory? Aren't these supposed to be unit tests?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]