|
17 | 17 | */ |
18 | 18 | public class Shell { |
19 | 19 |
|
| 20 | + private static final String DOCKER_PREFIX = "DOCKER:"; |
| 21 | + |
20 | 22 | public static String executeSimpleCommand(String command) { |
21 | 23 | StringBuffer outputSb = new StringBuffer(); |
22 | 24 |
|
@@ -48,13 +50,13 @@ public static String capture(InputStream is) |
48 | 50 | } |
49 | 51 |
|
50 | 52 | public static void restartNode() throws IOException { |
51 | | - executeCommand(rabbitmqctlCommand() + " -n " + nodenameA() + " stop_app"); |
52 | | - executeCommand(rabbitmqctlCommand() + " -n " + nodenameA() + " start_app"); |
| 53 | + executeCommand(rabbitmqctlCommand() + rabbitmqctlNodenameArgument() + " stop_app"); |
| 54 | + executeCommand(rabbitmqctlCommand() + rabbitmqctlNodenameArgument() + " start_app"); |
53 | 55 | } |
54 | 56 |
|
55 | 57 | public static List<Binding> listBindings(boolean includeDefaults) throws IOException { |
56 | 58 | List<Binding> bindings = new ArrayList<>(); |
57 | | - Process process = executeCommand(rabbitmqctlCommand() + " -n " + nodenameA() + " list_bindings source_name destination_name routing_key --quiet"); |
| 59 | + Process process = executeCommand(rabbitmqctlCommand() + rabbitmqctlNodenameArgument() + " list_bindings source_name destination_name routing_key --quiet"); |
58 | 60 | String output = capture(process.getInputStream()); |
59 | 61 | String[] lines = output.split("\n"); |
60 | 62 | if (lines.length > 0) { |
@@ -116,8 +118,29 @@ public static String nodenameA() { |
116 | 118 | return System.getProperty("test-broker.A.nodename"); |
117 | 119 | } |
118 | 120 |
|
| 121 | + private static String rabbitmqctlNodenameArgument() { |
| 122 | + return isOnDocker() ? "" : " -n \'" + nodenameA() + "\'"; |
| 123 | + } |
| 124 | + |
| 125 | + public static boolean isOnDocker() { |
| 126 | + String rabbitmqCtl = System.getProperty("rabbitmqctl.bin"); |
| 127 | + if (rabbitmqCtl == null) { |
| 128 | + throw new IllegalStateException("Please define the rabbitmqctl.bin system property"); |
| 129 | + } |
| 130 | + return rabbitmqCtl.startsWith(DOCKER_PREFIX); |
| 131 | + } |
| 132 | + |
119 | 133 | public static String rabbitmqctlCommand() { |
120 | | - return System.getProperty("rabbitmqctl.bin"); |
| 134 | + String rabbitmqCtl = System.getProperty("rabbitmqctl.bin"); |
| 135 | + if (rabbitmqCtl == null) { |
| 136 | + throw new IllegalStateException("Please define the rabbitmqctl.bin system property"); |
| 137 | + } |
| 138 | + if (rabbitmqCtl.startsWith("DOCKER:")) { |
| 139 | + String containerId = rabbitmqCtl.split(":")[1]; |
| 140 | + return "docker exec " + containerId + " rabbitmqctl"; |
| 141 | + } else { |
| 142 | + return rabbitmqCtl; |
| 143 | + } |
121 | 144 | } |
122 | 145 |
|
123 | 146 | public static class Binding { |
|
0 commit comments