2929import org .apache .rocketmq .common .message .MessageConst ;
3030import org .apache .rocketmq .common .message .MessageExtBrokerInner ;
3131import org .apache .rocketmq .remoting .exception .RemotingCommandException ;
32- import org .apache .rocketmq .remoting .exception .RemotingSendRequestException ;
33- import org .apache .rocketmq .remoting .exception .RemotingTimeoutException ;
3432import org .apache .rocketmq .remoting .netty .NettyClientConfig ;
3533import org .apache .rocketmq .remoting .netty .NettyServerConfig ;
3634import org .apache .rocketmq .remoting .protocol .LanguageCode ;
4644import org .apache .rocketmq .store .PutMessageResult ;
4745import org .apache .rocketmq .store .PutMessageStatus ;
4846import org .apache .rocketmq .store .config .MessageStoreConfig ;
47+ import org .apache .rocketmq .store .exception .ConsumeQueueException ;
4948import org .junit .Before ;
5049import org .junit .Test ;
5150import org .junit .runner .RunWith ;
5655import static org .apache .rocketmq .broker .processor .PullMessageProcessorTest .createConsumerData ;
5756import static org .assertj .core .api .Assertions .assertThat ;
5857import static org .mockito .ArgumentMatchers .any ;
58+ import static org .mockito .ArgumentMatchers .anyInt ;
59+ import static org .mockito .ArgumentMatchers .anyString ;
5960import static org .mockito .Mockito .mock ;
6061import static org .mockito .Mockito .when ;
6162
@@ -108,7 +109,8 @@ public void init() throws IllegalAccessException, NoSuchFieldException {
108109 }
109110
110111 @ Test
111- public void testProcessRequest_Success () throws RemotingCommandException , InterruptedException , RemotingTimeoutException , RemotingSendRequestException {
112+ public void testProcessRequest_Success () throws RemotingCommandException , ConsumeQueueException {
113+ when (messageStore .getMaxOffsetInQueue (anyString (), anyInt ())).thenReturn (2L );
112114 when (escapeBridge .asyncPutMessageToSpecificQueue (any (MessageExtBrokerInner .class ))).thenReturn (CompletableFuture .completedFuture (new PutMessageResult (PutMessageStatus .PUT_OK , new AppendMessageResult (AppendMessageStatus .PUT_OK ))));
113115 int queueId = 0 ;
114116 long queueOffset = 0 ;
@@ -133,4 +135,31 @@ public void testProcessRequest_Success() throws RemotingCommandException, Interr
133135 assertThat (responseToReturn .getCode ()).isEqualTo (ResponseCode .SUCCESS );
134136 assertThat (responseToReturn .getOpaque ()).isEqualTo (request .getOpaque ());
135137 }
138+
139+ @ Test
140+ public void testProcessRequest_NoMessage () throws RemotingCommandException , ConsumeQueueException {
141+ when (messageStore .getMaxOffsetInQueue (anyString (), anyInt ())).thenReturn (2L );
142+ int queueId = 0 ;
143+ long queueOffset = 2 ;
144+ long popTime = System .currentTimeMillis () - 1_000 ;
145+ long invisibleTime = 30_000 ;
146+ int reviveQid = 0 ;
147+ String brokerName = "test_broker" ;
148+ String extraInfo = ExtraInfoUtil .buildExtraInfo (queueOffset , popTime , invisibleTime , reviveQid ,
149+ topic , brokerName , queueId ) + MessageConst .KEY_SEPARATOR + queueOffset ;
150+
151+ ChangeInvisibleTimeRequestHeader requestHeader = new ChangeInvisibleTimeRequestHeader ();
152+ requestHeader .setTopic (topic );
153+ requestHeader .setQueueId (queueId );
154+ requestHeader .setOffset (queueOffset );
155+ requestHeader .setConsumerGroup (group );
156+ requestHeader .setExtraInfo (extraInfo );
157+ requestHeader .setInvisibleTime (invisibleTime );
158+
159+ final RemotingCommand request = RemotingCommand .createRequestCommand (RequestCode .CHANGE_MESSAGE_INVISIBLETIME , requestHeader );
160+ request .makeCustomHeaderToNet ();
161+ RemotingCommand responseToReturn = changeInvisibleTimeProcessor .processRequest (handlerContext , request );
162+ assertThat (responseToReturn .getCode ()).isEqualTo (ResponseCode .NO_MESSAGE );
163+ assertThat (responseToReturn .getOpaque ()).isEqualTo (request .getOpaque ());
164+ }
136165}
0 commit comments