You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2023/02/26 13:25:49 UTC
[skywalking-java] branch main updated: Adapt Armeria's plugins to the latest version 1.22.x (#459)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-java.git
The following commit(s) were added to refs/heads/main by this push:
new e648ca2145 Adapt Armeria's plugins to the latest version 1.22.x (#459)
e648ca2145 is described below
commit e648ca2145db0717052a3dc3936171c76584b4c5
Author: weiyang.zhang <gg...@gmail.com>
AuthorDate: Sun Feb 26 21:25:43 2023 +0800
Adapt Armeria's plugins to the latest version 1.22.x (#459)
---
CHANGES.md | 1 +
.../apm-armeria-1.0.x-plugin/pom.xml | 43 +++++++++++++
.../armeria/AbstractArmeriaClientInterceptor.java} | 63 ++++++++++++------
.../armeria/Armeria100ClientInterceptor.java | 50 +++++++++++++++
.../define/Armeria100ClientInstrumentation.java | 75 ++++++++++++++++++++++
.../src/main/resources/skywalking-plugin.def | 4 +-
.../apm-sdk-plugin/apm-armeria-plugins/pom.xml | 39 +++++++++++
.../armeria/Armeria085ServerInterceptor.java | 7 +-
apm-sniffer/apm-sdk-plugin/pom.xml | 1 +
.../setup/service-agent/java-agent/Plugin-list.md | 1 +
.../service-agent/java-agent/Supported-list.md | 2 +-
.../apm/testcase/armeria/ServerApplication.java | 7 +-
.../armeria-0.96plus-scenario/support-version.list | 24 +++++++
13 files changed, 286 insertions(+), 31 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index da8a191f21..7898f75a83 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -17,6 +17,7 @@ Release Notes.
* Fix OracleURLParser ignoring actual port when :SID is absent.
* Change gRPC instrumentation point to fix plugin not working for server side.
* Fix servicecomb plugin trace break.
+* Adapt Armeria's plugins to the latest version 1.22.x
#### Documentation
* Update docs of Tracing APIs, reorganize the API docs into six parts.
diff --git a/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/pom.xml
new file mode 100644
index 0000000000..4995f20941
--- /dev/null
+++ b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>apm-armeria-plugins</artifactId>
+ <groupId>org.apache.skywalking</groupId>
+ <version>8.15.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>apm-armeria-1.0.x-plugin</artifactId>
+ <name>apm-armeria-1.0.x-plugin</name>
+
+ <packaging>jar</packaging>
+ <description>SkyWalking Agent Plugin for Armeria 1.0.x+</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.linecorp.armeria</groupId>
+ <artifactId>armeria</artifactId>
+ <version>1.0.0</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria085ServerInterceptor.java b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/AbstractArmeriaClientInterceptor.java
similarity index 53%
copy from apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria085ServerInterceptor.java
copy to apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/AbstractArmeriaClientInterceptor.java
index 4f219503ee..840de227af 100644
--- a/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria085ServerInterceptor.java
+++ b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/AbstractArmeriaClientInterceptor.java
@@ -17,10 +17,11 @@
package org.apache.skywalking.apm.plugin.armeria;
-import com.linecorp.armeria.common.DefaultHttpRequest;
-import com.linecorp.armeria.common.HttpHeaders;
+import com.linecorp.armeria.client.Clients;
+import com.linecorp.armeria.common.HttpMethod;
+import com.linecorp.armeria.common.HttpRequest;
+import com.linecorp.armeria.common.util.SafeCloseable;
import io.netty.util.AsciiString;
-import java.lang.reflect.Method;
import org.apache.skywalking.apm.agent.core.context.CarrierItem;
import org.apache.skywalking.apm.agent.core.context.ContextCarrier;
import org.apache.skywalking.apm.agent.core.context.ContextManager;
@@ -32,35 +33,55 @@ import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceM
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
-@SuppressWarnings("unused") // actually used
-public class Armeria085ServerInterceptor implements InstanceMethodsAroundInterceptor {
+import java.lang.reflect.Method;
+import java.net.URI;
+
+public abstract class AbstractArmeriaClientInterceptor implements InstanceMethodsAroundInterceptor {
+ private static final String KEY_SAFE_CLOSEABLE = "SAFE_CLOSEABLE";
+
+ protected abstract URI getUri(EnhancedInstance objInst);
+
+ protected abstract HttpMethod getHttpMethod(Object[] allArguments);
+
+ protected abstract String getPath(Object[] allArguments);
+
+ protected abstract HttpRequest getHttpRequest(Object[] allArguments);
+
@Override
- public void beforeMethod(final EnhancedInstance objInst, final Method method, final Object[] allArguments,
- final Class<?>[] argumentsTypes, final MethodInterceptResult result) {
+ public void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes, MethodInterceptResult result) {
+ URI uri = getUri(objInst);
+ HttpMethod httpMethod = getHttpMethod(allArguments);
+ String path = getPath(allArguments);
- DefaultHttpRequest httpRequest = (DefaultHttpRequest) allArguments[1];
- HttpHeaders headers = httpRequest.headers();
+ final ContextCarrier contextCarrier = new ContextCarrier();
+ final String remotePeer = uri.getPort() > 0 ? uri.getHost() + ":" + uri.getPort() : uri.getHost();
- ContextCarrier carrier = new ContextCarrier();
- for (CarrierItem item = carrier.items(); item.hasNext(); ) {
- item = item.next();
- item.setHeadValue(headers.get(AsciiString.of(item.getHeadKey())));
- }
+ final AbstractSpan exitSpan = ContextManager.createExitSpan(path, contextCarrier, remotePeer);
+
+ exitSpan.setComponent(ComponentsDefine.ARMERIA);
+ exitSpan.setLayer(SpanLayer.HTTP);
+ Tags.HTTP.METHOD.set(exitSpan, httpMethod.name());
- AbstractSpan entrySpan = ContextManager.createEntrySpan(httpRequest.path(), carrier);
- entrySpan.setComponent(ComponentsDefine.ARMERIA);
- entrySpan.setLayer(SpanLayer.HTTP);
- entrySpan.setPeer(httpRequest.authority());
- Tags.URL.set(entrySpan, httpRequest.path());
- Tags.HTTP.METHOD.set(entrySpan, httpRequest.method().name());
+ ContextManager.getRuntimeContext().put(KEY_SAFE_CLOSEABLE, Clients.withHeaders(builder -> {
+ for (CarrierItem item = contextCarrier.items(); item.hasNext(); ) {
+ item = item.next();
+ builder.add(AsciiString.of(item.getHeadKey()), item.getHeadValue());
+ }
+ }));
}
@Override
public Object afterMethod(final EnhancedInstance objInst, final Method method, final Object[] allArguments,
final Class<?>[] argumentsTypes, final Object ret) {
- if (ContextManager.isActive()) {
+ HttpRequest req = getHttpRequest(allArguments);
+ if (req != null && ContextManager.isActive()) {
ContextManager.stopSpan();
}
+
+ SafeCloseable safeCloseable = ContextManager.getRuntimeContext().get(KEY_SAFE_CLOSEABLE, SafeCloseable.class);
+ if (safeCloseable != null) {
+ safeCloseable.close();
+ }
return ret;
}
diff --git a/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria100ClientInterceptor.java b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria100ClientInterceptor.java
new file mode 100644
index 0000000000..6bed5f1d34
--- /dev/null
+++ b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria100ClientInterceptor.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.skywalking.apm.plugin.armeria;
+
+import com.linecorp.armeria.client.UserClient;
+import com.linecorp.armeria.common.HttpMethod;
+import com.linecorp.armeria.common.HttpRequest;
+import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance;
+
+import java.net.URI;
+
+public class Armeria100ClientInterceptor extends AbstractArmeriaClientInterceptor {
+
+ @Override
+ protected URI getUri(EnhancedInstance objInst) {
+ UserClient userClient = (UserClient) objInst;
+ return userClient.uri();
+ }
+
+ @Override
+ protected HttpMethod getHttpMethod(Object[] allArguments) {
+ return (HttpMethod) allArguments[2];
+ }
+
+ @Override
+ protected String getPath(Object[] allArguments) {
+ return (String) allArguments[3];
+ }
+
+ @Override
+ protected HttpRequest getHttpRequest(Object[] allArguments) {
+ return (HttpRequest) allArguments[6];
+ }
+
+}
diff --git a/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/define/Armeria100ClientInstrumentation.java b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/define/Armeria100ClientInstrumentation.java
new file mode 100644
index 0000000000..be380ce4e7
--- /dev/null
+++ b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/define/Armeria100ClientInstrumentation.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.skywalking.apm.plugin.armeria.define;
+
+import net.bytebuddy.description.method.MethodDescription;
+import net.bytebuddy.matcher.ElementMatcher;
+import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint;
+import org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint;
+import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
+import org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch;
+
+import static net.bytebuddy.matcher.ElementMatchers.named;
+import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
+import static org.apache.skywalking.apm.agent.core.plugin.match.NameMatch.byName;
+
+/**
+ * Instruments Armeria client 1.0.x
+ */
+public class Armeria100ClientInstrumentation extends ClassInstanceMethodsEnhancePluginDefine {
+
+ private static final String ENHANCE_CLASS = "com.linecorp.armeria.client.UserClient";
+ private static final String INTERCEPTOR_CLASS = "org.apache.skywalking.apm.plugin.armeria.Armeria100ClientInterceptor";
+
+ @Override
+ protected ClassMatch enhanceClass() {
+ return byName(ENHANCE_CLASS);
+ }
+
+ @Override
+ public ConstructorInterceptPoint[] getConstructorsInterceptPoints() {
+ return new ConstructorInterceptPoint[0];
+ }
+
+ @Override
+ public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
+ return new InstanceMethodsInterceptPoint[] {
+ new InstanceMethodsInterceptPoint() {
+ @Override
+ public ElementMatcher<MethodDescription> getMethodsMatcher() {
+ return named("execute").and(takesArgument(0, named("com.linecorp.armeria.common.SessionProtocol"))).and(takesArgument(1, named("com.linecorp.armeria.client.endpoint.EndpointGroup"))).and(takesArgument(2, named("com.linecorp.armeria.common.HttpMethod"))).and(takesArgument(3, named("java.lang.String"))).and(takesArgument(4, named("java.lang.String"))).and(takesArgument(5, named("java.lang.String")));
+ }
+
+ @Override
+ public String getMethodsInterceptor() {
+ return INTERCEPTOR_CLASS;
+ }
+
+ @Override
+ public boolean isOverrideArgs() {
+ return false;
+ }
+ }
+ };
+ }
+
+ @Override
+ protected String[] witnessClasses() {
+ return new String[]{"com.linecorp.armeria.common.AbstractHttpHeadersBuilder"};
+ }
+}
diff --git a/test/plugin/scenarios/armeria-0.96plus-scenario/support-version.list b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/resources/skywalking-plugin.def
similarity index 89%
copy from test/plugin/scenarios/armeria-0.96plus-scenario/support-version.list
copy to apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/resources/skywalking-plugin.def
index 0fbfc1d463..eb757ee8b4 100644
--- a/test/plugin/scenarios/armeria-0.96plus-scenario/support-version.list
+++ b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/apm-armeria-1.0.x-plugin/src/main/resources/skywalking-plugin.def
@@ -14,6 +14,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-0.98.0
-0.97.0
-0.96.0
+armeria-100=org.apache.skywalking.apm.plugin.armeria.define.Armeria100ClientInstrumentation
\ No newline at end of file
diff --git a/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/pom.xml b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/pom.xml
new file mode 100644
index 0000000000..e2bd0eb579
--- /dev/null
+++ b/apm-sniffer/apm-sdk-plugin/apm-armeria-plugins/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>apm-sdk-plugin</artifactId>
+ <groupId>org.apache.skywalking</groupId>
+ <version>8.15.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>pom</packaging>
+ <artifactId>apm-armeria-plugins</artifactId>
+ <name>apm-armeria-plugins</name>
+
+ <modules>
+ <module>apm-armeria-1.0.x-plugin</module>
+ </modules>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <sdk.plugin.related.dir>/..</sdk.plugin.related.dir>
+ </properties>
+
+</project>
\ No newline at end of file
diff --git a/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria085ServerInterceptor.java b/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria085ServerInterceptor.java
index 4f219503ee..8a5f327965 100644
--- a/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria085ServerInterceptor.java
+++ b/apm-sniffer/apm-sdk-plugin/armeria-0.85.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/armeria/Armeria085ServerInterceptor.java
@@ -17,10 +17,9 @@
package org.apache.skywalking.apm.plugin.armeria;
-import com.linecorp.armeria.common.DefaultHttpRequest;
import com.linecorp.armeria.common.HttpHeaders;
+import com.linecorp.armeria.common.HttpRequest;
import io.netty.util.AsciiString;
-import java.lang.reflect.Method;
import org.apache.skywalking.apm.agent.core.context.CarrierItem;
import org.apache.skywalking.apm.agent.core.context.ContextCarrier;
import org.apache.skywalking.apm.agent.core.context.ContextManager;
@@ -32,13 +31,15 @@ import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceM
import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
import org.apache.skywalking.apm.network.trace.component.ComponentsDefine;
+import java.lang.reflect.Method;
+
@SuppressWarnings("unused") // actually used
public class Armeria085ServerInterceptor implements InstanceMethodsAroundInterceptor {
@Override
public void beforeMethod(final EnhancedInstance objInst, final Method method, final Object[] allArguments,
final Class<?>[] argumentsTypes, final MethodInterceptResult result) {
- DefaultHttpRequest httpRequest = (DefaultHttpRequest) allArguments[1];
+ HttpRequest httpRequest = (HttpRequest) allArguments[1];
HttpHeaders headers = httpRequest.headers();
ContextCarrier carrier = new ContextCarrier();
diff --git a/apm-sniffer/apm-sdk-plugin/pom.xml b/apm-sniffer/apm-sdk-plugin/pom.xml
index e5cddd3abd..d6c5434c10 100644
--- a/apm-sniffer/apm-sdk-plugin/pom.xml
+++ b/apm-sniffer/apm-sdk-plugin/pom.xml
@@ -127,6 +127,7 @@
<module>nats-2.14.x-2.15.x-plugin</module>
<module>jedis-plugins</module>
<module>impala-jdbc-2.6.x-plugin</module>
+ <module>apm-armeria-plugins</module>
</modules>
<packaging>pom</packaging>
diff --git a/docs/en/setup/service-agent/java-agent/Plugin-list.md b/docs/en/setup/service-agent/java-agent/Plugin-list.md
index aeea1528c3..f19b227e8b 100644
--- a/docs/en/setup/service-agent/java-agent/Plugin-list.md
+++ b/docs/en/setup/service-agent/java-agent/Plugin-list.md
@@ -4,6 +4,7 @@
- armeria-085
- armeria-086
- armeria-098
+- armeria-100
- async-http-client-2.x
- avro-1.x
- brpc-java
diff --git a/docs/en/setup/service-agent/java-agent/Supported-list.md b/docs/en/setup/service-agent/java-agent/Supported-list.md
index 4b89738285..1bc0ada50a 100644
--- a/docs/en/setup/service-agent/java-agent/Supported-list.md
+++ b/docs/en/setup/service-agent/java-agent/Supported-list.md
@@ -59,7 +59,7 @@ metrics based on the tracing data.
* [gRPC](https://github.com/grpc/grpc-java) 1.x
* [Apache ServiceComb Java Chassis](https://github.com/apache/servicecomb-java-chassis) 1.x, 2.x
* [SOFARPC](https://github.com/alipay/sofa-rpc) 5.4.0
- * [Armeria](https://github.com/line/armeria) 0.63.0 -> 0.98.0
+ * [Armeria](https://github.com/line/armeria) 0.63.0 -> 1.22.0
* [Apache Avro](http://avro.apache.org) 1.7.0 - 1.8.x
* [Finagle](https://github.com/twitter/finagle) 6.44.0 -> 20.1.0 (6.25.0 -> 6.44.0 not tested)
* [Brpc-Java](https://github.com/baidu/brpc-java) 2.3.7 -> 3.0.5
diff --git a/test/plugin/scenarios/armeria-0.96plus-scenario/src/main/java/org/apache/skywalking/apm/testcase/armeria/ServerApplication.java b/test/plugin/scenarios/armeria-0.96plus-scenario/src/main/java/org/apache/skywalking/apm/testcase/armeria/ServerApplication.java
index 93b7bfbe3a..7244f391cc 100644
--- a/test/plugin/scenarios/armeria-0.96plus-scenario/src/main/java/org/apache/skywalking/apm/testcase/armeria/ServerApplication.java
+++ b/test/plugin/scenarios/armeria-0.96plus-scenario/src/main/java/org/apache/skywalking/apm/testcase/armeria/ServerApplication.java
@@ -20,17 +20,18 @@ package org.apache.skywalking.apm.testcase.armeria;
import com.linecorp.armeria.common.HttpResponse;
import com.linecorp.armeria.server.Server;
import com.linecorp.armeria.server.ServerBuilder;
-import java.util.concurrent.CompletableFuture;
-import javax.annotation.PostConstruct;
import org.springframework.stereotype.Component;
+import javax.annotation.PostConstruct;
+import java.util.concurrent.CompletableFuture;
+
@Component
public class ServerApplication {
private static final String SUCCESS = "Success";
@PostConstruct
public void init() {
- ServerBuilder sb = new ServerBuilder().http(8085)
+ ServerBuilder sb = Server.builder().http(8085)
.service("/healthCheck", (ctx, res) -> HttpResponse.of(SUCCESS))
.service("/greet/{name}", (ctx, res) -> HttpResponse.of("Hello %s~", ctx.pathParam("name")));
diff --git a/test/plugin/scenarios/armeria-0.96plus-scenario/support-version.list b/test/plugin/scenarios/armeria-0.96plus-scenario/support-version.list
index 0fbfc1d463..0a1e2fa466 100644
--- a/test/plugin/scenarios/armeria-0.96plus-scenario/support-version.list
+++ b/test/plugin/scenarios/armeria-0.96plus-scenario/support-version.list
@@ -14,6 +14,30 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+1.22.0
+1.21.0
+1.20.0
+1.19.0
+1.18.0
+1.17.0
+1.16.0
+1.15.0
+1.14.0
+1.13.0
+1.12.0
+1.11.0
+1.10.0
+1.9.0
+1.8.0
+1.7.0
+1.6.0
+1.5.0
+1.4.0
+1.3.0
+1.2.0
+1.1.0
+1.0.0
+0.99.0
0.98.0
0.97.0
0.96.0