Skip to content

Commit cbd3089

Browse files
committed
fix(tests): handle connection closure and expired messages in JMS tests
1 parent af4c1b4 commit cbd3089

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

activemq-unit-tests/src/test/java/org/apache/activemq/JMSConsumerTest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,8 +495,8 @@ public void onMessage(Message m) {
495495
counter.incrementAndGet();
496496
if (counter.get() == 2) {
497497
sendDone.await();
498-
connection.close();
499498
got2Done.countDown();
499+
return; // Don't acknowledge - message stays unacked (CLIENT_ACK mode)
500500
}
501501
tm.acknowledge();
502502
} catch (Throwable e) {
@@ -511,6 +511,8 @@ public void onMessage(Message m) {
511511

512512
// Wait for first 2 messages to arrive.
513513
assertTrue(got2Done.await(100000, TimeUnit.MILLISECONDS));
514+
// Close connection from main thread (spec: Connection.close() from MessageListener throws ISE)
515+
connection.close();
514516

515517
// Re-start connection.
516518
connection = (ActiveMQConnection)factory.createConnection();
@@ -584,8 +586,9 @@ public void onMessage(Message m) {
584586
m.acknowledge();
585587
if (counter.get() == 2) {
586588
sendDone.await();
587-
connection.close();
588589
got2Done.countDown();
590+
// Don't call connection.close() from MessageListener - spec violation (throws ISE)
591+
// Main thread will close the connection after this latch
589592
}
590593
} catch (Throwable e) {
591594
e.printStackTrace();
@@ -599,6 +602,8 @@ public void onMessage(Message m) {
599602

600603
// Wait for first 2 messages to arrive.
601604
assertTrue(got2Done.await(100000, TimeUnit.MILLISECONDS));
605+
// Close connection from main thread (spec: Connection.close() from MessageListener throws ISE)
606+
connection.close();
602607

603608
// Re-start connection.
604609
connection = (ActiveMQConnection)factory.createConnection();

activemq-unit-tests/src/test/java/org/apache/activemq/JmsQueueBrowserExpirationTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,9 @@ private int browse(ActiveMQQueue queue, Connection connection) throws JMSExcepti
165165
int browsed = 0;
166166
while (enumeration.hasMoreElements()) {
167167
TextMessage m = (TextMessage) enumeration.nextElement();
168+
if (m == null) {
169+
continue; // message expired during browse
170+
}
168171
browsed++;
169172
LOG.debug("B[{}]: {}", browsed, m.getText());
170173
}

0 commit comments

Comments
 (0)