Skip to content

Commit

Permalink
Update Armeria instrumentation to match latest decorator order and re… (
Browse files Browse the repository at this point in the history
open-telemetry#2021)

* Update Armeria instrumentation to match latest decorator order and remove dedupe logic for now.

* git add

* Revert unused
  • Loading branch information
Anuraag Agrawal authored Jan 12, 2021
1 parent 2b73f9f commit 62bd2c0
Show file tree
Hide file tree
Showing 19 changed files with 109 additions and 169 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ These are the supported libraries and frameworks:
| [Akka HTTP](https://doc.akka.io/docs/akka-http/current/index.html) | 10.0+ |
| [Apache HttpAsyncClient](https://hc.apache.org/index.html) | 4.1+ |
| [Apache HttpClient](https://hc.apache.org/index.html) | 2.0+ |
| [Armeria](https://armeria.dev) | 0.99.8+ |
| [Armeria](https://armeria.dev) | 1.3+ |
| [AsyncHttpClient](https://github.com/AsyncHttpClient/async-http-client) | 1.9+ (not including 2.x yet) |
| [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html) | 1.0+ |
| [AWS SDK](https://aws.amazon.com/sdk-for-java/) | 1.11.x and 2.2.0+ |
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ muzzle {
pass {
group = "com.linecorp.armeria"
module = "armeria"
versions = "[0.99.8,)"
versions = "[1.3.0,)"
assertInverse = true
}
}

dependencies {
implementation project(':instrumentation:armeria-1.0:library')
implementation project(':instrumentation:armeria-1.3:library')

library group: 'com.linecorp.armeria', name: 'armeria', version: '0.99.8'
library group: 'com.linecorp.armeria', name: 'armeria', version: '1.3.0'

testImplementation project(':instrumentation:armeria-1.0:testing')
testImplementation project(':instrumentation:armeria-1.3:testing')
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.armeria.v1_0;
package io.opentelemetry.javaagent.instrumentation.armeria.v1_3;

import com.linecorp.armeria.client.HttpClient;
import com.linecorp.armeria.server.HttpService;
import io.opentelemetry.instrumentation.armeria.v1_0.client.OpenTelemetryClient;
import io.opentelemetry.instrumentation.armeria.v1_0.server.OpenTelemetryService;
import io.opentelemetry.instrumentation.armeria.v1_3.client.OpenTelemetryClient;
import io.opentelemetry.instrumentation.armeria.v1_3.server.OpenTelemetryService;
import java.util.function.Function;

// Holds singleton references to decorators to match against during suppression.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.armeria.v1_3;

import static io.opentelemetry.javaagent.tooling.bytebuddy.matcher.ClassLoaderMatcher.hasClassesNamed;
import static java.util.Arrays.asList;

import com.google.auto.service.AutoService;
import io.opentelemetry.javaagent.tooling.InstrumentationModule;
import io.opentelemetry.javaagent.tooling.TypeInstrumentation;
import java.util.List;
import net.bytebuddy.matcher.ElementMatcher;

@AutoService(InstrumentationModule.class)
public class ArmeriaInstrumentationModule extends InstrumentationModule {
public ArmeriaInstrumentationModule() {
super("armeria", "armeria-1.3");
}

@Override
public ElementMatcher.Junction<ClassLoader> classLoaderMatcher() {
// Unrelated class which was added in Armeria 1.3.0, the minimum version we support.
return hasClassesNamed("com.linecorp.armeria.server.metric.PrometheusExpositionServiceBuilder");
}

@Override
public List<TypeInstrumentation> typeInstrumentations() {
return asList(
new ArmeriaWebClientBuilderInstrumentation(), new ArmeriaServerBuilderInstrumentation());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.armeria.v1_0;
package io.opentelemetry.javaagent.instrumentation.armeria.v1_3;

import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
import static net.bytebuddy.matcher.ElementMatchers.named;

import com.linecorp.armeria.server.ServerBuilder;
Expand All @@ -19,23 +18,24 @@
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;

public class ArmeriaServerInstrumentation implements TypeInstrumentation {
public class ArmeriaServerBuilderInstrumentation implements TypeInstrumentation {

@Override
public ElementMatcher<? super TypeDescription> typeMatcher() {
return named("com.linecorp.armeria.server.Server");
return named("com.linecorp.armeria.server.ServerBuilder");
}

@Override
public Map<? extends ElementMatcher<? super MethodDescription>, String> transformers() {
return Collections.singletonMap(
isMethod().and(isPublic()).and(isStatic()).and(named("builder")),
ArmeriaServerInstrumentation.class.getName() + "$AddDecoratorAdvice");
isMethod().and(isPublic()).and(named("build")),
ArmeriaServerBuilderInstrumentation.class.getName() + "$BuildAdvice");
}

public static class AddDecoratorAdvice {
@Advice.OnMethodExit
public static void addDecorator(@Advice.Return ServerBuilder sb) {
sb.decorator(ArmeriaDecorators.SERVER_DECORATOR);
public static class BuildAdvice {
@Advice.OnMethodEnter
public static void onEnter(@Advice.This ServerBuilder builder) {
builder.decorator(ArmeriaDecorators.SERVER_DECORATOR);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.armeria.v1_0;
package io.opentelemetry.javaagent.instrumentation.armeria.v1_3;

import static net.bytebuddy.matcher.ElementMatchers.isMethod;
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.armeria.v1_0
package io.opentelemetry.javaagent.instrumentation.armeria.v1_3

import com.linecorp.armeria.client.WebClientBuilder
import com.linecorp.armeria.server.ServerBuilder
import io.opentelemetry.instrumentation.armeria.v1_0.AbstractArmeriaTest
import io.opentelemetry.instrumentation.armeria.v1_3.AbstractArmeriaTest
import io.opentelemetry.instrumentation.test.AgentTestTrait

class ArmeriaTest extends AbstractArmeriaTest implements AgentTestTrait {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apply from: "$rootDir/gradle/instrumentation-library.gradle"
apply plugin: "net.ltgt.errorprone"

dependencies {
library group: 'com.linecorp.armeria', name: 'armeria', version: '0.99.8'
library group: 'com.linecorp.armeria', name: 'armeria', version: '1.3.0'

testImplementation project(':instrumentation:armeria-1.0:testing')
testImplementation project(':instrumentation:armeria-1.3:testing')
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.armeria.v1_0.client;
package io.opentelemetry.instrumentation.armeria.v1_3.client;

import com.linecorp.armeria.client.ClientRequestContext;
import com.linecorp.armeria.common.HttpRequest;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.armeria.v1_0.client;
package io.opentelemetry.instrumentation.armeria.v1_3.client;

import com.linecorp.armeria.client.ClientRequestContext;
import com.linecorp.armeria.client.HttpClient;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.armeria.v1_0.server;
package io.opentelemetry.instrumentation.armeria.v1_3.server;

import com.linecorp.armeria.common.HttpRequest;
import com.linecorp.armeria.common.logging.RequestLog;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.armeria.v1_0.server;
package io.opentelemetry.instrumentation.armeria.v1_3.server;

import com.linecorp.armeria.common.HttpRequest;
import com.linecorp.armeria.common.HttpResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.armeria.v1_0
package io.opentelemetry.instrumentation.armeria.v1_3

import com.linecorp.armeria.client.WebClientBuilder
import com.linecorp.armeria.server.ServerBuilder
import io.opentelemetry.instrumentation.armeria.v1_0.client.OpenTelemetryClient
import io.opentelemetry.instrumentation.armeria.v1_0.server.OpenTelemetryService
import io.opentelemetry.instrumentation.armeria.v1_3.client.OpenTelemetryClient
import io.opentelemetry.instrumentation.armeria.v1_3.server.OpenTelemetryService
import io.opentelemetry.instrumentation.test.InstrumentationTestTrait

class ArmeriaTest extends AbstractArmeriaTest implements InstrumentationTestTrait {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ apply from: "$rootDir/gradle/java.gradle"
dependencies {
api project(':testing-common')

api group: 'com.linecorp.armeria', name: 'armeria', version: '0.99.8'
api group: 'com.linecorp.armeria', name: 'armeria-junit4', version: '0.99.8'
api group: 'com.linecorp.armeria', name: 'armeria', version: '1.3.0'
api group: 'com.linecorp.armeria', name: 'armeria-junit4', version: '1.3.0'

implementation deps.guava

Expand Down
Loading

0 comments on commit 62bd2c0

Please sign in to comment.