2121import io .grpc .ManagedChannel ;
2222import io .grpc .netty .GrpcSslContexts ;
2323import io .grpc .netty .NettyChannelBuilder ;
24+ import io .netty .channel .IoHandlerFactory ;
25+ import io .netty .channel .MultiThreadIoEventLoopGroup ;
2426import io .netty .channel .epoll .Epoll ;
2527import io .netty .channel .epoll .EpollDomainSocketChannel ;
26- import io .netty .channel .epoll .EpollEventLoopGroup ;
28+ import io .netty .channel .epoll .EpollIoHandler ;
2729import io .netty .channel .unix .DomainSocketAddress ;
2830import io .netty .handler .ssl .SslContextBuilder ;
2931import java .io .File ;
@@ -44,10 +46,12 @@ class ChannelBuilderTest {
4446 @ EnabledOnOs (OS .LINUX )
4547 void testNettyChannel_withSocketPath () {
4648 try (MockedStatic <Epoll > epollMock = mockStatic (Epoll .class );
49+ MockedStatic <EpollIoHandler > nativeMock = mockStatic (EpollIoHandler .class );
4750 MockedStatic <NettyChannelBuilder > nettyMock = mockStatic (NettyChannelBuilder .class )) {
4851
4952 // Mocks
5053 epollMock .when (Epoll ::isAvailable ).thenReturn (true );
54+ nativeMock .when (EpollIoHandler ::newFactory ).thenReturn (mock (IoHandlerFactory .class ));
5155 NettyChannelBuilder mockBuilder = mock (NettyChannelBuilder .class );
5256 ManagedChannel mockChannel = mock (ManagedChannel .class );
5357
@@ -56,7 +60,8 @@ void testNettyChannel_withSocketPath() {
5660 .thenReturn (mockBuilder );
5761
5862 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 );
6065 when (mockBuilder .channelType (EpollDomainSocketChannel .class )).thenReturn (mockBuilder );
6166 when (mockBuilder .defaultServiceConfig (any ())).thenReturn (mockBuilder );
6267 when (mockBuilder .maxRetryAttempts (anyInt ())).thenReturn (mockBuilder );
@@ -77,7 +82,7 @@ void testNettyChannel_withSocketPath() {
7782 assertThat (channel ).isEqualTo (mockChannel );
7883 nettyMock .verify (() -> NettyChannelBuilder .forAddress (new DomainSocketAddress ("/path/to/socket" )));
7984 verify (mockBuilder ).keepAliveTime (1000 , TimeUnit .MILLISECONDS );
80- verify (mockBuilder ).eventLoopGroup (any (EpollEventLoopGroup .class ));
85+ verify (mockBuilder ).eventLoopGroup (any (MultiThreadIoEventLoopGroup .class ));
8186 verify (mockBuilder ).channelType (EpollDomainSocketChannel .class );
8287 verify (mockBuilder ).usePlaintext ();
8388 verify (mockBuilder ).build ();
@@ -88,10 +93,12 @@ void testNettyChannel_withSocketPath() {
8893 @ EnabledOnOs (OS .LINUX )
8994 void testNettyChannel_withSocketPath_withRetryPolicy () {
9095 try (MockedStatic <Epoll > epollMock = mockStatic (Epoll .class );
96+ MockedStatic <EpollIoHandler > nativeMock = mockStatic (EpollIoHandler .class );
9197 MockedStatic <NettyChannelBuilder > nettyMock = mockStatic (NettyChannelBuilder .class )) {
9298
9399 // Mocks
94100 epollMock .when (Epoll ::isAvailable ).thenReturn (true );
101+ nativeMock .when (EpollIoHandler ::newFactory ).thenReturn (mock (IoHandlerFactory .class ));
95102 NettyChannelBuilder mockBuilder = mock (NettyChannelBuilder .class );
96103 ManagedChannel mockChannel = mock (ManagedChannel .class );
97104
@@ -100,7 +107,8 @@ void testNettyChannel_withSocketPath_withRetryPolicy() {
100107 .thenReturn (mockBuilder );
101108
102109 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 );
104112 when (mockBuilder .channelType (EpollDomainSocketChannel .class )).thenReturn (mockBuilder );
105113 when (mockBuilder .defaultServiceConfig (ChannelBuilder .SERVICE_CONFIG_WITH_RETRY ))
106114 .thenReturn (mockBuilder );
@@ -121,7 +129,7 @@ void testNettyChannel_withSocketPath_withRetryPolicy() {
121129 assertThat (channel ).isEqualTo (mockChannel );
122130 nettyMock .verify (() -> NettyChannelBuilder .forAddress (new DomainSocketAddress ("/path/to/socket" )));
123131 verify (mockBuilder ).keepAliveTime (1000 , TimeUnit .MILLISECONDS );
124- verify (mockBuilder ).eventLoopGroup (any (EpollEventLoopGroup .class ));
132+ verify (mockBuilder ).eventLoopGroup (any (MultiThreadIoEventLoopGroup .class ));
125133 verify (mockBuilder ).channelType (EpollDomainSocketChannel .class );
126134 verify (mockBuilder ).defaultServiceConfig (ChannelBuilder .SERVICE_CONFIG_WITH_RETRY );
127135 verify (mockBuilder ).usePlaintext ();
0 commit comments