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]

Reply via email to