1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.testsuite.transport.socket;
17
18 import io.netty.bootstrap.Bootstrap;
19 import io.netty.channel.ChannelHandlerContext;
20 import io.netty.channel.ChannelInboundHandlerAdapter;
21 import io.netty.channel.socket.SocketChannel;
22 import org.junit.jupiter.api.Test;
23 import org.junit.jupiter.api.TestInfo;
24 import org.junit.jupiter.api.Timeout;
25
26 import java.util.concurrent.TimeUnit;
27
28 import static io.netty.testsuite.transport.TestsuitePermutation.randomBufferType;
29
30 public class WriteBeforeRegisteredTest extends AbstractClientSocketTest {
31
32 @Test
33 @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)
34 public void testWriteBeforeConnect(TestInfo testInfo) throws Throwable {
35 run(testInfo, new Runner<Bootstrap>() {
36 @Override
37 public void run(Bootstrap bootstrap) throws Throwable {
38 testWriteBeforeConnect(bootstrap);
39 }
40 });
41 }
42
43 public void testWriteBeforeConnect(Bootstrap cb) throws Throwable {
44 TestHandler h = new TestHandler();
45 SocketChannel ch = null;
46 try {
47 ch = (SocketChannel) cb.handler(h).connect(newSocketAddress()).channel();
48 ch.writeAndFlush(randomBufferType(ch.alloc(), new byte[] { 1 }, 0, 1));
49 } finally {
50 if (ch != null) {
51 ch.close();
52 }
53 }
54 }
55
56 private static class TestHandler extends ChannelInboundHandlerAdapter {
57 @Override
58 public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
59 cause.printStackTrace();
60 }
61 }
62 }