21
21
import io .grpc .ManagedChannel ;
22
22
import io .grpc .netty .GrpcSslContexts ;
23
23
import io .grpc .netty .NettyChannelBuilder ;
24
+ import io .netty .channel .IoHandlerFactory ;
25
+ import io .netty .channel .MultiThreadIoEventLoopGroup ;
24
26
import io .netty .channel .epoll .Epoll ;
25
27
import io .netty .channel .epoll .EpollDomainSocketChannel ;
26
- import io .netty .channel .epoll .EpollEventLoopGroup ;
28
+ import io .netty .channel .epoll .EpollIoHandler ;
27
29
import io .netty .channel .unix .DomainSocketAddress ;
28
30
import io .netty .handler .ssl .SslContextBuilder ;
29
31
import java .io .File ;
@@ -44,10 +46,12 @@ class ChannelBuilderTest {
44
46
@ EnabledOnOs (OS .LINUX )
45
47
void testNettyChannel_withSocketPath () {
46
48
try (MockedStatic <Epoll > epollMock = mockStatic (Epoll .class );
49
+ MockedStatic <EpollIoHandler > nativeMock = mockStatic (EpollIoHandler .class );
47
50
MockedStatic <NettyChannelBuilder > nettyMock = mockStatic (NettyChannelBuilder .class )) {
48
51
49
52
// Mocks
50
53
epollMock .when (Epoll ::isAvailable ).thenReturn (true );
54
+ nativeMock .when (EpollIoHandler ::newFactory ).thenReturn (mock (IoHandlerFactory .class ));
51
55
NettyChannelBuilder mockBuilder = mock (NettyChannelBuilder .class );
52
56
ManagedChannel mockChannel = mock (ManagedChannel .class );
53
57
@@ -56,7 +60,8 @@ void testNettyChannel_withSocketPath() {
56
60
.thenReturn (mockBuilder );
57
61
58
62
when (mockBuilder .keepAliveTime (anyLong (), any (TimeUnit .class ))).thenReturn (mockBuilder );
59
- when (mockBuilder .eventLoopGroup (any (EpollEventLoopGroup .class ))).thenReturn (mockBuilder );
63
+ when (mockBuilder .eventLoopGroup (any (MultiThreadIoEventLoopGroup .class )))
64
+ .thenReturn (mockBuilder );
60
65
when (mockBuilder .channelType (EpollDomainSocketChannel .class )).thenReturn (mockBuilder );
61
66
when (mockBuilder .defaultServiceConfig (any ())).thenReturn (mockBuilder );
62
67
when (mockBuilder .maxRetryAttempts (anyInt ())).thenReturn (mockBuilder );
@@ -77,7 +82,7 @@ void testNettyChannel_withSocketPath() {
77
82
assertThat (channel ).isEqualTo (mockChannel );
78
83
nettyMock .verify (() -> NettyChannelBuilder .forAddress (new DomainSocketAddress ("/path/to/socket" )));
79
84
verify (mockBuilder ).keepAliveTime (1000 , TimeUnit .MILLISECONDS );
80
- verify (mockBuilder ).eventLoopGroup (any (EpollEventLoopGroup .class ));
85
+ verify (mockBuilder ).eventLoopGroup (any (MultiThreadIoEventLoopGroup .class ));
81
86
verify (mockBuilder ).channelType (EpollDomainSocketChannel .class );
82
87
verify (mockBuilder ).usePlaintext ();
83
88
verify (mockBuilder ).build ();
@@ -88,10 +93,12 @@ void testNettyChannel_withSocketPath() {
88
93
@ EnabledOnOs (OS .LINUX )
89
94
void testNettyChannel_withSocketPath_withRetryPolicy () {
90
95
try (MockedStatic <Epoll > epollMock = mockStatic (Epoll .class );
96
+ MockedStatic <EpollIoHandler > nativeMock = mockStatic (EpollIoHandler .class );
91
97
MockedStatic <NettyChannelBuilder > nettyMock = mockStatic (NettyChannelBuilder .class )) {
92
98
93
99
// Mocks
94
100
epollMock .when (Epoll ::isAvailable ).thenReturn (true );
101
+ nativeMock .when (EpollIoHandler ::newFactory ).thenReturn (mock (IoHandlerFactory .class ));
95
102
NettyChannelBuilder mockBuilder = mock (NettyChannelBuilder .class );
96
103
ManagedChannel mockChannel = mock (ManagedChannel .class );
97
104
@@ -100,7 +107,8 @@ void testNettyChannel_withSocketPath_withRetryPolicy() {
100
107
.thenReturn (mockBuilder );
101
108
102
109
when (mockBuilder .keepAliveTime (anyLong (), any (TimeUnit .class ))).thenReturn (mockBuilder );
103
- when (mockBuilder .eventLoopGroup (any (EpollEventLoopGroup .class ))).thenReturn (mockBuilder );
110
+ when (mockBuilder .eventLoopGroup (any (MultiThreadIoEventLoopGroup .class )))
111
+ .thenReturn (mockBuilder );
104
112
when (mockBuilder .channelType (EpollDomainSocketChannel .class )).thenReturn (mockBuilder );
105
113
when (mockBuilder .defaultServiceConfig (ChannelBuilder .SERVICE_CONFIG_WITH_RETRY ))
106
114
.thenReturn (mockBuilder );
@@ -121,7 +129,7 @@ void testNettyChannel_withSocketPath_withRetryPolicy() {
121
129
assertThat (channel ).isEqualTo (mockChannel );
122
130
nettyMock .verify (() -> NettyChannelBuilder .forAddress (new DomainSocketAddress ("/path/to/socket" )));
123
131
verify (mockBuilder ).keepAliveTime (1000 , TimeUnit .MILLISECONDS );
124
- verify (mockBuilder ).eventLoopGroup (any (EpollEventLoopGroup .class ));
132
+ verify (mockBuilder ).eventLoopGroup (any (MultiThreadIoEventLoopGroup .class ));
125
133
verify (mockBuilder ).channelType (EpollDomainSocketChannel .class );
126
134
verify (mockBuilder ).defaultServiceConfig (ChannelBuilder .SERVICE_CONFIG_WITH_RETRY );
127
135
verify (mockBuilder ).usePlaintext ();
0 commit comments