Skip to content

Commit 83f8bcd

Browse files
jmx-metrics: thoroughly wait for cassandra and kafka test containers (#219)
1 parent ba515bf commit 83f8bcd

File tree

5 files changed

+20
-51
lines changed

5 files changed

+20
-51
lines changed

jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/AbstractIntegrationTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,19 @@ void beforeEach() {
112112
otlpServer.reset();
113113
}
114114

115+
protected static GenericContainer<?> cassandraContainer() {
116+
return new GenericContainer<>("cassandra:3.11")
117+
.withNetwork(Network.SHARED)
118+
.withEnv("LOCAL_JMX", "no")
119+
.withCopyFileToContainer(
120+
MountableFile.forClasspathResource("cassandra/jmxremote.password", 0400),
121+
"/etc/cassandra/jmxremote.password")
122+
.withNetworkAliases("cassandra")
123+
.withExposedPorts(7199)
124+
.withStartupTimeout(Duration.ofMinutes(2))
125+
.waitingFor(Wait.forLogMessage(".*Startup complete.*", 1));
126+
}
127+
115128
@SafeVarargs
116129
protected final void waitAndAssertMetrics(Consumer<Metric>... assertions) {
117130
await()

jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/OtlpIntegrationTest.java

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,16 @@
99

1010
import io.opentelemetry.proto.common.v1.AnyValue;
1111
import io.opentelemetry.proto.common.v1.KeyValue;
12-
import java.time.Duration;
1312
import org.junit.jupiter.api.Test;
1413
import org.testcontainers.containers.GenericContainer;
15-
import org.testcontainers.containers.Network;
16-
import org.testcontainers.containers.wait.strategy.Wait;
1714
import org.testcontainers.junit.jupiter.Container;
18-
import org.testcontainers.utility.MountableFile;
1915

2016
abstract class OtlpIntegrationTest extends AbstractIntegrationTest {
2117
OtlpIntegrationTest(boolean configFromStdin) {
2218
super(configFromStdin, "otlp_config.properties");
2319
}
2420

25-
@Container
26-
GenericContainer<?> cassandra =
27-
new GenericContainer<>("cassandra:3.11")
28-
.withNetwork(Network.SHARED)
29-
.withEnv("LOCAL_JMX", "no")
30-
.withCopyFileToContainer(
31-
MountableFile.forClasspathResource("cassandra/jmxremote.password", 0400),
32-
"/etc/cassandra/jmxremote.password")
33-
.withNetworkAliases("cassandra")
34-
.withExposedPorts(7199)
35-
.withStartupTimeout(Duration.ofMinutes(2))
36-
.waitingFor(Wait.forListeningPort());
21+
@Container GenericContainer<?> cassandra = cassandraContainer();
3722

3823
@Test
3924
void endToEnd() {

jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/target_systems/CassandraIntegrationTest.java

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,36 +8,21 @@
88
import static org.assertj.core.api.Assertions.entry;
99

1010
import io.opentelemetry.contrib.jmxmetrics.AbstractIntegrationTest;
11-
import java.time.Duration;
1211
import java.util.Arrays;
1312
import java.util.List;
1413
import java.util.function.Consumer;
1514
import org.assertj.core.api.MapAssert;
1615
import org.junit.jupiter.api.Test;
1716
import org.testcontainers.containers.GenericContainer;
18-
import org.testcontainers.containers.Network;
19-
import org.testcontainers.containers.wait.strategy.Wait;
2017
import org.testcontainers.junit.jupiter.Container;
21-
import org.testcontainers.utility.MountableFile;
2218

2319
class CassandraIntegrationTest extends AbstractIntegrationTest {
2420

2521
CassandraIntegrationTest() {
2622
super(/* configFromStdin= */ false, "target-systems/cassandra.properties");
2723
}
2824

29-
@Container
30-
GenericContainer<?> cassandra =
31-
new GenericContainer<>("cassandra:3.11")
32-
.withNetwork(Network.SHARED)
33-
.withEnv("LOCAL_JMX", "no")
34-
.withCopyFileToContainer(
35-
MountableFile.forClasspathResource("cassandra/jmxremote.password", 0400),
36-
"/etc/cassandra/jmxremote.password")
37-
.withNetworkAliases("cassandra")
38-
.withExposedPorts(7199)
39-
.withStartupTimeout(Duration.ofMinutes(2))
40-
.waitingFor(Wait.forListeningPort());
25+
@Container GenericContainer<?> cassandra = cassandraContainer();
4126

4227
@Test
4328
void endToEnd() {

jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/target_systems/JvmTargetSystemIntegrationTest.java

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,19 @@
66
package io.opentelemetry.contrib.jmxmetrics.target_systems;
77

88
import io.opentelemetry.contrib.jmxmetrics.AbstractIntegrationTest;
9-
import java.time.Duration;
109
import java.util.Arrays;
1110
import java.util.List;
1211
import org.junit.jupiter.api.Test;
1312
import org.testcontainers.containers.GenericContainer;
14-
import org.testcontainers.containers.Network;
15-
import org.testcontainers.containers.wait.strategy.Wait;
1613
import org.testcontainers.junit.jupiter.Container;
17-
import org.testcontainers.utility.MountableFile;
1814

1915
class JvmTargetSystemIntegrationTest extends AbstractIntegrationTest {
2016

2117
JvmTargetSystemIntegrationTest() {
2218
super(/* configFromStdin= */ false, "target-systems/jvm.properties");
2319
}
2420

25-
@Container
26-
GenericContainer<?> cassandra =
27-
new GenericContainer<>("cassandra:3.11")
28-
.withNetwork(Network.SHARED)
29-
.withEnv("LOCAL_JMX", "no")
30-
.withCopyFileToContainer(
31-
MountableFile.forClasspathResource("cassandra/jmxremote.password", 0400),
32-
"/etc/cassandra/jmxremote.password")
33-
.withNetworkAliases("cassandra")
34-
.withExposedPorts(7199)
35-
.withStartupTimeout(Duration.ofMinutes(2))
36-
.waitingFor(Wait.forListeningPort());
21+
@Container GenericContainer<?> cassandra = cassandraContainer();
3722

3823
@Test
3924
void endToEnd() {

jmx-metrics/src/integrationTest/java/io/opentelemetry/contrib/jmxmetrics/target_systems/KafkaIntegrationTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ protected KafkaIntegrationTest(String configName) {
5050
.withNetworkAliases("kafka")
5151
.withExposedPorts(7199)
5252
.withStartupTimeout(Duration.ofMinutes(2))
53-
.waitingFor(Wait.forListeningPort())
53+
.waitingFor(
54+
Wait.forLogMessage(".*KafkaServer.*started \\(kafka.server.KafkaServer\\).*", 1))
5455
.dependsOn(zookeeper);
5556

5657
Startable createTopics =
@@ -200,7 +201,7 @@ static class KafkaConsumerIntegrationTest extends KafkaIntegrationTest {
200201
"--max-messages",
201202
"100")
202203
.withStartupTimeout(Duration.ofMinutes(2))
203-
.waitingFor(Wait.forListeningPort())
204+
.waitingFor(Wait.forLogMessage(".*Welcome to the Bitnami kafka container.*", 1))
204205
.dependsOn(createTopics);
205206

206207
@Test
@@ -281,7 +282,7 @@ static class KafkaProducerIntegrationTest extends KafkaIntegrationTest {
281282
.withCommand("kafka-producer.sh")
282283
.withStartupTimeout(Duration.ofMinutes(2))
283284
.withLogConsumer(new Slf4jLogConsumer(LoggerFactory.getLogger("kafka-producer")))
284-
.waitingFor(Wait.forListeningPort())
285+
.waitingFor(Wait.forLogMessage(".*Welcome to the Bitnami kafka container.*", 1))
285286
.dependsOn(createTopics);
286287

287288
@Test

0 commit comments

Comments
 (0)