opentelemetry-java-instrume.../smoke-tests/src/test/groovy/io/opentelemetry/smoketest/PlaySmokeTest.groovy

52 lines
1.5 KiB
Groovy

/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.smoketest
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
import spock.lang.IgnoreIf
import java.time.Duration
import static io.opentelemetry.smoketest.TestContainerManager.useWindowsContainers
@IgnoreIf({ useWindowsContainers() })
class PlaySmokeTest extends SmokeTest {
protected String getTargetImage(String jdk) {
"ghcr.io/open-telemetry/opentelemetry-java-instrumentation/smoke-test-play:jdk$jdk-20210917.1246460868"
}
@Override
protected TargetWaitStrategy getWaitStrategy() {
return new TargetWaitStrategy.Log(Duration.ofMinutes(1), ".*Listening for HTTP.*")
}
def "play smoke test on JDK #jdk"(int jdk) {
setup:
startTarget(jdk)
when:
def response = client().get("/welcome?id=1").aggregate().join()
Collection<ExportTraceServiceRequest> traces = waitForTraces()
then:
response.contentUtf8() == "Welcome 1."
//Both play and akka-http support produce spans with the same name.
//One internal, one SERVER
countSpansByName(traces, '/welcome') == 2
new TraceInspector(traces).countFilteredAttributes(SemanticAttributes.HTTP_ROUTE.key, "/welcome") == 1
cleanup:
stopTarget()
where:
// Play doesn't support Java 16 (or 17) yet
// https://github.com/playframework/playframework/pull/10819
jdk << [8, 11, 15]
}
}