Skip to content

Commit

Permalink
Fix class cast exception, noop meter does not implement incubating api (
Browse files Browse the repository at this point in the history
  • Loading branch information
laurit authored Aug 5, 2024
1 parent 7ecdb79 commit ade7c80
Show file tree
Hide file tree
Showing 19 changed files with 338 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class ApplicationDoubleGaugeBuilder implements DoubleGaugeBuilder {

private final io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder;

protected ApplicationDoubleGaugeBuilder(
public ApplicationDoubleGaugeBuilder(
io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder) {
this.agentBuilder = agentBuilder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class ApplicationDoubleHistogramBuilder implements DoubleHistogramBuilder

private final io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder;

protected ApplicationDoubleHistogramBuilder(
public ApplicationDoubleHistogramBuilder(
io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder) {
this.agentBuilder = agentBuilder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ApplicationLongCounterBuilder implements LongCounterBuilder {

private final io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder;

protected ApplicationLongCounterBuilder(
public ApplicationLongCounterBuilder(
io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder) {
this.agentBuilder = agentBuilder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ApplicationLongUpDownCounterBuilder implements LongUpDownCounterBui

private final io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder;

protected ApplicationLongUpDownCounterBuilder(
public ApplicationLongUpDownCounterBuilder(
io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder) {
this.agentBuilder = agentBuilder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,33 @@ dependencies {
}

configurations.configureEach {
if (name == "testRuntimeClasspath" || name == "testCompileClasspath") {
if (name == "testRuntimeClasspath" || name == "testCompileClasspath" || name.startsWith("noopTest")) {
resolutionStrategy {
force("io.opentelemetry:opentelemetry-api:1.31.0")
}
}
}

testing {
suites {
val noopTest by registering(JvmTestSuite::class) {
dependencies {
implementation("io.opentelemetry:opentelemetry-extension-incubator:1.31.0-alpha")
}

targets {
all {
testTask.configure {
jvmArgs("-Dtesting.exporter.enabled=false")
}
}
}
}
}
}

tasks {
check {
dependsOn(testing.suites)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
import application.io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import application.io.opentelemetry.api.metrics.LongCounterBuilder;
import application.io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleGaugeBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogramBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongUpDownCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.metrics.ApplicationMeter115;

public class ApplicationMeter131 extends ApplicationMeter115 {
Expand All @@ -22,21 +26,39 @@ protected ApplicationMeter131(io.opentelemetry.api.metrics.Meter agentMeter) {

@Override
public LongCounterBuilder counterBuilder(String name) {
return new ApplicationLongCounterBuilder131(agentMeter.counterBuilder(name));
io.opentelemetry.api.metrics.LongCounterBuilder builder = agentMeter.counterBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedLongCounterBuilder) {
return new ApplicationLongCounterBuilder131(builder);
}
return new ApplicationLongCounterBuilder(builder);
}

@Override
public LongUpDownCounterBuilder upDownCounterBuilder(String name) {
return new ApplicationLongUpDownCounterBuilder131(agentMeter.upDownCounterBuilder(name));
io.opentelemetry.api.metrics.LongUpDownCounterBuilder builder =
agentMeter.upDownCounterBuilder(name);
if (builder
instanceof io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounterBuilder) {
return new ApplicationLongUpDownCounterBuilder131(builder);
}
return new ApplicationLongUpDownCounterBuilder(builder);
}

@Override
public DoubleHistogramBuilder histogramBuilder(String name) {
return new ApplicationDoubleHistogramBuilder131(agentMeter.histogramBuilder(name));
io.opentelemetry.api.metrics.DoubleHistogramBuilder builder = agentMeter.histogramBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder) {
return new ApplicationDoubleHistogramBuilder131(builder);
}
return new ApplicationDoubleHistogramBuilder(builder);
}

@Override
public DoubleGaugeBuilder gaugeBuilder(String name) {
return new ApplicationDoubleGaugeBuilder131(agentMeter.gaugeBuilder(name));
io.opentelemetry.api.metrics.DoubleGaugeBuilder builder = agentMeter.gaugeBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedDoubleGaugeBuilder) {
return new ApplicationDoubleGaugeBuilder131(builder);
}
return new ApplicationDoubleGaugeBuilder(builder);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.metrics;

import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import io.opentelemetry.api.metrics.LongCounterBuilder;
import io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.extension.incubator.metrics.ExtendedDoubleGaugeBuilder;
import io.opentelemetry.extension.incubator.metrics.ExtendedDoubleHistogramBuilder;
import io.opentelemetry.extension.incubator.metrics.ExtendedLongCounterBuilder;
import io.opentelemetry.extension.incubator.metrics.ExtendedLongUpDownCounterBuilder;
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

class NoopTest {
@RegisterExtension
static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create();

@Test
void noopInstance() {
Meter meter = testing.getOpenTelemetry().getMeter("test");

LongCounterBuilder counterBuilder = meter.counterBuilder("test");
assertThat(counterBuilder).isNotInstanceOf(ExtendedLongCounterBuilder.class);

LongUpDownCounterBuilder upDownCounterBuilder = meter.upDownCounterBuilder("test");
assertThat(upDownCounterBuilder).isNotInstanceOf(ExtendedLongUpDownCounterBuilder.class);

DoubleGaugeBuilder gaugeBuilder = meter.gaugeBuilder("test");
assertThat(gaugeBuilder).isNotInstanceOf(ExtendedDoubleGaugeBuilder.class);

DoubleHistogramBuilder histogramBuilder = meter.histogramBuilder("test");
assertThat(histogramBuilder).isNotInstanceOf(ExtendedDoubleHistogramBuilder.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ dependencies {
}

configurations.configureEach {
if (name.endsWith("testRuntimeClasspath", true) || name.endsWith("testCompileClasspath", true)) {
if (name.endsWith("testRuntimeClasspath", true) ||
name.endsWith("testCompileClasspath", true) ||
name.startsWith("noopTest")) {
resolutionStrategy {
force("io.opentelemetry:opentelemetry-api:1.32.0")
}
Expand All @@ -29,6 +31,19 @@ testing {
implementation("io.opentelemetry:opentelemetry-extension-incubator:1.32.0-alpha")
}
}
val noopTest by registering(JvmTestSuite::class) {
dependencies {
implementation("io.opentelemetry:opentelemetry-extension-incubator:1.32.0-alpha")
}

targets {
all {
testTask.configure {
jvmArgs("-Dtesting.exporter.enabled=false")
}
}
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.metrics;

import application.io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogramBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.metrics.ApplicationMeter131;

class ApplicationMeter132Incubator extends ApplicationMeter131 {
Expand All @@ -19,6 +20,10 @@ class ApplicationMeter132Incubator extends ApplicationMeter131 {

@Override
public DoubleHistogramBuilder histogramBuilder(String name) {
return new ApplicationDoubleHistogramBuilder132Incubator(agentMeter.histogramBuilder(name));
io.opentelemetry.api.metrics.DoubleHistogramBuilder builder = agentMeter.histogramBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder) {
return new ApplicationDoubleHistogramBuilder132Incubator(builder);
}
return new ApplicationDoubleHistogramBuilder(builder);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.metrics;

import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
import io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import io.opentelemetry.api.metrics.LongCounterBuilder;
import io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.extension.incubator.metrics.ExtendedDoubleGaugeBuilder;
import io.opentelemetry.extension.incubator.metrics.ExtendedDoubleHistogramBuilder;
import io.opentelemetry.extension.incubator.metrics.ExtendedLongCounterBuilder;
import io.opentelemetry.extension.incubator.metrics.ExtendedLongUpDownCounterBuilder;
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

class NoopTest {
@RegisterExtension
static final AgentInstrumentationExtension testing = AgentInstrumentationExtension.create();

@Test
void noopInstance() {
Meter meter = testing.getOpenTelemetry().getMeter("test");

LongCounterBuilder counterBuilder = meter.counterBuilder("test");
assertThat(counterBuilder).isNotInstanceOf(ExtendedLongCounterBuilder.class);

LongUpDownCounterBuilder upDownCounterBuilder = meter.upDownCounterBuilder("test");
assertThat(upDownCounterBuilder).isNotInstanceOf(ExtendedLongUpDownCounterBuilder.class);

DoubleGaugeBuilder gaugeBuilder = meter.gaugeBuilder("test");
assertThat(gaugeBuilder).isNotInstanceOf(ExtendedDoubleGaugeBuilder.class);

DoubleHistogramBuilder histogramBuilder = meter.histogramBuilder("test");
assertThat(histogramBuilder).isNotInstanceOf(ExtendedDoubleHistogramBuilder.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ configurations.configureEach {
force("io.opentelemetry:opentelemetry-api:1.37.0")
force("io.opentelemetry:opentelemetry-api-incubator:1.37.0-alpha")
}
if (name.startsWith("incubatorTest")) {
if (name.startsWith("incubatorTest") || name.startsWith("noopTest")) {
resolutionStrategy {
force("io.opentelemetry:opentelemetry-api-incubator:1.37.0-alpha")
}
Expand All @@ -47,6 +47,19 @@ testing {
implementation("io.opentelemetry:opentelemetry-extension-incubator:1.32.0-alpha")
}
}
val noopTest by registering(JvmTestSuite::class) {
dependencies {
implementation("io.opentelemetry:opentelemetry-api-incubator:1.37.0-alpha")
}

targets {
all {
testTask.configure {
jvmArgs("-Dtesting.exporter.enabled=false")
}
}
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_37.incubator.metrics;

import application.io.opentelemetry.api.metrics.DoubleGaugeBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleGaugeBuilder;

class ApplicationMeter137 extends BaseApplicationMeter137 {

Expand All @@ -18,6 +19,10 @@ protected ApplicationMeter137(io.opentelemetry.api.metrics.Meter agentMeter) {

@Override
public DoubleGaugeBuilder gaugeBuilder(String name) {
return new ApplicationDoubleGaugeBuilder137(agentMeter.gaugeBuilder(name));
io.opentelemetry.api.metrics.DoubleGaugeBuilder builder = agentMeter.gaugeBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedDoubleGaugeBuilder) {
return new ApplicationDoubleGaugeBuilder137(builder);
}
return new ApplicationDoubleGaugeBuilder(builder);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
import application.io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import application.io.opentelemetry.api.metrics.LongCounterBuilder;
import application.io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogramBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongUpDownCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.metrics.ApplicationMeter115;

// used by both 1.37 and 1.38
Expand All @@ -22,16 +25,30 @@ protected BaseApplicationMeter137(io.opentelemetry.api.metrics.Meter agentMeter)

@Override
public LongCounterBuilder counterBuilder(String name) {
return new ApplicationLongCounterBuilder137(agentMeter.counterBuilder(name));
io.opentelemetry.api.metrics.LongCounterBuilder builder = agentMeter.counterBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedLongCounterBuilder) {
return new ApplicationLongCounterBuilder137(builder);
}
return new ApplicationLongCounterBuilder(builder);
}

@Override
public LongUpDownCounterBuilder upDownCounterBuilder(String name) {
return new ApplicationLongUpDownCounterBuilder137(agentMeter.upDownCounterBuilder(name));
io.opentelemetry.api.metrics.LongUpDownCounterBuilder builder =
agentMeter.upDownCounterBuilder(name);
if (builder
instanceof io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounterBuilder) {
return new ApplicationLongUpDownCounterBuilder137(builder);
}
return new ApplicationLongUpDownCounterBuilder(builder);
}

@Override
public DoubleHistogramBuilder histogramBuilder(String name) {
return new ApplicationDoubleHistogramBuilder137(agentMeter.histogramBuilder(name));
io.opentelemetry.api.metrics.DoubleHistogramBuilder builder = agentMeter.histogramBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder) {
return new ApplicationDoubleHistogramBuilder137(builder);
}
return new ApplicationDoubleHistogramBuilder(builder);
}
}
Loading

0 comments on commit ade7c80

Please sign in to comment.