Skip to content

Commit d98e68c

Browse files
author
Matthias Radestock
committed
test fairness
1 parent ac4a528 commit d98e68c

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

test/src/com/rabbitmq/client/test/functional/QosTests.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,35 @@ public void testPermutations()
119119
}
120120
}
121121

122+
public void testFairness()
123+
throws IOException, InterruptedException
124+
{
125+
QueueingConsumer c = new QueueingConsumer(channel);
126+
final int queueCount = 3;
127+
final int messageCount = 10;
128+
List<String> queues = configure(c, 1, queueCount, messageCount);
129+
130+
for (int i = 0; i < messageCount - 1; i++) {
131+
drain(c, 1);
132+
ack(c, false);
133+
}
134+
135+
//Perfect fairness would result in every queue having
136+
//messageCount * (1 - 1 / queueCount) messages left. Perfect
137+
//unfairness would result in one queue having no messages
138+
//left and the other queues having messageCount messages left.
139+
//
140+
//We simply check that every queue has had *some* message(s)
141+
//consumed from it. That ensures that no queue is "left
142+
//behind" - a notion of fairness somewhat short of perfect but
143+
//probably good enough.
144+
for (String q : queues) {
145+
AMQP.Queue.DeclareOk ok = channel.queueDeclare(q, true, false, true, true, null);
146+
assertTrue(ok.getMessageCount() < messageCount);
147+
}
148+
149+
}
150+
122151
protected void runLimitTests(int limit,
123152
boolean multiAck,
124153
boolean txMode,

0 commit comments

Comments
 (0)