Skip to content

Commit 044b9c9

Browse files
committed
Fix testcontainers usage
1 parent f588a22 commit 044b9c9

File tree

18 files changed

+100
-77
lines changed

18 files changed

+100
-77
lines changed

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ picocli-codegen = { module = "info.picocli:picocli-codegen", version.ref = "pico
6565
picocli-shellJline = { module = "info.picocli:picocli-shell-jline3", version.ref = "picocli" }
6666
swagger-annotations = { module = "io.swagger.core.v3:swagger-annotations", version.ref = "swagger-annotations" }
6767
testcontainers = { module = "org.testcontainers:testcontainers", version.ref = "testcontainers" }
68-
testcontainers-hivemq = { module = "org.testcontainers:hivemq", version.ref = "testcontainers" }
69-
testcontainers-junitJupiter = { module = "org.testcontainers:junit-jupiter", version.ref = "testcontainers" }
68+
testcontainers-hivemq = { module = "org.testcontainers:testcontainers-hivemq", version.ref = "testcontainers" }
69+
testcontainers-junitJupiter = { module = "org.testcontainers:testcontainers-junit-jupiter", version.ref = "testcontainers" }
7070
tinylog-api = { module = "org.tinylog:tinylog-api", version.ref = "tinylog" }
7171
tinylog-impl = { module = "org.tinylog:tinylog-impl", version.ref = "tinylog" }
7272

src/integrationTest/java/com/hivemq/cli/commands/cli/TestBrokerCommandDefaultIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.testcontainers.hivemq.HiveMQContainer;
2727
import org.testcontainers.junit.jupiter.Container;
2828
import org.testcontainers.junit.jupiter.Testcontainers;
29+
import org.testcontainers.utility.MountableFile;
2930

3031
import static org.junit.jupiter.api.Assertions.assertEquals;
3132

@@ -34,7 +35,8 @@
3435
class TestBrokerCommandDefaultIT {
3536

3637
@Container
37-
private final @NotNull HiveMQContainer hivemq = new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4"));
38+
private final @NotNull HiveMQContainer hivemq = new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")) //
39+
.withHiveMQConfig(MountableFile.forClasspathResource("hivemq.configs/config.xml"));
3840

3941
@BeforeEach
4042
void setUp() {

src/integrationTest/java/com/hivemq/cli/commands/cli/TestBrokerCommandQos0IT.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,8 @@
3535
class TestBrokerCommandQos0IT {
3636

3737
@Container
38-
private final @NotNull HiveMQContainer hivemq =
39-
new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")).withHiveMQConfig(MountableFile.forClasspathResource(
40-
"mqtt/test/qos0-config.xml"));
38+
private final @NotNull HiveMQContainer hivemq = new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")) //
39+
.withHiveMQConfig(MountableFile.forClasspathResource("mqtt/test/qos0-config.xml"));
4140

4241
@BeforeEach
4342
void setUp() {

src/integrationTest/java/com/hivemq/cli/commands/cli/TestBrokerCommandQos1IT.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,8 @@
3535
class TestBrokerCommandQos1IT {
3636

3737
@Container
38-
private final @NotNull HiveMQContainer hivemq =
39-
new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")).withHiveMQConfig(MountableFile.forClasspathResource(
40-
"mqtt/test/qos1-config.xml"));
38+
private final @NotNull HiveMQContainer hivemq = new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")) //
39+
.withHiveMQConfig(MountableFile.forClasspathResource("mqtt/test/qos1-config.xml"));
4140

4241
@BeforeEach
4342
void setUp() {

src/integrationTest/java/com/hivemq/cli/commands/cli/TestBrokerCommandRestrictedIT.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,8 @@
3535
class TestBrokerCommandRestrictedIT {
3636

3737
@Container
38-
private final @NotNull HiveMQContainer hivemq =
39-
new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")).withHiveMQConfig(MountableFile.forClasspathResource(
40-
"mqtt/test/restricted-config.xml"));
38+
private final @NotNull HiveMQContainer hivemq = new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")) //
39+
.withHiveMQConfig(MountableFile.forClasspathResource("mqtt/test/restricted-config.xml"));
4140

4241
@BeforeEach
4342
void setUp() {

src/integrationTest/java/com/hivemq/cli/commands/hivemq/export/clients/ExportClientsCommandIT.java

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,15 @@
4444
import static org.junit.jupiter.api.Assertions.assertTrue;
4545

4646
@Testcontainers
47+
@SuppressWarnings("HttpUrlsUsage")
4748
class ExportClientsCommandIT {
4849

4950
public static final int HTTP_PORT = 8888;
5051

5152
@Container
52-
private final @NotNull HiveMQContainer hivemq =
53-
new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")).withHiveMQConfig(MountableFile.forClasspathResource(
54-
"hivemq.configs/rest-api-config.xml")).withExposedPorts(1883, HTTP_PORT);
53+
private final @NotNull HiveMQContainer hivemq = new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")) //
54+
.withHiveMQConfig(MountableFile.forClasspathResource("hivemq.configs/rest-api-config.xml"))
55+
.withExposedPorts(1883, HTTP_PORT);
5556

5657
private @NotNull File file;
5758

@@ -69,13 +70,11 @@ void tearDown() {
6970
@Test
7071
void client_detail_1_success() throws IOException, CsvException {
7172
final Mqtt5BlockingClient client = Mqtt5Client.builder().serverPort(hivemq.getMqttPort()).buildBlocking();
72-
7373
client.connect();
7474

7575
final CommandLine cmd = new CommandLine(new ExportClientsCommand());
7676
final int returnCode = cmd.execute("-f=" + file.getAbsolutePath(),
7777
"-url=http://" + hivemq.getHost() + ":" + hivemq.getMappedPort(HTTP_PORT));
78-
7978
assertEquals(0, returnCode);
8079

8180
final CSVReader csvReader = new CSVReader(new FileReader(file));
@@ -96,7 +95,6 @@ void client_details_25_success() throws IOException, CsvException {
9695
final CommandLine cmd = new CommandLine(new ExportClientsCommand());
9796
final int returnCode = cmd.execute("-f=" + file.getAbsolutePath(),
9897
"-url=http://" + hivemq.getHost() + ":" + hivemq.getMappedPort(HTTP_PORT));
99-
10098
assertEquals(0, returnCode);
10199

102100
final CSVReader csvReader = new CSVReader(new FileReader(file));
@@ -111,7 +109,6 @@ void client_details_25_success() throws IOException, CsvException {
111109
@Test
112110
void csv_options() throws IOException, CsvException {
113111
final Mqtt5BlockingClient client = Mqtt5Client.builder().serverPort(hivemq.getMqttPort()).buildBlocking();
114-
115112
client.connect();
116113

117114
final CommandLine cmd = new CommandLine(new ExportClientsCommand());
@@ -120,16 +117,14 @@ void csv_options() throws IOException, CsvException {
120117
"--csvSeparator=;",
121118
"--csvQuoteChar=|",
122119
"--csvEscChar=/");
123-
124120
assertEquals(0, returnCode);
125121

126122
final CSVParser parser =
127123
new CSVParserBuilder().withSeparator(';').withEscapeChar('/').withQuoteChar('|').build();
128-
129-
final CSVReader csvReader = new CSVReaderBuilder(new FileReader(file)).withCSVParser(parser).build();
130-
131-
final List<String[]> lines = csvReader.readAll();
132-
assertEquals(2, lines.size());
124+
try (final CSVReader csvReader = new CSVReaderBuilder(new FileReader(file)).withCSVParser(parser).build()) {
125+
final List<String[]> lines = csvReader.readAll();
126+
assertEquals(2, lines.size());
127+
}
133128

134129
client.disconnect();
135130
}
@@ -148,7 +143,6 @@ void rate_limit() throws IOException, CsvException {
148143
"-url=http://" + hivemq.getHost() + ":" + hivemq.getMappedPort(HTTP_PORT),
149144
"-r=5");
150145
final long stopTime = System.nanoTime();
151-
152146
assertTrue(((stopTime - startTime) / 1_000_000_000) >= 2);
153147
assertEquals(0, returnCode);
154148

@@ -164,13 +158,11 @@ void rate_limit() throws IOException, CsvException {
164158
@Test
165159
void connection_refused() {
166160
final Mqtt5BlockingClient client = Mqtt5Client.builder().serverPort(hivemq.getMqttPort()).buildBlocking();
167-
168161
client.connect();
169162

170163
final CommandLine cmd = new CommandLine(new ExportClientsCommand());
171164
final int returnCode =
172165
cmd.execute("-f=" + file.getAbsolutePath(), "-url=http://" + hivemq.getHost() + ":" + 8889);
173-
174166
assertEquals(-1, returnCode);
175167

176168
client.disconnect();

src/integrationTest/java/com/hivemq/cli/commands/swarm/commander/SwarmStatusCommandIT.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,13 @@
4343
import static org.mockito.Mockito.mock;
4444
import static org.mockito.Mockito.verify;
4545

46+
@SuppressWarnings("HttpUrlsUsage")
4647
public class SwarmStatusCommandIT {
4748

4849
private static final int REST_PORT = 8080;
4950

5051
private final @NotNull Network network = Network.newNetwork();
52+
@SuppressWarnings("resource")
5153
private final @NotNull GenericContainer<?> swarm =
5254
new GenericContainer<>(OciImages.getImageName("hivemq/hivemq-swarm")).withNetwork(network)
5355
.withNetworkAliases("swarm")
@@ -96,6 +98,7 @@ void tearDown() {
9698
@Test
9799
@Timeout(value = 3, unit = TimeUnit.MINUTES)
98100
void getCommanderStatus() {
101+
//noinspection HttpUrlsUsage
99102
final int execute =
100103
commandLine.execute("-url=http://" + swarm.getHost() + ":" + swarm.getMappedPort(REST_PORT));
101104
assertEquals(0, execute);

src/integrationTest/java/com/hivemq/cli/commands/swarm/run/SwarmRunStartCommandIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public class SwarmRunStartCommandIT {
5454
private static final int REST_PORT = 8080;
5555

5656
private final @NotNull Network network = Network.newNetwork();
57+
@SuppressWarnings("resource")
5758
private final @NotNull GenericContainer<?> swarm =
5859
new GenericContainer<>(OciImages.getImageName("hivemq/hivemq-swarm")).withNetwork(network)
5960
.withNetworkAliases("swarm")

src/integrationTest/java/com/hivemq/cli/commands/swarm/run/SwarmRunStopCommandIT.java

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,13 @@
6262
import static org.mockito.Mockito.times;
6363
import static org.mockito.Mockito.verify;
6464

65+
@SuppressWarnings("HttpUrlsUsage")
6566
public class SwarmRunStopCommandIT {
6667

6768
private static final int REST_PORT = 8080;
6869

6970
private final @NotNull Network network = Network.newNetwork();
71+
@SuppressWarnings("resource")
7072
private final @NotNull GenericContainer<?> swarm =
7173
new GenericContainer<>(OciImages.getImageName("hivemq/hivemq-swarm")).withNetwork(network)
7274
.withNetworkAliases("swarm")
@@ -145,21 +147,23 @@ void stopRun() throws Exception {
145147

146148
final Mqtt5BlockingClient client = Mqtt5Client.builder().serverPort(hivemq.getMqttPort()).buildBlocking();
147149
client.connect();
148-
final Mqtt5BlockingClient.Mqtt5Publishes publishes = client.publishes(MqttGlobalPublishFilter.ALL);
149-
client.toAsync().subscribeWith().topicFilter("#").send();
150-
151-
final UploadScenarioRequest uploadScenarioRequest =
152-
new UploadScenarioRequest().scenarioType("XML").scenario(scenarioBase64).scenarioName("my-scenario");
153-
final UploadScenarioResponse uploadScenarioResponse = scenariosApi.uploadScenario(uploadScenarioRequest);
154-
155-
final StartRunRequest startRunRequest = new StartRunRequest();
156-
final Integer scenarioId = uploadScenarioResponse.getScenarioId();
157-
assertNotNull(scenarioId);
158-
startRunRequest.setScenarioId(scenarioId.toString());
159-
runsApi.startRun(startRunRequest);
160-
161-
// the scenario is started
162-
publishes.receive();
150+
try (final Mqtt5BlockingClient.Mqtt5Publishes publishes = client.publishes(MqttGlobalPublishFilter.ALL)) {
151+
client.toAsync().subscribeWith().topicFilter("#").send();
152+
153+
final UploadScenarioRequest uploadScenarioRequest = new UploadScenarioRequest().scenarioType("XML")
154+
.scenario(scenarioBase64)
155+
.scenarioName("my-scenario");
156+
final UploadScenarioResponse uploadScenarioResponse = scenariosApi.uploadScenario(uploadScenarioRequest);
157+
158+
final StartRunRequest startRunRequest = new StartRunRequest();
159+
final Integer scenarioId = uploadScenarioResponse.getScenarioId();
160+
assertNotNull(scenarioId);
161+
startRunRequest.setScenarioId(scenarioId.toString());
162+
runsApi.startRun(startRunRequest);
163+
164+
// the scenario is started
165+
publishes.receive();
166+
}
163167

164168
// stop the scenario
165169
//TODO: not sure why here a logger reset is necessary (local machine)

src/integrationTest/java/com/hivemq/cli/mqtt/test/Mqtt3FeatureTesterDefaultIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.testcontainers.hivemq.HiveMQContainer;
3737
import org.testcontainers.junit.jupiter.Container;
3838
import org.testcontainers.junit.jupiter.Testcontainers;
39+
import org.testcontainers.utility.MountableFile;
3940

4041
import static com.hivemq.cli.mqtt.test.results.TestResult.OK;
4142
import static com.hivemq.client.mqtt.mqtt3.message.connect.connack.Mqtt3ConnAckReturnCode.SUCCESS;
@@ -48,7 +49,8 @@
4849
class Mqtt3FeatureTesterDefaultIT {
4950

5051
@Container
51-
private final @NotNull HiveMQContainer hivemq = new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4"));
52+
private final @NotNull HiveMQContainer hivemq = new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")) //
53+
.withHiveMQConfig(MountableFile.forClasspathResource("hivemq.configs/config.xml"));
5254

5355
private @NotNull Mqtt3FeatureTester mqtt3FeatureTester;
5456

0 commit comments

Comments
 (0)