1818import static com .rabbitmq .perf .TestUtils .randomName ;
1919import static com .rabbitmq .perf .TestUtils .threadFactory ;
2020import static com .rabbitmq .perf .TestUtils .waitAtMost ;
21+ import static com .rabbitmq .perf .it .Host .listQueues ;
2122import static com .rabbitmq .perf .it .Utils .latchCompletionHandler ;
2223import static java .lang .String .format ;
2324import static java .util .Arrays .asList ;
25+ import static java .util .Collections .singletonList ;
2426import static java .util .stream .Collectors .toList ;
2527import static java .util .stream .IntStream .range ;
2628import static org .assertj .core .api .Assertions .assertThat ;
3840import java .util .Arrays ;
3941import java .util .Collections ;
4042import java .util .List ;
43+ import java .util .Queue ;
44+ import java .util .concurrent .ConcurrentLinkedQueue ;
4145import java .util .concurrent .CountDownLatch ;
4246import java .util .concurrent .ExecutorService ;
4347import java .util .concurrent .Executors ;
@@ -66,11 +70,12 @@ public class ConnectionRecoveryIT {
6670
6771 static final String URI = "amqp://localhost" ;
6872
69- static final List <String > URIS = Collections . singletonList (URI );
73+ static final List <String > URIS = singletonList (URI );
7074
7175 static final int RATE = 11 ;
7276
7377 MulticastParams params ;
78+ Queue <String > consumerQueues = new ConcurrentLinkedQueue <>();
7479
7580 ExecutorService executorService ;
7681
@@ -219,6 +224,7 @@ public void init(TestInfo info) {
219224 params .setProducerCount (1 );
220225 params .setConsumerCount (1 );
221226 params .setProducerRateLimit (RATE );
227+ params .setConsumerConfiguredQueueListener (consumerQueues ::addAll );
222228 cf = new ConnectionFactory ();
223229 cf .setNetworkRecoveryInterval (2000 );
224230 cf .setTopologyRecoveryEnabled (false );
@@ -410,12 +416,11 @@ public void shouldRecoverWithPreDeclared(boolean polling, TestInfo info) throws
410416
411417 @ Test
412418 void durableServerNamedQueueShouldBeReusedIfStillThere (TestInfo info ) throws Exception {
413- params .setFlags (Arrays . asList ("persistent" ));
419+ params .setFlags (singletonList ("persistent" ));
414420 params .setAutoDelete (false );
415421 params .setExclusive (false );
416422 params .setQueueNames (Collections .emptyList ());
417423
418- List <String > queuesBeforeTest = Host .listServerNamedQueues ();
419424 MulticastSet .CompletionHandler completionHandler = latchCompletionHandler (1 , info );
420425 String createdQueue = null ;
421426 try {
@@ -424,15 +429,12 @@ void durableServerNamedQueueShouldBeReusedIfStillThere(TestInfo info) throws Exc
424429 new MulticastSet (performanceMetrics , cf , params , "" , URIS , completionHandler );
425430 run (set );
426431 waitAtMost (10 , () -> msgConsumed .get () >= 3 * producerConsumerCount * RATE );
427- List <String > queuesDuringTest = Host .listServerNamedQueues ();
428- assertThat (queuesDuringTest ).hasSize (queuesBeforeTest .size () + 1 );
429- queuesDuringTest .removeAll (queuesBeforeTest );
430- assertThat (queuesDuringTest ).hasSize (1 );
431- createdQueue = queuesDuringTest .get (0 );
432+ assertThat (consumerQueues ).hasSize (1 );
433+ createdQueue = consumerQueues .poll ();
432434 long messageCountBeforeClosing = msgConsumed .get ();
433435 closeAllConnections ();
434436 waitAtMost (10 , () -> msgConsumed .get () >= 2 * messageCountBeforeClosing );
435- assertThat (Host . listServerNamedQueues ()).hasSize ( queuesBeforeTest . size () + 1 );
437+ assertThat (listQueues ()).contains ( createdQueue );
436438 completionHandler .countDown ("stopped in test" );
437439 waitAtMost (10 , () -> testIsDone .get ());
438440 } finally {
@@ -454,7 +456,7 @@ void recreateBindingEvenOnPreDeclaredDurableQueue(TestInfo info) throws Exceptio
454456 ch .exchangeDelete ("direct" );
455457 }
456458
457- params .setQueueNames (Collections . singletonList (queue ));
459+ params .setQueueNames (singletonList (queue ));
458460 params .setPredeclared (true );
459461
460462 int producerConsumerCount = params .getProducerCount ();
0 commit comments