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.channel.Channel;
20 import io.netty5.channel.ChannelHandlerAdapter;
21 import io.netty5.channel.socket.DatagramPacket;
22 import io.netty5.testsuite.transport.TestsuitePermutation;
23 import org.junit.jupiter.api.Test;
24 import org.junit.jupiter.api.TestInfo;
25 import org.junit.jupiter.api.condition.EnabledIf;
26
27 import java.io.FileNotFoundException;
28 import java.util.List;
29
30 import static java.nio.charset.StandardCharsets.US_ASCII;
31 import static org.junit.jupiter.api.Assertions.assertTrue;
32 import static org.junit.jupiter.api.Assertions.fail;
33
34 @EnabledIf("isSupported")
35 public class DomainDatagramPathTest extends AbstractClientSocketTest {
36
37 static boolean isSupported() {
38 return NioDomainSocketTestUtil.isDatagramSupported();
39 }
40
41 @Test
42 void testConnectPathDoesNotExist(TestInfo testInfo) throws Throwable {
43 run(testInfo, bootstrap -> {
44 try {
45 bootstrap.handler(new ChannelHandlerAdapter() { })
46 .connect(SocketTestPermutation.newDomainSocketAddress()).asStage().get();
47 fail("Expected FileNotFoundException");
48 } catch (Exception e) {
49 assertTrue(e.getCause() instanceof FileNotFoundException);
50 }
51 });
52 }
53
54 @Test
55 void testWriteReceiverPathDoesNotExist(TestInfo testInfo) throws Throwable {
56 run(testInfo, bootstrap -> {
57 try {
58 Channel ch = bootstrap.handler(new ChannelHandlerAdapter() { })
59 .bind(SocketTestPermutation.newDomainSocketAddress()).asStage().get();
60 ch.writeAndFlush(new DatagramPacket(
61 ch.bufferAllocator().copyOf("test", US_ASCII),
62 SocketTestPermutation.newDomainSocketAddress())).asStage().sync();
63 fail("Expected FileNotFoundException");
64 } catch (Exception e) {
65 assertTrue(e.getCause() instanceof FileNotFoundException);
66 }
67 });
68 }
69
70 @Override
71 protected List<TestsuitePermutation.BootstrapFactory<Bootstrap>> newFactories() {
72 return SocketTestPermutation.INSTANCE.domainDatagramSocket();
73 }
74 }