Fix snippet injection test (#8390)

This commit is contained in:
Lauri Tulmin 2023-04-28 15:55:08 +03:00 committed by GitHub
parent 90e21aaf9d
commit dbf71497d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 8 deletions

View File

@ -5,6 +5,7 @@
package io.opentelemetry.javaagent.instrumentation.servlet.v3_0;
import static io.opentelemetry.javaagent.instrumentation.servlet.v3_0.Servlet3Singletons.getSnippetInjectionHelper;
import static io.opentelemetry.javaagent.instrumentation.servlet.v3_0.Servlet3Singletons.helper;
import io.opentelemetry.context.Context;
@ -13,7 +14,6 @@ import io.opentelemetry.javaagent.bootstrap.CallDepth;
import io.opentelemetry.javaagent.bootstrap.Java8BytecodeBridge;
import io.opentelemetry.javaagent.bootstrap.http.HttpServerResponseCustomizerHolder;
import io.opentelemetry.javaagent.bootstrap.servlet.AppServerBridge;
import io.opentelemetry.javaagent.bootstrap.servlet.ExperimentalSnippetHolder;
import io.opentelemetry.javaagent.bootstrap.servlet.MappingResolver;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletRequestContext;
import io.opentelemetry.javaagent.instrumentation.servlet.v3_0.snippet.SnippetInjectingResponseWrapper;
@ -43,7 +43,7 @@ public class Servlet3Advice {
}
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String snippet = ExperimentalSnippetHolder.getSnippet();
String snippet = getSnippetInjectionHelper().getSnippet();
if (!snippet.isEmpty()
&& !((HttpServletResponse) response)
.containsHeader(SnippetInjectingResponseWrapper.FAKE_SNIPPET_HEADER)) {

View File

@ -42,7 +42,7 @@ public final class Servlet3Singletons {
ResponseInstrumenterFactory.createInstrumenter(INSTRUMENTATION_NAME);
private static final OutputStreamSnippetInjectionHelper SNIPPET_INJECTION_HELPER =
new OutputStreamSnippetInjectionHelper(ExperimentalSnippetHolder.getSnippet());
new OutputStreamSnippetInjectionHelper(() -> ExperimentalSnippetHolder.getSnippet());
public static ServletHelper<HttpServletRequest, HttpServletResponse> helper() {
return HELPER;

View File

@ -10,6 +10,7 @@ import static java.util.logging.Level.FINE;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.function.Supplier;
import java.util.logging.Logger;
public class OutputStreamSnippetInjectionHelper {
@ -17,10 +18,18 @@ public class OutputStreamSnippetInjectionHelper {
private static final Logger logger =
Logger.getLogger(OutputStreamSnippetInjectionHelper.class.getName());
private final String snippet;
private final Supplier<String> snippetSupplier;
public OutputStreamSnippetInjectionHelper(String snippet) {
this.snippet = snippet;
this(() -> snippet);
}
public OutputStreamSnippetInjectionHelper(Supplier<String> snippetSupplier) {
this.snippetSupplier = snippetSupplier;
}
public String getSnippet() {
return snippetSupplier.get();
}
/**
@ -53,7 +62,7 @@ public class OutputStreamSnippetInjectionHelper {
}
byte[] snippetBytes;
try {
snippetBytes = snippet.getBytes(state.getCharacterEncoding());
snippetBytes = snippetSupplier.get().getBytes(state.getCharacterEncoding());
} catch (UnsupportedEncodingException e) {
logger.log(FINE, "UnsupportedEncodingException", e);
return false;
@ -79,7 +88,7 @@ public class OutputStreamSnippetInjectionHelper {
}
byte[] snippetBytes;
try {
snippetBytes = snippet.getBytes(state.getCharacterEncoding());
snippetBytes = snippetSupplier.get().getBytes(state.getCharacterEncoding());
} catch (UnsupportedEncodingException e) {
logger.log(FINE, "UnsupportedEncodingException", e);
return false;

View File

@ -129,7 +129,6 @@ public class SnippetInjectingResponseWrapper extends HttpServletResponseWrapper
MethodType.methodType(void.class),
SnippetInjectingResponseWrapper.class);
} catch (NoSuchMethodException | IllegalAccessException e) {
logger.log(FINE, "SnippetInjectingResponseWrapper setContentLengthLong", e);
return null;
}
}