Skip to content

Commit 7d54ff9

Browse files
authored
Allow to create exchanges, queues, bindings in the same vhost (#5348)
1 parent 8712606 commit 7d54ff9

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

modules/rabbitmq/src/main/java/org/testcontainers/containers/RabbitMQContainer.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,25 @@ public RabbitMQContainer withBinding(String source, String destination) {
220220
return self();
221221
}
222222

223+
public RabbitMQContainer withBinding(String vhost, String source, String destination) {
224+
values.add(asList("rabbitmqadmin", "--vhost=" + vhost, "declare", "binding",
225+
"source=" + source,
226+
"destination=" + destination));
227+
return self();
228+
}
229+
223230
public RabbitMQContainer withBinding(String source, String destination, Map<String, Object> arguments, String routingKey, String destinationType) {
224231
values.add(asList("rabbitmqadmin", "declare", "binding",
232+
"source=" + source,
233+
"destination=" + destination,
234+
"routing_key=" + routingKey,
235+
"destination_type=" + destinationType,
236+
"arguments=" + toJson(arguments)));
237+
return self();
238+
}
239+
240+
public RabbitMQContainer withBinding(String vhost, String source, String destination, Map<String, Object> arguments, String routingKey, String destinationType) {
241+
values.add(asList("rabbitmqadmin", "--vhost=" + vhost, "declare", "binding",
225242
"source=" + source,
226243
"destination=" + destination,
227244
"routing_key=" + routingKey,
@@ -332,6 +349,12 @@ public RabbitMQContainer withVhostLimit(String vhost, String name, int value) {
332349

333350
public RabbitMQContainer withQueue(String name) {
334351
values.add(asList("rabbitmqadmin", "declare", "queue",
352+
"name=" + name));
353+
return self();
354+
}
355+
356+
public RabbitMQContainer withQueue(String vhost, String name) {
357+
values.add(asList("rabbitmqadmin", "--vhost=" + vhost, "declare", "queue",
335358
"name=" + name));
336359
return self();
337360
}
@@ -345,13 +368,29 @@ public RabbitMQContainer withQueue(String name, boolean autoDelete, boolean dura
345368
return self();
346369
}
347370

371+
public RabbitMQContainer withQueue(String vhost, String name, boolean autoDelete, boolean durable, Map<String, Object> arguments) {
372+
values.add(asList("rabbitmqadmin", "--vhost=" + vhost, "declare", "queue",
373+
"name=" + name,
374+
"auto_delete=" + autoDelete,
375+
"durable=" + durable,
376+
"arguments=" + toJson(arguments)));
377+
return self();
378+
}
379+
348380
public RabbitMQContainer withExchange(String name, String type) {
349381
values.add(asList("rabbitmqadmin", "declare", "exchange",
350382
"name=" + name,
351383
"type=" + type));
352384
return self();
353385
}
354386

387+
public RabbitMQContainer withExchange(String vhost, String name, String type) {
388+
values.add(asList("rabbitmqadmin", "--vhost=" + vhost, "declare", "exchange",
389+
"name=" + name,
390+
"type=" + type));
391+
return self();
392+
}
393+
355394
public RabbitMQContainer withExchange(String name, String type, boolean autoDelete, boolean internal, boolean durable, Map<String, Object> arguments) {
356395
values.add(asList("rabbitmqadmin", "declare", "exchange",
357396
"name=" + name,

modules/rabbitmq/src/test/java/org/testcontainers/containers/RabbitMQContainerTest.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,13 @@
1414
import java.io.File;
1515
import java.io.FileInputStream;
1616
import java.io.IOException;
17-
import java.io.InputStream;
1817
import java.security.KeyManagementException;
1918
import java.security.KeyStore;
2019
import java.security.KeyStoreException;
2120
import java.security.NoSuchAlgorithmException;
2221
import java.security.UnrecoverableKeyException;
2322
import java.security.cert.CertificateException;
2423
import java.util.Collections;
25-
import java.util.Objects;
26-
import java.util.Scanner;
2724

2825
import static org.assertj.core.api.Assertions.assertThat;
2926
import static org.assertj.core.api.Assertions.assertThatCode;
@@ -159,9 +156,16 @@ public void shouldStartTheWholeEnchilada() throws IOException, InterruptedExcept
159156
.withVhost("vhost2", true)
160157
.withExchange("direct-exchange", "direct")
161158
.withExchange("topic-exchange", "topic")
159+
.withExchange("vhost1", "topic-exchange-2", "topic", false, false, true, Collections.emptyMap())
160+
.withExchange("vhost2", "topic-exchange-3", "topic")
161+
.withExchange("topic-exchange-4", "topic", false, false, true, Collections.emptyMap())
162162
.withQueue("queue1")
163163
.withQueue("queue2", true, false, ImmutableMap.of("x-message-ttl", 1000))
164+
.withQueue("vhost1", "queue3", true, false, ImmutableMap.of("x-message-ttl", 1000))
165+
.withQueue("vhost2", "queue4")
164166
.withBinding("direct-exchange", "queue1")
167+
.withBinding("vhost1", "topic-exchange-2", "queue3")
168+
.withBinding("vhost2", "topic-exchange-3", "queue4", Collections.emptyMap(), "ss7", "queue")
165169
.withUser("user1", "password1")
166170
.withUser("user2", "password2", ImmutableSet.of("administrator"))
167171
.withPermission("vhost1", "user1", ".*", ".*", ".*")
@@ -175,15 +179,15 @@ public void shouldStartTheWholeEnchilada() throws IOException, InterruptedExcept
175179

176180
assertThat(container.execInContainer("rabbitmqadmin", "list", "queues")
177181
.getStdout())
178-
.contains("queue1", "queue2");
182+
.contains("queue1", "queue2", "queue3", "queue4");
179183

180184
assertThat(container.execInContainer("rabbitmqadmin", "list", "exchanges")
181185
.getStdout())
182-
.contains("direct-exchange", "topic-exchange");
186+
.contains("direct-exchange", "topic-exchange", "topic-exchange-2", "topic-exchange-3", "topic-exchange-4");
183187

184188
assertThat(container.execInContainer("rabbitmqadmin", "list", "bindings")
185189
.getStdout())
186-
.contains("direct-exchange");
190+
.contains("direct-exchange", "topic-exchange-2", "topic-exchange-3");
187191

188192
assertThat(container.execInContainer("rabbitmqadmin", "list", "users")
189193
.getStdout())

0 commit comments

Comments
 (0)