@@ -5442,6 +5442,49 @@ async def test_fetch_pull_subscribe_bind(self):
54425442
54435443 await nc .close ()
54445444
5445+ @async_test
5446+ async def test_stream_first_seq (self ):
5447+ nc = await nats .connect ()
5448+
5449+ js = nc .jetstream ()
5450+
5451+ # Create a stream with first_seq set to 1000
5452+ await js .add_stream (
5453+ name = "FIRSTSEQ" ,
5454+ subjects = ["test" ],
5455+ first_seq = 1000 ,
5456+ )
5457+
5458+ # Publish some messages
5459+ ack1 = await js .publish ("test" , b"message 1" )
5460+ assert ack1 .seq == 1000
5461+
5462+ ack2 = await js .publish ("test" , b"message 2" )
5463+ assert ack2 .seq == 1001
5464+
5465+ ack3 = await js .publish ("test" , b"message 3" )
5466+ assert ack3 .seq == 1002
5467+
5468+ # Verify stream info shows the correct first_seq in state
5469+ sinfo = await js .stream_info ("FIRSTSEQ" )
5470+ assert sinfo .state .first_seq == 1000
5471+ assert sinfo .state .last_seq == 1002
5472+ assert sinfo .state .messages == 3
5473+
5474+ # Verify the config has first_seq set
5475+ assert sinfo .config .first_seq == 1000
5476+
5477+ # Test retrieving messages by sequence (reverse order to verify seeking)
5478+ msg = await js .get_msg ("FIRSTSEQ" , seq = 1001 )
5479+ assert msg .seq == 1001
5480+ assert msg .data == b"message 2"
5481+
5482+ msg = await js .get_msg ("FIRSTSEQ" , seq = 1000 )
5483+ assert msg .seq == 1000
5484+ assert msg .data == b"message 1"
5485+
5486+ await nc .close ()
5487+
54455488
54465489class BadStreamNamesTest (SingleJetStreamServerTestCase ):
54475490 @async_test
0 commit comments