Add smoke test for logs signal (#5108)

* add smoke test for logs signal

* very important to remove the unused variable in the groovy test

* run on LTS jdks
This commit is contained in:
jason plumb 2022-01-13 11:47:47 -08:00 committed by GitHub
parent 6eeb6ccfd0
commit 7266aefb58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,58 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.smoketest
import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest
import java.time.Duration
import spock.lang.IgnoreIf
import static io.opentelemetry.smoketest.TestContainerManager.useWindowsContainers
import static java.util.stream.Collectors.toList
@IgnoreIf({ useWindowsContainers() })
class LogsSmokeTest extends SmokeTest {
protected String getTargetImage(String jdk) {
"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_LOGS_EXPORTER", "otlp")
}
@Override
protected TargetWaitStrategy getWaitStrategy() {
return new TargetWaitStrategy.Log(Duration.ofMinutes(1), ".*Started SpringbootApplication in.*")
}
def "Should export logs"(int jdk) {
setup:
startTarget(jdk)
when:
client().get("/greeting").aggregate().join()
Collection<ExportLogsServiceRequest> logs = waitForLogs()
then:
logs.size() > 0
def logRecords = logs.stream()
.flatMap(log -> log.getResourceLogsList().stream())
.flatMap(log -> log.getInstrumentationLibraryLogsList().stream())
.flatMap(log -> log.getLogsList().stream())
.collect(toList())
logRecords.size() >= logs.size()
cleanup:
stopTarget()
where:
jdk << [8, 11, 17]
}
}

View File

@ -5,6 +5,7 @@
package io.opentelemetry.smoketest
import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest
import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest
import io.opentelemetry.proto.common.v1.AnyValue
@ -121,6 +122,10 @@ abstract class SmokeTest extends Specification {
return telemetryRetriever.waitForMetrics()
}
protected Collection<ExportLogsServiceRequest> waitForLogs() {
return telemetryRetriever.waitForLogs()
}
protected static Set<String> getLoggedTraceIds(ToStringConsumer output) {
output.toUtf8String().lines()
.flatMap(SmokeTest.&findTraceId)

View File

@ -8,6 +8,7 @@ package io.opentelemetry.smoketest
import com.fasterxml.jackson.databind.ObjectMapper
import com.google.protobuf.GeneratedMessageV3
import com.google.protobuf.util.JsonFormat
import io.opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest
import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest
import io.opentelemetry.testing.internal.armeria.client.WebClient
@ -37,6 +38,10 @@ class TelemetryRetriever {
return waitForTelemetry("get-metrics", { ExportMetricsServiceRequest.newBuilder() })
}
Collection<ExportLogsServiceRequest> waitForLogs() {
return waitForTelemetry("get-logs", { ExportLogsServiceRequest.newBuilder() })
}
private <T extends GeneratedMessageV3, B extends GeneratedMessageV3.Builder> Collection<T> waitForTelemetry(String path, Supplier<B> builderConstructor) {
def content = waitForContent(path)