Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,14 @@

@DisabledIf("io.opentelemetry.smoketest.TestContainerManager#useWindowsContainers")
class AgentDebugLoggingTest extends JavaSmokeTest {
@Override
protected String getTargetImage(String jdk) {
return "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-spring-boot:jdk"
+ jdk
+ "-20250915.17728045097";
}

@Override
protected TargetWaitStrategy getWaitStrategy() {
return new TargetWaitStrategy.Log(
Duration.ofMinutes(1), ".*DEBUG io.opentelemetry.javaagent.tooling.VersionLogger.*");
public AgentDebugLoggingTest() {
super(
SmokeTestTarget.springBoot("20250915.17728045097")
.waitStrategy(
new TargetWaitStrategy.Log(
Duration.ofMinutes(1),
".*DEBUG io.opentelemetry.javaagent.tooling.VersionLogger.*")));
}

@DisplayName("verifies that debug logging is working by checking for a debug log on startup")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,36 +12,19 @@
import io.opentelemetry.semconv.incubating.HostIncubatingAttributes;
import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes;
import io.opentelemetry.semconv.incubating.TelemetryIncubatingAttributes;
import java.time.Duration;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.condition.DisabledIf;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

@DisabledIf("io.opentelemetry.smoketest.TestContainerManager#useWindowsContainers")
class DeclarativeConfigurationSmokeTest extends JavaSmokeTest {
@Override
protected String getTargetImage(String jdk) {
return "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-spring-boot:jdk"
+ jdk
+ "-20241021.11448062567";
}

@Override
protected List<ResourceMapping> getExtraResources() {
return List.of(ResourceMapping.of("declarative-config.yaml", "/declarative-config.yaml"));
}

@Override
protected Map<String, String> getExtraEnv() {
return Map.of("OTEL_EXPERIMENTAL_CONFIG_FILE", "declarative-config.yaml");
}

@Override
protected TargetWaitStrategy getWaitStrategy() {
return new TargetWaitStrategy.Log(
Duration.ofMinutes(1), ".*Started SpringbootApplication in.*");
public DeclarativeConfigurationSmokeTest() {
super(
SmokeTestTarget.springBoot("20241021.11448062567")
.env("OTEL_EXPERIMENTAL_CONFIG_FILE", "declarative-config.yaml")
.extraResources(
ResourceMapping.of("declarative-config.yaml", "/declarative-config.yaml")));
}

@ParameterizedTest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,13 @@

package io.opentelemetry.smoketest;

import static java.util.Collections.emptyList;
import static java.util.Collections.emptyMap;
import static java.util.stream.Collectors.toSet;
import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension;
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
import io.opentelemetry.smoketest.windows.WindowsTestContainerManager;
import io.opentelemetry.testing.internal.armeria.client.WebClient;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.regex.Pattern;
Expand All @@ -33,43 +29,25 @@ public abstract class JavaSmokeTest implements TelemetryRetrieverProvider {
private static final Pattern TRACE_ID_PATTERN =
Pattern.compile(".*trace_id=(?<traceId>[a-zA-Z0-9]+).*");
protected static final TestContainerManager containerManager = createContainerManager();

private final SmokeTestTarget target;
private static TelemetryRetriever telemetryRetriever;

protected String agentPath =
System.getProperty("io.opentelemetry.smoketest.agent.shadowJar.path");

@RegisterExtension static final AutoCleanupExtension autoCleanup = AutoCleanupExtension.create();

protected WebClient client() {
return WebClient.of("h1c://localhost:" + containerManager.getTargetMappedPort(8080));
}

/** Subclasses can override this method to pass jvm arguments in another environment variable */
protected String getJvmArgsEnvVarName() {
return "JAVA_TOOL_OPTIONS";
}

/** Subclasses can override this method to customise target application's environment */
protected Map<String, String> getExtraEnv() {
return emptyMap();
}

/** Subclasses can override this method to disable setting default service name */
protected boolean getSetServiceName() {
return true;
public JavaSmokeTest(SmokeTestTarget.Builder builder) {
this.target = customize(builder).build();
}

/** Subclasses can override this method to provide additional files to copy to target container */
protected List<ResourceMapping> getExtraResources() {
return emptyList();
protected SmokeTestTarget.Builder customize(SmokeTestTarget.Builder builder) {
return builder;
}

/**
* Subclasses can override this method to provide additional ports that should be exposed from the
* target container
*/
protected List<Integer> getExtraPorts() {
return emptyList();
public WebClient client() {
return WebClient.of("h1c://localhost:" + containerManager.getTargetMappedPort(8080));
}

@BeforeAll
Expand All @@ -83,33 +61,19 @@ protected Consumer<OutputFrame> startTarget(int jdk) {
}

protected Consumer<OutputFrame> startTarget(String jdk, String serverVersion, boolean windows) {
String targetImage = getTargetImage(jdk, serverVersion, windows);
String targetImage = target.getTargetImage(jdk, serverVersion, windows);
autoCleanup.deferCleanup(() -> containerManager.stopTarget());

return containerManager.startTarget(
targetImage,
agentPath,
getJvmArgsEnvVarName(),
getExtraEnv(),
getSetServiceName(),
getExtraResources(),
getExtraPorts(),
getWaitStrategy(),
getCommand());
}

protected abstract String getTargetImage(String jdk);

protected String getTargetImage(String jdk, String serverVersion, boolean windows) {
return getTargetImage(jdk);
}

protected TargetWaitStrategy getWaitStrategy() {
return null;
}

protected String[] getCommand() {
return null;
target.getJvmArgsEnvVarName(),
target.getExtraEnv(),
target.getSetServiceName(),
target.getExtraResources(),
target.getExtraPorts(),
target.getWaitStrategy(),
target.getCommand());
}

protected static void assertVersionLogged(Consumer<OutputFrame> output, String version) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,16 @@
import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.sdk.logs.data.LogRecordData;
import java.time.Duration;
import java.util.Collection;
import org.junit.jupiter.api.condition.DisabledIf;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

@DisabledIf("io.opentelemetry.smoketest.TestContainerManager#useWindowsContainers")
class LogsSmokeTest extends JavaSmokeTest {
@Override
protected String getTargetImage(String jdk) {
return "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-spring-boot:jdk"
+ jdk
+ "-20211213.1570880324";
}

@Override
protected TargetWaitStrategy getWaitStrategy() {
return new TargetWaitStrategy.Log(
Duration.ofMinutes(1), ".*Started SpringbootApplication in.*");
public LogsSmokeTest() {
super(SmokeTestTarget.springBoot("20211213.1570880324"));
}

@ParameterizedTest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,16 @@

@DisabledIf("io.opentelemetry.smoketest.TestContainerManager#useWindowsContainers")
class QuarkusSmokeTest extends JavaSmokeTest {
@Override
protected String getTargetImage(String jdk) {
return "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-quarkus:jdk"
+ jdk
+ "-20250915.17728045126";
}

@Override
protected TargetWaitStrategy getWaitStrategy() {
return new TargetWaitStrategy.Log(Duration.ofMinutes(1), ".*Listening on.*");
}

@Override
protected boolean getSetServiceName() {
return false;
public QuarkusSmokeTest() {
super(
SmokeTestTarget.builder(
jdk ->
"ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-quarkus:jdk"
+ jdk
+ "-20250915.17728045126")
.waitStrategy(new TargetWaitStrategy.Log(Duration.ofMinutes(1), ".*Listening on.*"))
.setServiceName(false));
}

@ParameterizedTest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;

import java.util.Map;
import java.util.function.Consumer;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
Expand All @@ -18,16 +17,9 @@

@DisabledIf("io.opentelemetry.smoketest.TestContainerManager#useWindowsContainers")
class SdkDisabledSmokeTest extends JavaSmokeTest {
@Override
protected String getTargetImage(String jdk) {
return "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-spring-boot:jdk"
+ jdk
+ "-20211213.1570880324";
}

@Override
protected Map<String, String> getExtraEnv() {
return Map.of("OTEL_SDK_DISABLED", "true");
public SdkDisabledSmokeTest() {
super(SmokeTestTarget.springBoot("20211213.1570880324").env("OTEL_SDK_DISABLED", "true"));
}

@ParameterizedTest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,21 @@

package io.opentelemetry.smoketest;

import java.util.Collections;
import java.util.Map;
import org.junit.jupiter.api.condition.DisabledIf;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

@DisabledIf("io.opentelemetry.smoketest.TestContainerManager#useWindowsContainers")
class SecurityManagerSmokeTest extends JavaSmokeTest {

@Override
protected String getTargetImage(String jdk) {
return "ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-security-manager:jdk"
+ jdk
+ "-20250915.17728045123";
}

@Override
protected Map<String, String> getExtraEnv() {
return Collections.singletonMap(
"OTEL_JAVAAGENT_EXPERIMENTAL_SECURITY_MANAGER_SUPPORT_ENABLED", "true");
public SecurityManagerSmokeTest() {
super(
SmokeTestTarget.builder(
jdk ->
"ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-security-manager:jdk"
+ jdk
+ "-20250915.17728045123")
.env("OTEL_JAVAAGENT_EXPERIMENTAL_SECURITY_MANAGER_SUPPORT_ENABLED", "true"));
}

@ParameterizedTest
Expand Down
Loading