32
32
package com .rabbitmq .client .test .functional ;
33
33
34
34
import java .io .IOException ;
35
- import java .util .Arrays ;
36
35
import java .util .ArrayList ;
36
+ import java .util .Arrays ;
37
37
import java .util .LinkedList ;
38
38
import java .util .List ;
39
39
import java .util .Queue ;
40
40
41
+ import com .rabbitmq .client .AMQP ;
41
42
import com .rabbitmq .client .Channel ;
42
43
import com .rabbitmq .client .GetResponse ;
43
44
import com .rabbitmq .client .QueueingConsumer ;
44
45
import com .rabbitmq .client .QueueingConsumer .Delivery ;
45
- import com .rabbitmq .client .ShutdownSignalException ;
46
-
47
- import com .rabbitmq .client .AMQP ;
48
46
49
47
public class QosTests extends BrokerTestCase
50
48
{
@@ -124,7 +122,7 @@ public void testMessageLimitUnlimited()
124
122
drain (c , 2 );
125
123
}
126
124
127
- public void testNoAckUnlimited ()
125
+ public void testNoAckNoAlterLimit ()
128
126
throws IOException
129
127
{
130
128
QueueingConsumer c = new QueueingConsumer (channel );
@@ -134,6 +132,29 @@ public void testNoAckUnlimited()
134
132
drain (c , 2 );
135
133
}
136
134
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
+
137
158
public void testPermutations ()
138
159
throws IOException
139
160
{
0 commit comments