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