@@ -1329,50 +1329,129 @@ private void assertMessageInfo(TestingStreamContainer tsc, int subj, long seq, M
13291329 assertNull (mi .getHeaders ().getFirst (NATS_LAST_SEQUENCE ));
13301330 }
13311331
1332- @ SuppressWarnings ("deprecation" )
13331332 @ Test
1334- public void testMessageGetRequest () {
1335- validateMessageGetRequest (1 , null , null , false , MessageGetRequest .forSequence (1 ));
1336- validateMessageGetRequest (-1 , "last" , null , false , MessageGetRequest .lastForSubject ("last" ));
1337- validateMessageGetRequest (-1 , null , "first" , false , MessageGetRequest .firstForSubject ("first" ));
1338- validateMessageGetRequest (1 , null , "first" , false , MessageGetRequest .nextForSubject (1 , "first" ));
1339-
1340- // coverage for deprecated methods
1341- MessageGetRequest .seqBytes (1 );
1342- MessageGetRequest .lastBySubjectBytes (SUBJECT );
1343- new MessageGetRequest (1 );
1344- new MessageGetRequest (SUBJECT );
1345-
1346- // coverage for MessageInfo, has error
1347- String json = dataAsString ("GenericErrorResponse.json" );
1348- NatsMessage m = new NatsMessage ("sub" , null , json .getBytes (StandardCharsets .US_ASCII ));
1349- MessageInfo mi = new MessageInfo (m );
1350- assertTrue (mi .hasError ());
1351- assertEquals (-1 , mi .getLastSeq ());
1352- assertFalse (mi .toString ().contains ("last_seq" ));
1333+ public void testMessageGetRequestObject () {
1334+ ZonedDateTime zdt = ZonedDateTime .now ();
1335+ validateMessageGetRequestObject (1 , null , null , null , MessageGetRequest .forSequence (1 ));
1336+ validateMessageGetRequestObject (-1 , "last" , null , null , MessageGetRequest .lastForSubject ("last" ));
1337+ validateMessageGetRequestObject (-1 , null , "first" , null , MessageGetRequest .firstForSubject ("first" ));
1338+ validateMessageGetRequestObject (1 , null , "first" , null , MessageGetRequest .nextForSubject (1 , "first" ));
1339+ validateMessageGetRequestObject (-1 , null , null , zdt , MessageGetRequest .firstForStartTime (zdt ));
1340+ validateMessageGetRequestObject (-1 , null , "first" , zdt , MessageGetRequest .firstForStartTimeAndSubject (zdt , "first" ));
13531341
13541342 // coverage for MessageInfo
1355- m = new NatsMessage ("sub" , null , new Headers ()
1343+ Message m = new NatsMessage ("sub" , null , new Headers ()
13561344 .put (NATS_SUBJECT , "sub" )
13571345 .put (NATS_SEQUENCE , "1" )
13581346 .put (NATS_LAST_SEQUENCE , "1" )
13591347 .put (NATS_TIMESTAMP , DateTimeUtils .toRfc3339 (ZonedDateTime .now ())),
13601348 null );
1361- mi = new MessageInfo (m , "stream" , true );
1349+ MessageInfo mi = new MessageInfo (m , "stream" , true );
13621350 assertEquals (1 , mi .getLastSeq ());
13631351 assertTrue (mi .toString ().contains ("last_seq" ));
13641352 assertNotNull (mi .toString ());
13651353 }
13661354
1367- private void validateMessageGetRequest (
1368- long seq , String lastBySubject , String nextBySubject , boolean noHeaders , MessageGetRequest mgr ) {
1355+ private void validateMessageGetRequestObject (
1356+ long seq , String lastBySubject , String nextBySubject , ZonedDateTime zdt , MessageGetRequest mgr ) {
13691357 assertEquals (seq , mgr .getSequence ());
13701358 assertEquals (lastBySubject , mgr .getLastBySubject ());
13711359 assertEquals (nextBySubject , mgr .getNextBySubject ());
13721360 assertEquals (seq > 0 && nextBySubject == null , mgr .isSequenceOnly ());
13731361 assertEquals (lastBySubject != null , mgr .isLastBySubject ());
13741362 assertEquals (nextBySubject != null , mgr .isNextBySubject ());
1375- assertEquals (noHeaders , mgr .isNoHeaders ());
1363+ assertEquals (zdt , mgr .getStartTime ());
1364+
1365+ assertFalse (mgr .isNoHeaders ());
1366+ mgr .noHeaders ();
1367+ assertTrue (mgr .isNoHeaders ());
1368+ }
1369+
1370+ @ Test
1371+ public void testMessageGetRequestObjectDeprecatedMethods () {
1372+ // coverage for deprecated methods
1373+ MessageGetRequest .seqBytes (1 );
1374+ MessageGetRequest .lastBySubjectBytes (SUBJECT );
1375+ new MessageGetRequest (1 );
1376+ new MessageGetRequest (SUBJECT );
1377+
1378+ // coverage for MessageInfo, has error
1379+ String json = dataAsString ("GenericErrorResponse.json" );
1380+ NatsMessage m = new NatsMessage ("sub" , null , json .getBytes (StandardCharsets .US_ASCII ));
1381+ MessageInfo mi = new MessageInfo (m );
1382+ assertTrue (mi .hasError ());
1383+ assertEquals (-1 , mi .getLastSeq ());
1384+ assertFalse (mi .toString ().contains ("last_seq" ));
1385+ }
1386+
1387+ @ Test
1388+ public void testMessageGetRequestNoHeaders () throws Exception {
1389+ jsServer .run (TestBase ::atLeast2_12 , nc -> {
1390+ JetStreamManagement jsm = nc .jetStreamManagement ();
1391+ JetStream js = nc .jetStream ();
1392+
1393+ String stream = stream ();
1394+ String subject = subject ();
1395+ StreamConfiguration sc = StreamConfiguration .builder ()
1396+ .name (stream )
1397+ .storageType (StorageType .Memory )
1398+ .subjects (subject )
1399+ .allowDirect (true )
1400+ .build ();
1401+
1402+ jsm .addStream (sc );
1403+
1404+ Headers h = new Headers ();
1405+ h .put ("foo" , "one" );
1406+ js .publish (subject , h , "data1" .getBytes ());
1407+ h .put ("foo" , "two" );
1408+ js .publish (subject , h , "data22" .getBytes ());
1409+
1410+ MessageGetRequest mgr = MessageGetRequest .firstForSubject (subject );
1411+ MessageInfo mi = jsm .getMessage (stream , mgr );
1412+ assertEquals (stream , mi .getStream ());
1413+ assertEquals (subject , mi .getSubject ());
1414+ assertEquals (1 , mi .getSeq ());
1415+ assertNotNull (mi .getTime ());
1416+ assertNotNull (mi .getData ());
1417+ assertEquals (5 , mi .getData ().length );
1418+ assertNotNull (mi .getHeaders ());
1419+ assertEquals (1 , mi .getHeaders ().size ());
1420+ assertEquals ("one" , mi .getHeaders ().getFirst ("foo" ));
1421+
1422+ mgr .noHeaders ();
1423+ mi = jsm .getMessage (stream , mgr );
1424+ assertEquals (stream , mi .getStream ());
1425+ assertNull (mi .getSubject ());
1426+ assertEquals (-1 , mi .getSeq ());
1427+ assertNull (mi .getTime ());
1428+ assertNotNull (mi .getData ());
1429+ assertEquals (5 , mi .getData ().length );
1430+ assertNotNull (mi .getHeaders ());
1431+ assertTrue (mi .getHeaders () == null || mi .getHeaders ().isEmpty ());
1432+
1433+ mgr = MessageGetRequest .lastForSubject (subject );
1434+ mi = jsm .getMessage (stream , mgr );
1435+ assertEquals (stream , mi .getStream ());
1436+ assertEquals (subject , mi .getSubject ());
1437+ assertEquals (2 , mi .getSeq ());
1438+ assertNotNull (mi .getTime ());
1439+ assertNotNull (mi .getData ());
1440+ assertEquals (6 , mi .getData ().length );
1441+ assertNotNull (mi .getHeaders ());
1442+ assertEquals (1 , mi .getHeaders ().size ());
1443+ assertEquals ("two" , mi .getHeaders ().getFirst ("foo" ));
1444+
1445+ mgr .noHeaders ();
1446+ mi = jsm .getMessage (stream , mgr );
1447+ assertEquals (stream , mi .getStream ());
1448+ assertNull (mi .getSubject ());
1449+ assertEquals (-1 , mi .getSeq ());
1450+ assertNull (mi .getTime ());
1451+ assertNotNull (mi .getData ());
1452+ assertEquals (6 , mi .getData ().length );
1453+ assertTrue (mi .getHeaders () == null || mi .getHeaders ().isEmpty ());
1454+ });
13761455 }
13771456
13781457 @ Test
0 commit comments