Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/modules/activemq.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ With anonymous login:
[Allow anonymous login](../../modules/activemq/src/test/java/org/testcontainers/activemq/ArtemisContainerTest.java) inside_block:enableAnonymousLogin
<!--/codeinclude-->

Running an Artemis CLI command:

<!--codeinclude-->
[Executing a CLI command](../../modules/activemq/src/test/java/org/testcontainers/activemq/ArtemisContainerTest.java) inside_block:execInArtemis
<!--/codeinclude-->

## Adding this module to your project dependencies

Add the following dependency to your `pom.xml`/`build.gradle` file:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package org.testcontainers.activemq;

import lombok.SneakyThrows;
import org.testcontainers.containers.Container.ExecResult;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.utility.DockerImageName;

import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
* Testcontainers implementation for Apache ActiveMQ Artemis.
Expand Down Expand Up @@ -43,6 +48,8 @@ public class ArtemisContainer extends GenericContainer<ArtemisContainer> {

private static final int WS_PORT = 61614;

private static final String ARTEMIS_CLI = "/var/lib/artemis-instance/bin/artemis";

private String username = "artemis";

private String password = "artemis";
Expand Down Expand Up @@ -86,4 +93,24 @@ public String getUser() {
public String getPassword() {
return getEnvMap().get("ARTEMIS_PASSWORD");
}

/**
* Executes an Artemis CLI command, prepending the binary path and injecting credentials unless already supplied.
*
* @param command the CLI arguments (e.g. {@code "queue", "create", "--name=myqueue"}).
* @return the result of the command execution.
*/
@SneakyThrows
public ExecResult execInArtemis(String... command) {
List<String> fullCommand = new ArrayList<>();
fullCommand.add(ARTEMIS_CLI);
fullCommand.addAll(Arrays.asList(command));
if (Arrays.stream(command).noneMatch(arg -> arg.startsWith("--user"))) {
fullCommand.add("--user=" + getUser());
}
if (Arrays.stream(command).noneMatch(arg -> arg.startsWith("--password"))) {
fullCommand.add("--password=" + getPassword());
}
return execInContainer(fullCommand.toArray(new String[0]));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.testcontainers.containers.Container.ExecResult;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -62,6 +63,27 @@ void allowAnonymousLogin() {
}
}

@Test
@SneakyThrows
void execInArtemis() {
try (ArtemisContainer artemis = new ArtemisContainer("apache/activemq-artemis:2.32.0-alpine")) {
artemis.start();

// execInArtemis {
artemis.execInArtemis(
"queue",
"create",
"--name=exec-test-queue",
"--auto-create-address",
"--anycast",
"--silent"
);
ExecResult stat = artemis.execInArtemis("queue", "stat", "--queueName=exec-test-queue");
assertThat(stat.getStdout()).contains("exec-test-queue");
// }
}
}

@ParameterizedTest
@ValueSource(strings = { "apache/activemq-artemis:2.32.0-alpine", "apache/artemis:2.53.0-alpine" })
void compatibility(String image) {
Expand Down