Skip to content

Commit 4014fdd

Browse files
committed
merge default into bug20154
2 parents 55577dd + 21a86da commit 4014fdd

File tree

6 files changed

+128
-11
lines changed

6 files changed

+128
-11
lines changed

src/com/rabbitmq/client/impl/LongString.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
/**
3838
* An object providing access to a LongString.
39-
* This might be implemeted to read directly from connection
39+
* This might be implemented to read directly from connection
4040
* socket, depending on the size of the content to be read -
4141
* long strings may contain up to 4Gb of content.
4242
*/

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

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131

3232
package com.rabbitmq.client.test.functional;
3333

34+
import com.rabbitmq.client.Channel;
35+
import com.rabbitmq.client.Connection;
3436
import com.rabbitmq.client.GetResponse;
3537
import com.rabbitmq.client.QueueingConsumer;
3638

@@ -53,6 +55,29 @@ public class BindingLifecycle extends PersisterRestartBase {
5355
protected static final String X = "X-" + System.currentTimeMillis();
5456
protected static final String K = "K-" + System.currentTimeMillis();
5557

58+
/**
59+
* Create a durable queue on secondary node, if possible, falling
60+
* back on the primary node if necessary.
61+
*/
62+
@Override protected void declareDurableQueue(String q)
63+
throws IOException
64+
{
65+
Connection connection;
66+
try {
67+
connection = connectionFactory.newConnection("localhost", 5673);
68+
} catch (IOException e) {
69+
super.declareDurableQueue(q);
70+
return;
71+
}
72+
73+
Channel channel = connection.createChannel();
74+
75+
channel.queueDeclare(q, true);
76+
77+
channel.abort();
78+
connection.abort();
79+
}
80+
5681
/**
5782
* Tests whether durable bindings are correctly recovered.
5883
*/
@@ -112,7 +137,7 @@ public void testDurableBindingsDeletion() throws IOException {
112137

113138

114139
/**
115-
* This tests whether the default bindings for persistent queues
140+
* This tests whether the default bindings for durable queues
116141
* are recovered properly.
117142
*
118143
* The idea is to create a durable queue, nuke the server and then
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// The contents of this file are subject to the Mozilla Public License
2+
// Version 1.1 (the "License"); you may not use this file except in
3+
// compliance with the License. You may obtain a copy of the License at
4+
// http://www.mozilla.org/MPL/
5+
//
6+
// Software distributed under the License is distributed on an "AS IS"
7+
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
8+
// License for the specific language governing rights and limitations
9+
// under the License.
10+
//
11+
// The Original Code is RabbitMQ.
12+
//
13+
// The Initial Developers of the Original Code are LShift Ltd,
14+
// Cohesive Financial Technologies LLC, and Rabbit Technologies Ltd.
15+
//
16+
// Portions created before 22-Nov-2008 00:00:00 GMT by LShift Ltd,
17+
// Cohesive Financial Technologies LLC, or Rabbit Technologies Ltd
18+
// are Copyright (C) 2007-2008 LShift Ltd, Cohesive Financial
19+
// Technologies LLC, and Rabbit Technologies Ltd.
20+
//
21+
// Portions created by LShift Ltd are Copyright (C) 2007-2009 LShift
22+
// Ltd. Portions created by Cohesive Financial Technologies LLC are
23+
// Copyright (C) 2007-2009 Cohesive Financial Technologies
24+
// LLC. Portions created by Rabbit Technologies Ltd are Copyright
25+
// (C) 2007-2009 Rabbit Technologies Ltd.
26+
//
27+
// All Rights Reserved.
28+
//
29+
// Contributor(s): ______________________________________.
30+
//
31+
32+
package com.rabbitmq.client.test.functional;
33+
34+
import com.rabbitmq.client.AMQP;
35+
import com.rabbitmq.client.ShutdownSignalException;
36+
import java.io.IOException;
37+
38+
public class DoubleDeletion extends BrokerTestCase
39+
{
40+
protected static final String Q = "DoubleDeletionQueue";
41+
protected static final String X = "DoubleDeletionExchange";
42+
43+
public void testDoubleDeletionQueue()
44+
throws IOException
45+
{
46+
channel.queueDeclare(Q);
47+
channel.queueDelete(Q);
48+
try {
49+
channel.queueDelete(Q);
50+
fail("Expected exception from double deletion of queue");
51+
} catch (IOException ee) {
52+
checkShutdownSignal(AMQP.NOT_FOUND, ee);
53+
// Pass!
54+
}
55+
}
56+
57+
public void testDoubleDeletionExchange()
58+
throws IOException
59+
{
60+
channel.exchangeDeclare(X, "direct");
61+
channel.exchangeDelete(X);
62+
try {
63+
channel.exchangeDelete(X);
64+
fail("Expected exception from double deletion of exchange");
65+
} catch (IOException ee) {
66+
checkShutdownSignal(AMQP.NOT_FOUND, ee);
67+
// Pass!
68+
}
69+
}
70+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class FunctionalTests extends TestCase {
3838
public static TestSuite suite() {
3939
TestSuite suite = new TestSuite("functional");
4040
suite.addTestSuite(Tables.class);
41+
suite.addTestSuite(DoubleDeletion.class);
4142
suite.addTestSuite(Routing.class);
4243
suite.addTestSuite(BindingLifecycle.class);
4344
suite.addTestSuite(Transactions.class);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ protected void declareDurableQueue(String q)
8989
protected void declareAndBindDurableQueue(String q, String x, String r)
9090
throws IOException
9191
{
92-
channel.queueDeclare(q, true);
92+
declareDurableQueue(q);
9393
channel.queueBind(q, x, r);
9494
}
9595

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

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -218,21 +218,42 @@ public void testHeadersRouting() throws Exception {
218218
}
219219

220220
public void testUnbind() throws Exception {
221-
AMQP.Queue.DeclareOk ok = channel.queueDeclare();
222-
String queue = ok.getQueue();
223221

224-
String routingKey = "quay";
225222
String x = "amq.direct";
223+
String q = "testUnbind";
224+
String routingKey = "quay";
226225

227-
channel.queueBind(queue, x, routingKey);
226+
AMQP.Queue.DeclareOk ok = channel.queueDeclare(q);
227+
channel.queueBind(q, x, routingKey);
228228
channel.basicPublish(x, routingKey, null, "foobar".getBytes());
229-
checkGet(queue, true);
229+
checkGet(q, true);
230+
231+
String[][] tests = new String[][] {
232+
new String[] {"unknown_queue", x, routingKey},
233+
new String[] {q, "unknown_exchange", routingKey},
234+
new String[] {"unknown_queue", "unknown_exchange", routingKey},
235+
// see bug 20633
236+
// new String[] {q, x, "unknown_rk"},
237+
new String[] {"unknown_queue", "unknown_exchange", "unknown_rk"}
238+
};
239+
240+
for (int i = 0; i < tests.length; i++) {
241+
242+
String[] test = tests[i];
243+
try {
244+
channel.queueUnbind(test[0], test[1], test[2]);
245+
fail("expected not_found in test " + i);
246+
} catch (IOException ee) {
247+
checkShutdownSignal(AMQP.NOT_FOUND, ee);
248+
openChannel();
249+
}
250+
}
230251

231-
channel.queueUnbind(queue, x, routingKey);
252+
channel.queueUnbind(q, x, routingKey);
232253

233254
channel.basicPublish(x, routingKey, null, "foobar".getBytes());
234-
checkGet(queue, false);
255+
checkGet(q, false);
235256

236-
channel.queueDelete(queue);
257+
channel.queueDelete(q);
237258
}
238259
}

0 commit comments

Comments
 (0)