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
|
||||
|
@ -22,8 +27,9 @@ ext {
|
|||
deps = [
|
||||
// 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),
|
||||
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),
|
||||
|
||||
|
|
|
@ -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