Skip to content

Commit bccf90d

Browse files
committed
move test apps + deploy on wildfly
1 parent 2029c99 commit bccf90d

File tree

12 files changed

+109
-27
lines changed

12 files changed

+109
-27
lines changed

jmx-scraper/build.gradle.kts

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,6 @@ testing {
4343
}
4444
}
4545

46-
sourceSets {
47-
create("testApp") {
48-
}
49-
}
50-
5146
tasks {
5247
shadowJar {
5348
mergeServiceFiles()
@@ -65,9 +60,16 @@ tasks {
6560

6661
withType<Test>().configureEach {
6762
dependsOn(shadowJar)
68-
dependsOn(named("appJar"))
6963
systemProperty("shadow.jar.path", shadowJar.get().archiveFile.get().asFile.absolutePath)
70-
systemProperty("app.jar.path", named<Jar>("appJar").get().archiveFile.get().asFile.absolutePath)
64+
65+
val testAppTask = project("test-app").tasks.named<Jar>("jar")
66+
dependsOn(testAppTask)
67+
systemProperty("app.jar.path", testAppTask.get().archiveFile.get().asFile.absolutePath)
68+
69+
val testWarTask = project("test-webapp").tasks.named<Jar>("war")
70+
dependsOn(testWarTask)
71+
systemProperty("app.war.path", testWarTask.get().archiveFile.get().asFile.absolutePath)
72+
7173
systemProperty("gradle.project.version", "${project.version}")
7274
}
7375

@@ -79,14 +81,6 @@ tasks {
7981
}
8082
}
8183

82-
tasks.register<Jar>("appJar") {
83-
from(sourceSets.get("testApp").output)
84-
archiveClassifier.set("app")
85-
manifest {
86-
attributes["Main-Class"] = "io.opentelemetry.contrib.jmxscraper.TestApp"
87-
}
88-
}
89-
9084
// Don't publish non-shadowed jar (shadowJar is in shadowRuntimeElements)
9185
with(components["java"] as AdhocComponentWithVariants) {
9286
configurations.forEach {

jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/JmxScraperContainer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public class JmxScraperContainer extends GenericContainer<JmxScraperContainer> {
3030
private String password;
3131
private final List<String> extraJars;
3232

33-
public JmxScraperContainer(String otlpEndpoint) {
34-
super("openjdk:8u342-jre-slim");
33+
public JmxScraperContainer(String otlpEndpoint, String baseImage) {
34+
super(baseImage);
3535

3636
String scraperJarPath = System.getProperty("shadow.jar.path");
3737
assertThat(scraperJarPath).isNotNull();

jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/TestAppContainer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ public TestAppContainer() {
3838

3939
this.withCopyFileToContainer(MountableFile.forHostPath(appJar), "/app.jar")
4040
.waitingFor(
41-
Wait.forLogMessage("app started\\n", 1)
42-
.withStartupTimeout(Duration.ofSeconds(5)))
41+
Wait.forLogMessage("app started\\n", 1).withStartupTimeout(Duration.ofSeconds(5)))
4342
.withCommand("java", "-jar", "/app.jar");
4443
}
4544

jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/TargetSystemIntegrationTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ void afterEach() {
9797
}
9898
}
9999

100+
protected String scraperBaseImage() {
101+
return "openjdk:8u342-jre-slim";
102+
}
103+
100104
@Test
101105
void endToEndTest() {
102106

@@ -108,7 +112,7 @@ void endToEndTest() {
108112
target.start();
109113

110114
scraper =
111-
new JmxScraperContainer(otlpEndpoint)
115+
new JmxScraperContainer(otlpEndpoint, scraperBaseImage())
112116
.withLogConsumer(new Slf4jLogConsumer(jmxScraperLogger))
113117
.withNetwork(network)
114118
.withRmiServiceUrl(TARGET_SYSTEM_NETWORK_ALIAS, JMX_PORT);

jmx-scraper/src/integrationTest/java/io/opentelemetry/contrib/jmxscraper/target_systems/WildflyIntegrationTest.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77

88
import static io.opentelemetry.contrib.jmxscraper.target_systems.MetricAssertions.assertSum;
99
import static io.opentelemetry.contrib.jmxscraper.target_systems.MetricAssertions.assertSumWithAttributes;
10+
import static org.assertj.core.api.Assertions.assertThat;
1011
import static org.assertj.core.api.Assertions.entry;
1112

1213
import io.opentelemetry.contrib.jmxscraper.JmxScraperContainer;
1314
import java.io.IOException;
1415
import java.nio.file.Files;
1516
import java.nio.file.Path;
17+
import java.nio.file.Paths;
1618
import java.time.Duration;
1719
import org.junit.jupiter.api.AfterAll;
1820
import org.testcontainers.containers.GenericContainer;
@@ -36,23 +38,36 @@ public static void cleanup() throws IOException {
3638
protected GenericContainer<?> createTargetContainer(int jmxPort) {
3739
// JMX port is ignored here as we are using HTTP management interface
3840

41+
String appWar = System.getProperty("app.war.path");
42+
Path appWarPath = Paths.get(appWar);
43+
assertThat(appWarPath).isNotEmptyFile().isReadable();
44+
3945
return new GenericContainer<>(
4046
new ImageFromDockerfile()
4147
.withDockerfileFromBuilder(
4248
builder ->
4349
builder
44-
.from("jboss/wildfly:23.0.1.Final")
50+
.from("quay.io/wildfly/wildfly:32.0.1.Final-jdk11")
4551
// user/pwd needed for remote JMX access
4652
.run("/opt/jboss/wildfly/bin/add-user.sh user password --silent")
4753
// standalone with management (HTTP) interface enabled
4854
.cmd(
4955
"/opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0")
5056
.expose(8080, 9990)
5157
.build()))
58+
.withCopyFileToContainer(
59+
MountableFile.forHostPath(appWarPath),
60+
"/opt/jboss/wildfly/standalone/deployments/testapp.war")
5261
.withStartupTimeout(Duration.ofMinutes(2))
5362
.waitingFor(Wait.forLogMessage(".*Http management interface listening on.*", 1));
5463
}
5564

65+
@Override
66+
protected String scraperBaseImage() {
67+
// we need to run the scraper with Java 11+ because jboss client jar is using Java 11
68+
return "eclipse-temurin:11.0.25_9-jdk-noble";
69+
}
70+
5671
@Override
5772
protected JmxScraperContainer customizeScraperContainer(
5873
JmxScraperContainer scraper, GenericContainer<?> target) {
@@ -159,7 +174,6 @@ protected void verifyMetrics() {
159174
"{transaction}",
160175
attrs -> attrs.containsOnly(entry("cause", "system")),
161176
attrs -> attrs.containsOnly(entry("cause", "resource")),
162-
attrs -> attrs.containsOnly(entry("cause", "application")))
163-
);
177+
attrs -> attrs.containsOnly(entry("cause", "application"))));
164178
}
165179
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
plugins {
2+
application
3+
}
4+
5+
description = "JMX metrics scraper - test application"
6+
7+
tasks {
8+
jar {
9+
manifest {
10+
attributes["Main-Class"] = "io.opentelemetry.contrib.jmxscraper.testapp.TestApp"
11+
}
12+
}
13+
}

jmx-scraper/src/testApp/java/io/opentelemetry/contrib/jmxscraper/TestApp.java renamed to jmx-scraper/test-app/src/main/java/io/opentelemetry/contrib/jmxscraper/testapp/TestApp.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.contrib.jmxscraper;
6+
package io.opentelemetry.contrib.jmxscraper.testapp;
77

88
import java.lang.management.ManagementFactory;
99
import javax.management.MBeanServer;
1010
import javax.management.ObjectName;
1111

1212
@SuppressWarnings("all") // for busy wait + stdout
13-
public class TestApp implements TestAppMXBean {
13+
public class TestApp implements TestAppMxBean {
1414

1515
private volatile boolean running;
1616

jmx-scraper/src/testApp/java/io/opentelemetry/contrib/jmxscraper/TestAppMXBean.java renamed to jmx-scraper/test-app/src/main/java/io/opentelemetry/contrib/jmxscraper/testapp/TestAppMxBean.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package io.opentelemetry.contrib.jmxscraper;
6+
package io.opentelemetry.contrib.jmxscraper.testapp;
77

8+
import javax.management.MXBean;
9+
10+
@MXBean
811
@SuppressWarnings("unused")
9-
public interface TestAppMXBean {
12+
public interface TestAppMxBean {
1013

1114
int getIntValue();
1215

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
plugins {
2+
war
3+
}
4+
5+
description = "JMX metrics scraper - test web application"
6+
7+
dependencies {
8+
providedCompile("jakarta.servlet:jakarta.servlet-api:5.0.0")
9+
}
10+
11+
java {
12+
toolchain {
13+
languageVersion = JavaLanguageVersion.of(11)
14+
}
15+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.contrib.jmxscraper.testwebapp;
7+
8+
import jakarta.servlet.http.HttpServlet;
9+
import jakarta.servlet.http.HttpServletRequest;
10+
import jakarta.servlet.http.HttpServletResponse;
11+
import java.io.IOException;
12+
import java.io.PrintWriter;
13+
14+
public class SimpleServlet extends HttpServlet {
15+
16+
private static final long serialVersionUID = 3726145372238690099L;
17+
18+
@Override
19+
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
20+
try (PrintWriter out = resp.getWriter()) {
21+
out.write("hello!");
22+
}
23+
}
24+
}

0 commit comments

Comments
 (0)