Make auto-instr work with latest otel-java snapshot (#372)
* Make auto-instr work with latest otel-java snapshot * Add CircleCI workflow to run nightly test job against otel-java snapshot * Decrease snapshot versions cache time * Add comments suggest during review * Add comments suggest during review * Add missed helper class * Use released otel-java 0.4.0 Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
This commit is contained in:
parent
28eaeb9fed
commit
c9cf7ffb61
|
@ -351,3 +351,13 @@ workflows:
|
|||
ignore: /.*/
|
||||
tags:
|
||||
only: /^v.*/
|
||||
nightly_snapshot:
|
||||
triggers:
|
||||
- schedule:
|
||||
cron: "0 0 * * *"
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- depends-on-otel-java-snapshot
|
||||
jobs:
|
||||
- test_8
|
||||
|
|
|
@ -69,7 +69,7 @@ public class TracerInstaller {
|
|||
if (spanExporterFactory != null) {
|
||||
final SpanExporter spanExporter = spanExporterFactory.fromConfig(config);
|
||||
OpenTelemetrySdk.getTracerProvider()
|
||||
.addSpanProcessor(SimpleSpansProcessor.newBuilder(spanExporter).build());
|
||||
.addSpanProcessor(SimpleSpansProcessor.create(spanExporter));
|
||||
log.info("Installed span exporter: " + spanExporter.getClass().getName());
|
||||
} else {
|
||||
log.warn("No matching providers in jar " + exporterJar);
|
||||
|
|
|
@ -57,6 +57,11 @@ public class LoggingExporter implements SpanExporter {
|
|||
return ResultCode.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultCode flush() {
|
||||
return ResultCode.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdown() {}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
def groovyVer = "2.5.11"
|
||||
def spockGroovyVer = groovyVer.replaceAll(/\.\d+$/, '')
|
||||
|
||||
// this is only needed for the working against unreleased otel-java snapshots
|
||||
configurations.all {
|
||||
resolutionStrategy.cacheChangingModulesFor 12, 'hours'
|
||||
}
|
||||
|
||||
ext {
|
||||
versions = [
|
||||
opentelemetry: '0.3.0',
|
||||
opentelemetry: '0.4.0',
|
||||
|
||||
slf4j : "1.7.30",
|
||||
guava : "20.0", // Last version to support Java 7
|
||||
|
@ -21,18 +26,19 @@ ext {
|
|||
|
||||
deps = [
|
||||
// OpenTelemetry
|
||||
opentelemetryApi : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-api', version: versions.opentelemetry),
|
||||
opentelemetrySdk : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk', version: versions.opentelemetry),
|
||||
opentelemetrySdkAutoConfig: dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk-contrib-auto-config', version: versions.opentelemetry),
|
||||
opentelemetryJaeger : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-jaeger', version: versions.opentelemetry),
|
||||
opentelemetryOtlp : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-otlp', version: versions.opentelemetry),
|
||||
opentelemetryApi : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-api', version: versions.opentelemetry),
|
||||
opentelemetryApiAutoAnnotations: dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-contrib-auto-annotations', version: versions.opentelemetry),
|
||||
opentelemetrySdk : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk', version: versions.opentelemetry),
|
||||
opentelemetrySdkAutoConfig : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-sdk-contrib-auto-config', version: versions.opentelemetry),
|
||||
opentelemetryJaeger : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-jaeger', version: versions.opentelemetry),
|
||||
opentelemetryOtlp : dependencies.create(group: 'io.opentelemetry', name: 'opentelemetry-exporters-otlp', version: versions.opentelemetry),
|
||||
|
||||
// General
|
||||
slf4j : "org.slf4j:slf4j-api:${versions.slf4j}",
|
||||
guava : "com.google.guava:guava:$versions.guava",
|
||||
bytebuddy : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy', version: "${versions.bytebuddy}"),
|
||||
bytebuddyagent : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy-agent', version: "${versions.bytebuddy}"),
|
||||
autoservice : [
|
||||
slf4j : "org.slf4j:slf4j-api:${versions.slf4j}",
|
||||
guava : "com.google.guava:guava:$versions.guava",
|
||||
bytebuddy : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy', version: "${versions.bytebuddy}"),
|
||||
bytebuddyagent : dependencies.create(group: 'net.bytebuddy', name: 'byte-buddy-agent', version: "${versions.bytebuddy}"),
|
||||
autoservice : [
|
||||
dependencies.create(group: 'com.google.auto.service', name: 'auto-service', version: '1.0-rc3'),
|
||||
dependencies.create(group: 'com.google.auto', name: 'auto-common', version: '0.8'),
|
||||
// These are the last versions that support guava 20.0. Upgrading has odd interactions with shadow.
|
||||
|
@ -41,23 +47,23 @@ ext {
|
|||
|
||||
// Testing
|
||||
|
||||
spock : [
|
||||
spock : [
|
||||
dependencies.create("org.spockframework:spock-core:${versions.spock}", {
|
||||
exclude group: 'org.codehaus.groovy', module: 'groovy-all'
|
||||
}),
|
||||
// Used by Spock for mocking:
|
||||
dependencies.create(group: 'org.objenesis', name: 'objenesis', version: '2.6') // Last version to support Java7
|
||||
],
|
||||
groovy : "org.codehaus.groovy:groovy-all:${versions.groovy}",
|
||||
testcontainers : "org.testcontainers:testcontainers:1.12.2",
|
||||
testLogging : [
|
||||
groovy : "org.codehaus.groovy:groovy-all:${versions.groovy}",
|
||||
testcontainers : "org.testcontainers:testcontainers:1.12.2",
|
||||
testLogging : [
|
||||
dependencies.create(group: 'ch.qos.logback', name: 'logback-classic', version: versions.logback),
|
||||
dependencies.create(group: 'org.slf4j', name: 'log4j-over-slf4j', version: versions.slf4j),
|
||||
dependencies.create(group: 'org.slf4j', name: 'jcl-over-slf4j', version: versions.slf4j),
|
||||
dependencies.create(group: 'org.slf4j', name: 'jul-to-slf4j', version: versions.slf4j),
|
||||
],
|
||||
scala : dependencies.create(group: 'org.scala-lang', name: 'scala-library', version: "${versions.scala}"),
|
||||
kotlin : dependencies.create(group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: "${versions.kotlin}"),
|
||||
coroutines : dependencies.create(group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: "${versions.coroutines}"),
|
||||
scala : dependencies.create(group: 'org.scala-lang', name: 'scala-library', version: "${versions.scala}"),
|
||||
kotlin : dependencies.create(group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: "${versions.kotlin}"),
|
||||
coroutines : dependencies.create(group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: "${versions.coroutines}"),
|
||||
]
|
||||
}
|
||||
|
|
|
@ -128,7 +128,6 @@ tasks.register("packageSources", Jar) {
|
|||
artifacts.archives packageSources
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
maven {
|
||||
|
@ -137,6 +136,14 @@ repositories {
|
|||
maven {
|
||||
url "https://repo.typesafe.com/typesafe/releases"
|
||||
}
|
||||
// this is only needed for the working against unreleased otel-java snapshots
|
||||
maven {
|
||||
url "https://oss.jfrog.org/artifactory/oss-snapshot-local"
|
||||
content {
|
||||
includeGroup "io.opentelemetry"
|
||||
}
|
||||
}
|
||||
mavenLocal()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
|
|
@ -124,6 +124,8 @@ class DropwizardTest extends HttpServerTest<DropwizardTestSupport> {
|
|||
"$Tags.HTTP_METHOD" method
|
||||
"$Tags.HTTP_STATUS" endpoint.status
|
||||
"span.origin.type" ServletHandler.CachedChain.name
|
||||
"servlet.context" ""
|
||||
"servlet.path" ""
|
||||
if (endpoint.errored) {
|
||||
"error.msg" { it == null || it == EXCEPTION.body }
|
||||
"error.type" { it == null || it == Exception.name }
|
||||
|
|
|
@ -30,6 +30,7 @@ public abstract class AbstractInstrumentation extends Instrumenter.Default {
|
|||
return new String[] {
|
||||
packageName + ".context.ContextUtils",
|
||||
packageName + ".context.UnshadedScope",
|
||||
packageName + ".context.NoopScope",
|
||||
packageName + ".context.propagation.UnshadedContextPropagators",
|
||||
packageName + ".context.propagation.UnshadedHttpTextFormat",
|
||||
packageName + ".context.propagation.UnshadedHttpTextFormat$UnshadedSetter",
|
||||
|
|
|
@ -18,7 +18,6 @@ package io.opentelemetry.auto.instrumentation.opentelemetryapi.context;
|
|||
import io.opentelemetry.auto.bootstrap.ContextStore;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import unshaded.io.grpc.Context;
|
||||
import unshaded.io.opentelemetry.context.NoopScope;
|
||||
import unshaded.io.opentelemetry.context.Scope;
|
||||
|
||||
@Slf4j
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package io.opentelemetry.auto.instrumentation.opentelemetryapi.context;
|
||||
|
||||
import unshaded.io.opentelemetry.context.Scope;
|
||||
|
||||
/** A {@link Scope} that does nothing when it is created or closed. */
|
||||
public final class NoopScope implements Scope {
|
||||
/**
|
||||
* Returns the singleton instance of {@code NoopScope}.
|
||||
*
|
||||
* @return the singleton instance of {@code NoopScope}.
|
||||
* @since 0.1.0
|
||||
*/
|
||||
public static Scope getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
private static final Scope INSTANCE = new NoopScope();
|
||||
|
||||
private NoopScope() {}
|
||||
|
||||
@Override
|
||||
public void close() {}
|
||||
}
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import unshaded.io.opentelemetry.metrics.DoubleCounter;
|
||||
|
||||
|
@ -82,12 +81,6 @@ class UnshadedDoubleCounter implements DoubleCounter {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleCounter.Builder setLabelKeys(final List<String> labelKeys) {
|
||||
shadedBuilder.setLabelKeys(labelKeys);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleCounter.Builder setConstantLabels(final Map<String, String> constantLabels) {
|
||||
shadedBuilder.setConstantLabels(constantLabels);
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import unshaded.io.opentelemetry.metrics.DoubleMeasure;
|
||||
|
||||
|
@ -82,12 +81,6 @@ class UnshadedDoubleMeasure implements DoubleMeasure {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleMeasure.Builder setLabelKeys(final List<String> labelKeys) {
|
||||
shadedBuilder.setLabelKeys(labelKeys);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleMeasure.Builder setConstantLabels(final Map<String, String> constantLabels) {
|
||||
shadedBuilder.setConstantLabels(constantLabels);
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import unshaded.io.opentelemetry.metrics.DoubleObserver;
|
||||
|
||||
|
@ -85,12 +84,6 @@ class UnshadedDoubleObserver implements DoubleObserver {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleObserver.Builder setLabelKeys(final List<String> labelKeys) {
|
||||
shadedBuilder.setLabelKeys(labelKeys);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoubleObserver.Builder setConstantLabels(final Map<String, String> constantLabels) {
|
||||
shadedBuilder.setConstantLabels(constantLabels);
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import unshaded.io.opentelemetry.metrics.LongCounter;
|
||||
|
||||
|
@ -81,12 +80,6 @@ class UnshadedLongCounter implements LongCounter {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongCounter.Builder setLabelKeys(final List<String> labelKeys) {
|
||||
shadedBuilder.setLabelKeys(labelKeys);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongCounter.Builder setConstantLabels(final Map<String, String> constantLabels) {
|
||||
shadedBuilder.setConstantLabels(constantLabels);
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import unshaded.io.opentelemetry.metrics.LongMeasure;
|
||||
|
||||
|
@ -81,12 +80,6 @@ class UnshadedLongMeasure implements LongMeasure {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongMeasure.Builder setLabelKeys(final List<String> labelKeys) {
|
||||
shadedBuilder.setLabelKeys(labelKeys);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongMeasure.Builder setConstantLabels(final Map<String, String> constantLabels) {
|
||||
shadedBuilder.setConstantLabels(constantLabels);
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package io.opentelemetry.auto.instrumentation.opentelemetryapi.metrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import unshaded.io.opentelemetry.metrics.LongObserver;
|
||||
|
||||
|
@ -84,12 +83,6 @@ class UnshadedLongObserver implements LongObserver {
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongObserver.Builder setLabelKeys(final List<String> labelKeys) {
|
||||
shadedBuilder.setLabelKeys(labelKeys);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongObserver.Builder setConstantLabels(final Map<String, String> constantLabels) {
|
||||
shadedBuilder.setConstantLabels(constantLabels);
|
||||
|
|
|
@ -19,10 +19,10 @@ import static io.opentelemetry.auto.instrumentation.opentelemetryapi.trace.Bridg
|
|||
import static io.opentelemetry.auto.instrumentation.opentelemetryapi.trace.Bridging.toUnshaded;
|
||||
|
||||
import io.opentelemetry.auto.bootstrap.ContextStore;
|
||||
import io.opentelemetry.auto.instrumentation.opentelemetryapi.context.NoopScope;
|
||||
import io.opentelemetry.auto.instrumentation.opentelemetryapi.context.UnshadedScope;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import unshaded.io.grpc.Context;
|
||||
import unshaded.io.opentelemetry.context.NoopScope;
|
||||
import unshaded.io.opentelemetry.context.Scope;
|
||||
import unshaded.io.opentelemetry.trace.DefaultSpan;
|
||||
import unshaded.io.opentelemetry.trace.Span;
|
||||
|
|
|
@ -38,7 +38,6 @@ class MeterTest extends AgentTestRunner {
|
|||
def instrument = meter."$builderMethod"("test")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
.setLabelKeys(["a", "b"]) // TODO how to validate these?
|
||||
.setConstantLabels(["m": "n", "o": "p"])
|
||||
.setMonotonic(monotonic)
|
||||
.build()
|
||||
|
@ -93,7 +92,6 @@ class MeterTest extends AgentTestRunner {
|
|||
def instrument = meter."$builderMethod"("test")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
.setLabelKeys(["a", "b"]) // TODO what are label keys and how to validate them in metric data?
|
||||
.setConstantLabels(["m": "n", "o": "p"])
|
||||
.build()
|
||||
if (bind) {
|
||||
|
@ -144,7 +142,6 @@ class MeterTest extends AgentTestRunner {
|
|||
def instrument = meter."$builderMethod"("test")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
.setLabelKeys(["a", "b"]) // TODO what are label keys and how to validate them in metric data?
|
||||
.setConstantLabels(["m": "n", "o": "p"])
|
||||
.setMonotonic(monotonic)
|
||||
.build()
|
||||
|
@ -200,13 +197,11 @@ class MeterTest extends AgentTestRunner {
|
|||
def longCounter = meter.longCounterBuilder("test")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
.setLabelKeys(["a", "b"]) // TODO what are label keys and how to validate them in metric data?
|
||||
.setConstantLabels(["m": "n", "o": "p"])
|
||||
.build()
|
||||
def doubleMeasure = meter.doubleMeasureBuilder("test2")
|
||||
.setDescription("d")
|
||||
.setUnit("u")
|
||||
.setLabelKeys(["a", "b"]) // TODO what are label keys and how to validate them in metric data?
|
||||
.setConstantLabels(["m": "n", "o": "p"])
|
||||
.build()
|
||||
|
||||
|
|
|
@ -133,6 +133,7 @@ class SpringBootBasedTest extends HttpServerTest<ConfigurableApplicationContext>
|
|||
"$Tags.HTTP_STATUS" endpoint.status
|
||||
"span.origin.type" ApplicationFilterChain.name
|
||||
"servlet.path" endpoint.path
|
||||
"servlet.context" ""
|
||||
if (endpoint.errored) {
|
||||
"error.msg" { it == null || it == EXCEPTION.body }
|
||||
"error.type" { it == null || it == Exception.name }
|
||||
|
|
|
@ -127,6 +127,7 @@ class ServletFilterTest extends HttpServerTest<ConfigurableApplicationContext> {
|
|||
"$Tags.HTTP_STATUS" endpoint.status
|
||||
"span.origin.type" ApplicationFilterChain.name
|
||||
"servlet.path" endpoint.path
|
||||
"servlet.context" ""
|
||||
if (endpoint.errored) {
|
||||
"error.msg" { it == null || it == EXCEPTION.body }
|
||||
"error.type" { it == null || it == Exception.name }
|
||||
|
|
Loading…
Reference in New Issue