@@ -855,6 +855,46 @@ public void testHasMessageAvailableAfterSeekTimestamp(boolean initializeLastMess
855
855
}
856
856
}
857
857
858
+ @ Test
859
+ public void testHasMessageAvailableAfterSeekTimestampWithMessageIdInclusive () throws Exception {
860
+ final String topic = "persistent://my-property/my-ns/" +
861
+ "testHasMessageAvailableAfterSeekTimestampWithMessageInclusive" ;
862
+
863
+ @ Cleanup
864
+ Producer <String > producer = pulsarClient .newProducer (Schema .STRING ).topic (topic ).create ();
865
+ final long timestampBeforeSend = System .currentTimeMillis ();
866
+ final MessageId sentMsgId = producer .send ("msg" );
867
+
868
+ final List <MessageId > messageIds = new ArrayList <>();
869
+ messageIds .add (MessageId .earliest );
870
+ messageIds .add (sentMsgId );
871
+ messageIds .add (MessageId .latest );
872
+
873
+ for (MessageId messageId : messageIds ) {
874
+ @ Cleanup
875
+ Reader <String > reader = pulsarClient .newReader (Schema .STRING ).topic (topic ).receiverQueueSize (1 )
876
+ .startMessageIdInclusive ()
877
+ .startMessageId (messageId ).create ();
878
+ assertTrue (reader .hasMessageAvailable ());
879
+
880
+ reader .seek (System .currentTimeMillis ());
881
+ assertFalse (reader .hasMessageAvailable ());
882
+ Message <String > message = reader .readNext (10 , TimeUnit .SECONDS );
883
+ assertNull (message );
884
+ }
885
+
886
+ for (MessageId messageId : messageIds ) {
887
+ @ Cleanup
888
+ Reader <String > reader = pulsarClient .newReader (Schema .STRING ).topic (topic ).receiverQueueSize (1 )
889
+ .startMessageIdInclusive ()
890
+ .startMessageId (messageId ).create ();
891
+ assertTrue (reader .hasMessageAvailable ());
892
+
893
+ reader .seek (timestampBeforeSend );
894
+ assertTrue (reader .hasMessageAvailable ());
895
+ }
896
+ }
897
+
858
898
@ Test
859
899
public void testReaderBuilderStateOnRetryFailure () throws Exception {
860
900
String ns = "my-property/my-ns" ;
0 commit comments