3232package com .rabbitmq .client .test .functional ;
3333
3434import java .io .IOException ;
35- import java .util .Arrays ;
3635import java .util .ArrayList ;
36+ import java .util .Arrays ;
3737import java .util .LinkedList ;
3838import java .util .List ;
3939import java .util .Queue ;
4040
41+ import com .rabbitmq .client .AMQP ;
4142import com .rabbitmq .client .Channel ;
4243import com .rabbitmq .client .GetResponse ;
4344import com .rabbitmq .client .QueueingConsumer ;
4445import com .rabbitmq .client .QueueingConsumer .Delivery ;
45- import com .rabbitmq .client .ShutdownSignalException ;
46-
47- import com .rabbitmq .client .AMQP ;
4846
4947public class QosTests extends BrokerTestCase
5048{
@@ -124,7 +122,7 @@ public void testMessageLimitUnlimited()
124122 drain (c , 2 );
125123 }
126124
127- public void testNoAckUnlimited ()
125+ public void testNoAckNoAlterLimit ()
128126 throws IOException
129127 {
130128 QueueingConsumer c = new QueueingConsumer (channel );
@@ -134,6 +132,29 @@ public void testNoAckUnlimited()
134132 drain (c , 2 );
135133 }
136134
135+ public void testNoAckObeysLimit ()
136+ throws IOException
137+ {
138+ channel .basicQos (1 );
139+ QueueingConsumer c1 = new QueueingConsumer (channel );
140+ declareBindConsume (channel , c1 , false );
141+ fill (1 );
142+ QueueingConsumer c2 = new QueueingConsumer (channel );
143+ declareBindConsume (channel , c2 , true );
144+ fill (1 );
145+ try {
146+ Delivery d = c2 .nextDelivery (1000 );
147+ assertNull (d );
148+ } catch (InterruptedException ie ) {
149+ fail ("interrupted" );
150+ }
151+ Queue <Delivery > d = drain (c1 , 1 );
152+ ack (d , false ); // must ack before the next one appears
153+ d = drain (c1 , 1 );
154+ ack (d , false );
155+ drain (c2 , 1 );
156+ }
157+
137158 public void testPermutations ()
138159 throws IOException
139160 {
0 commit comments