Skip to content

Commit 64dec1e

Browse files
opentelemetrybothappyuser23laurit
authored
[release/v1.33.x] Convert Wicket groovy tests to java (#10818)
Co-authored-by: H <[email protected]> Co-authored-by: Lauri Tulmin <[email protected]>
1 parent 456ab3f commit 64dec1e

File tree

9 files changed

+180
-160
lines changed

9 files changed

+180
-160
lines changed

instrumentation/wicket-8.0/javaagent/build.gradle.kts

+9
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,12 @@ dependencies {
2424
testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
2525
testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
2626
}
27+
28+
val latestDepTest = findProperty("testLatestDeps") as Boolean
29+
30+
// Wicket 9 requires Java 11
31+
if (latestDepTest) {
32+
otelJava {
33+
minJavaVersionSupported.set(JavaVersion.VERSION_11)
34+
}
35+
}

instrumentation/wicket-8.0/javaagent/src/test/groovy/WicketTest.groovy

-102
This file was deleted.

instrumentation/wicket-8.0/javaagent/src/test/groovy/hello/ExceptionPage.groovy

-14
This file was deleted.

instrumentation/wicket-8.0/javaagent/src/test/groovy/hello/HelloApplication.groovy

-29
This file was deleted.

instrumentation/wicket-8.0/javaagent/src/test/groovy/hello/HelloPage.groovy

-15
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package hello;
7+
8+
import org.apache.wicket.markup.html.WebPage;
9+
10+
public class ExceptionPage extends WebPage {
11+
public ExceptionPage() throws Exception {
12+
throw new Exception("test exception");
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package hello;
7+
8+
import org.apache.wicket.Page;
9+
import org.apache.wicket.RuntimeConfigurationType;
10+
import org.apache.wicket.protocol.http.WebApplication;
11+
12+
public class HelloApplication extends WebApplication {
13+
@Override
14+
public Class<? extends Page> getHomePage() {
15+
return HelloPage.class;
16+
}
17+
18+
@Override
19+
protected void init() {
20+
super.init();
21+
22+
mountPage("/exception", ExceptionPage.class);
23+
}
24+
25+
@Override
26+
public RuntimeConfigurationType getConfigurationType() {
27+
return RuntimeConfigurationType.DEPLOYMENT;
28+
}
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package hello;
7+
8+
import org.apache.wicket.markup.html.WebPage;
9+
import org.apache.wicket.markup.html.basic.Label;
10+
11+
public class HelloPage extends WebPage {
12+
public HelloPage() {
13+
add(new Label("message", "Hello World!"));
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.wicket;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
import hello.HelloApplication;
11+
import io.opentelemetry.api.trace.SpanKind;
12+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
13+
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpServerUsingTest;
14+
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension;
15+
import io.opentelemetry.sdk.trace.data.StatusData;
16+
import io.opentelemetry.testing.internal.armeria.common.AggregatedHttpResponse;
17+
import java.util.EnumSet;
18+
import javax.servlet.DispatcherType;
19+
import javax.servlet.FilterRegistration;
20+
import org.apache.wicket.protocol.http.WicketFilter;
21+
import org.eclipse.jetty.server.Server;
22+
import org.eclipse.jetty.servlet.DefaultServlet;
23+
import org.eclipse.jetty.servlet.ServletContextHandler;
24+
import org.eclipse.jetty.util.resource.FileResource;
25+
import org.eclipse.jetty.util.resource.Resource;
26+
import org.jsoup.Jsoup;
27+
import org.jsoup.nodes.Document;
28+
import org.junit.jupiter.api.BeforeAll;
29+
import org.junit.jupiter.api.Test;
30+
import org.junit.jupiter.api.extension.RegisterExtension;
31+
32+
class WicketTest extends AbstractHttpServerUsingTest<Server> {
33+
34+
@RegisterExtension
35+
public static final InstrumentationExtension testing =
36+
HttpServerInstrumentationExtension.forAgent();
37+
38+
@Override
39+
protected Server setupServer() throws Exception {
40+
Server server = new Server(port);
41+
42+
ServletContextHandler context = new ServletContextHandler(0);
43+
context.setContextPath(getContextPath());
44+
45+
Resource resource = new FileResource(getClass().getResource("/"));
46+
context.setBaseResource(resource);
47+
server.setHandler(context);
48+
49+
context.addServlet(DefaultServlet.class, "/");
50+
FilterRegistration.Dynamic registration =
51+
context.getServletContext().addFilter("WicketApplication", WicketFilter.class);
52+
registration.setInitParameter("applicationClassName", HelloApplication.class.getName());
53+
registration.setInitParameter("filterMappingUrlPattern", "/wicket-test/*");
54+
registration.addMappingForUrlPatterns(
55+
EnumSet.of(DispatcherType.REQUEST), false, "/wicket-test/*");
56+
57+
server.start();
58+
59+
return server;
60+
}
61+
62+
@Override
63+
protected void stopServer(Server server) throws Exception {
64+
server.stop();
65+
server.destroy();
66+
}
67+
68+
@Override
69+
protected String getContextPath() {
70+
return "/jetty-context";
71+
}
72+
73+
@BeforeAll
74+
void setup() {
75+
startServer();
76+
}
77+
78+
@Test
79+
void testHello() {
80+
AggregatedHttpResponse response =
81+
client.get(address.resolve("wicket-test/").toString()).aggregate().join();
82+
Document doc = Jsoup.parse(response.contentUtf8());
83+
84+
assertThat(response.status().code()).isEqualTo(200);
85+
assertThat(doc.selectFirst("#message").text()).isEqualTo("Hello World!");
86+
87+
testing.waitAndAssertTraces(
88+
trace ->
89+
trace.hasSpansSatisfyingExactly(
90+
span ->
91+
span.hasName("GET " + getContextPath() + "/wicket-test/hello.HelloPage")
92+
.hasNoParent()
93+
.hasKind(SpanKind.SERVER)));
94+
}
95+
96+
@Test
97+
void testException() {
98+
AggregatedHttpResponse response =
99+
client.get(address.resolve("wicket-test/exception").toString()).aggregate().join();
100+
101+
assertThat(response.status().code()).isEqualTo(500);
102+
103+
testing.waitAndAssertTraces(
104+
trace ->
105+
trace.hasSpansSatisfyingExactly(
106+
span ->
107+
span.hasName("GET " + getContextPath() + "/wicket-test/hello.ExceptionPage")
108+
.hasKind(SpanKind.SERVER)
109+
.hasNoParent()
110+
.hasStatus(StatusData.error())
111+
.hasException(new Exception("test exception"))));
112+
}
113+
}

0 commit comments

Comments
 (0)