This is an automated email from the ASF dual-hosted git repository.

liuhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new 3320bf91ee Support sort queries on metrics generated by eBPF receiver 
(#12539)
3320bf91ee is described below

commit 3320bf91eeb29cea64c66699e42e98da7d012d74
Author: mrproliu <[email protected]>
AuthorDate: Mon Aug 19 09:34:58 2024 +0800

    Support sort queries on metrics generated by eBPF receiver (#12539)
---
 docs/en/changes/changes.md                         |  1 +
 docs/en/concepts-and-designs/scope-definitions.md  | 17 +-----
 .../apache/skywalking/oal/rt/grammar/OALLexer.g4   |  1 -
 .../apache/skywalking/oal/rt/grammar/OALParser.g4  |  2 +-
 .../K8SEndpointCallRelationDispatcher.java         | 46 --------------
 .../oap/server/core/source/DefaultScopeDefine.java |  1 -
 .../oap/server/core/source/K8SEndpoint.java        |  3 +
 .../server/core/source/K8SEndpointRelation.java    | 70 ----------------------
 .../oap/server/core/source/K8SService.java         |  1 +
 .../oap/server/core/source/K8SServiceInstance.java |  3 +
 .../core/source/K8SServiceInstanceRelation.java    |  4 ++
 .../oap/server/core/source/K8SServiceRelation.java |  2 +
 .../provider/handler/AccessLogServiceHandler.java  | 23 +------
 .../profiling/ebpf/access_log/accesslog-cases.yaml |  7 ++-
 .../expected/dependency-endpoint-reviews.yml       | 40 -------------
 .../expected/metrics-sorted-has-value.yml          | 28 +++++++++
 16 files changed, 50 insertions(+), 199 deletions(-)

diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index ac4b621c13..4ed207c4c4 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -51,6 +51,7 @@
 * Fix format the endpoint name with empty string.
 * Support async query for the composite GraphQL query.
 * Get endpoint list order by timestamp desc.
+* Support sort queries on metrics generated by eBPF receiver.
 
 #### UI
 
diff --git a/docs/en/concepts-and-designs/scope-definitions.md 
b/docs/en/concepts-and-designs/scope-definitions.md
index 1d2e5ab53c..020b10731e 100644
--- a/docs/en/concepts-and-designs/scope-definitions.md
+++ b/docs/en/concepts-and-designs/scope-definitions.md
@@ -529,9 +529,9 @@ following **package**/**protocol** level metric contents.
 | destServiceInstanceName   | The dest pod name in kubernetes.                 
                  |           | string |
 | destLayer                 | The dest layer service in kubernetes.            
                  |           | string |
 
-#### Endpoint and Endpoint Relation
+#### Endpoint 
 
-For `K8SEndpoint` and `K8SEndpointRelation`, they only have the following 
**protocol** level metric contents.
+For `K8SEndpoint`, they only have the following **protocol** level metric 
contents.
 
 | Name                                | Remarks                                
                                                                                
                     | Group Key | Type                 |
 
|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------|-----------|----------------------|
@@ -555,19 +555,6 @@ For `K8SEndpoint` and `K8SEndpointRelation`, they only 
have the following **prot
 | endpointName | The endpoint name detect in kubernetes service.         |     
      | string |
 | duration     | The duration of the service endpoint response latency.  |     
      | long   |
 
-##### SCOPE `K8SEndpointRelation`
-
-| Name               | Remarks                                                 
           | Group Key | Type   |
-|--------------------|--------------------------------------------------------------------|-----------|--------|
-| sourceServiceName  | The source service name in kubernetes.                  
           |           | string |
-| sourceServiceName  | The layer in kubernetes source service.                 
           |           | string |
-| sourceEndpointName | The endpoint name detect in kubernetes source service.  
           |           | string |
-| detectPoint        | Where the relation is detected. The value may be client 
or server. |           | enum   |
-| componentId        | The ID of component used in this call.                  
           |           | string |
-| destServiceName    | The dest service name in kubernetes.                    
           |           | string |
-| destServiceName    | The layer in kubernetes dest service.                   
           |           | string |
-| destEndpointName   | The endpoint name detect in kubernetes dest service.    
           |           | string |
-
 ### SCOPES with `Cilium` Prefix
 
 All metrics starting with `Cilium` are derived from Cilium monitoring by 
Cilium Hubble.
diff --git 
a/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
 
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
index ea6eb5612c..b625de9b45 100644
--- 
a/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
+++ 
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALLexer.g4
@@ -57,7 +57,6 @@ SRC_K8S_SERVICE_INSTANCE: 'K8SServiceInstance';
 SRC_K8S_ENDPOINT: 'K8SEndpoint';
 SRC_K8S_SERVICE_RELATION: 'K8SServiceRelation';
 SRC_K8S_SERVICE_INSTANCE_RELATION: 'K8SServiceInstanceRelation';
-SRC_K8S_ENDPOINT_RELATION: 'K8SEndpointRelation';
 SRC_CILIUM_SERVICE: 'CiliumService';
 SRC_CILIUM_SERVICE_INSTANCE: 'CiliumServiceInstance';
 SRC_CILIUM_ENDPOINT: 'CiliumEndpoint';
diff --git 
a/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
 
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
index 153d0c1f84..f44ddb281d 100644
--- 
a/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
+++ 
b/oap-server/oal-grammar/src/main/antlr4/org/apache/skywalking/oal/rt/grammar/OALParser.g4
@@ -58,7 +58,7 @@ source
       SRC_BROWSER_APP_PERF | SRC_BROWSER_APP_PAGE_PERF | 
SRC_BROWSER_APP_SINGLE_VERSION_PERF |
       SRC_BROWSER_APP_TRAFFIC | SRC_BROWSER_APP_PAGE_TRAFFIC | 
SRC_BROWSER_APP_SINGLE_VERSION_TRAFFIC |
       SRC_EVENT | SRC_MQ_ACCESS | SRC_MQ_ENDPOINT_ACCESS |
-      SRC_K8S_SERVICE | SRC_K8S_SERVICE_INSTANCE | SRC_K8S_ENDPOINT | 
SRC_K8S_SERVICE_RELATION | SRC_K8S_SERVICE_INSTANCE_RELATION | 
SRC_K8S_ENDPOINT_RELATION |
+      SRC_K8S_SERVICE | SRC_K8S_SERVICE_INSTANCE | SRC_K8S_ENDPOINT | 
SRC_K8S_SERVICE_RELATION | SRC_K8S_SERVICE_INSTANCE_RELATION |
       SRC_CILIUM_SERVICE | SRC_CILIUM_SERVICE_INSTANCE | SRC_CILIUM_ENDPOINT | 
SRC_CILIUM_SERVICE_RELATION | SRC_CILIUM_SERVICE_INSTANCE_RELATION | 
SRC_CILIUM_ENDPOINT_RELATION
     ;
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/K8SEndpointCallRelationDispatcher.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/K8SEndpointCallRelationDispatcher.java
deleted file mode 100644
index af1033539d..0000000000
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/K8SEndpointCallRelationDispatcher.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.oap.server.core.analysis.manual.relation.endpoint;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-import 
org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor;
-import org.apache.skywalking.oap.server.core.source.K8SEndpointRelation;
-
-public class K8SEndpointCallRelationDispatcher implements 
SourceDispatcher<K8SEndpointRelation> {
-
-    @Override
-    public void dispatch(K8SEndpointRelation source) {
-        switch (source.getDetectPoint()) {
-            case SERVER:
-                serverSide(source);
-                break;
-            default:
-        }
-    }
-
-    private void serverSide(K8SEndpointRelation source) {
-        EndpointRelationServerSideMetrics metrics = new 
EndpointRelationServerSideMetrics();
-        metrics.setTimeBucket(source.getTimeBucket());
-        metrics.setSourceEndpoint(source.getSourceEndpointId());
-        metrics.setDestEndpoint(source.getDestEndpointId());
-        metrics.setComponentId(source.getComponentId());
-        metrics.setEntityId(source.getEntityId());
-        MetricsStreamProcessor.getInstance().in(metrics);
-    }
-}
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
index b7ea73c6ee..9077177882 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
@@ -135,7 +135,6 @@ public class DefaultScopeDefine {
     public static final int K8S_SERVICE_RELATION = 74;
     public static final int K8S_SERVICE_INSTANCE_RELATION = 75;
     public static final int K8S_ENDPOINT = 76;
-    public static final int K8S_ENDPOINT_REALATION = 77;
 
     public static final int CILIUM_SERVICE = 78;
     public static final int CILIUM_SERVICE_INSTANCE = 79;
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpoint.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpoint.java
index 885831a0cb..9f4715ca29 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpoint.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpoint.java
@@ -31,9 +31,12 @@ import static 
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.K8
 public class K8SEndpoint extends K8SMetrics.ProtocolMetrics {
     private volatile String entityId;
 
+    @ScopeDefaultColumn.DefinedByField(columnName = "service_id", 
groupByCondInTopN = true)
     private String serviceId;
+    @ScopeDefaultColumn.DefinedByField(columnName = "service_name", 
requireDynamicActive = true)
     private String serviceName;
     private Layer layer;
+    @ScopeDefaultColumn.DefinedByField(columnName = "name", 
requireDynamicActive = true)
     private String endpointName;
 
     private long duration;
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpointRelation.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpointRelation.java
deleted file mode 100644
index b466222ef2..0000000000
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SEndpointRelation.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.oap.server.core.source;
-
-import lombok.Data;
-import org.apache.skywalking.oap.server.core.analysis.IDManager;
-import org.apache.skywalking.oap.server.core.analysis.Layer;
-
-import static 
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT_RELATION_CATALOG_NAME;
-import static 
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.K8S_ENDPOINT_REALATION;
-
-@Data
-@ScopeDeclaration(id = K8S_ENDPOINT_REALATION, name = "K8SEndpointRelation", 
catalog = ENDPOINT_RELATION_CATALOG_NAME)
[email protected](fieldName = "entityId", columnName 
= "entity_id", isID = true, type = String.class)
-public class K8SEndpointRelation extends K8SMetrics.ProtocolMetrics {
-    private volatile String entityId;
-
-    private String sourceServiceId;
-    private String sourceServiceName;
-    private Layer sourceLayer;
-    private String sourceEndpointId;
-    private String sourceEndpointName;
-
-    private DetectPoint detectPoint;
-    private int componentId;
-
-    private String destServiceId;
-    private String destServiceName;
-    private Layer destLayer;
-    private String destEndpointId;
-    private String destEndpointName;
-
-    @Override
-    public int scope() {
-        return K8S_ENDPOINT_REALATION;
-    }
-
-    @Override
-    public String getEntityId() {
-        return entityId;
-    }
-
-    @Override
-    public void prepare() {
-        sourceServiceId = IDManager.ServiceID.buildId(sourceServiceName, 
sourceLayer.isNormal());
-        sourceEndpointId = IDManager.EndpointID.buildId(sourceServiceId, 
sourceEndpointName);
-        destServiceId = IDManager.ServiceID.buildId(destServiceName, 
destLayer.isNormal());
-        destEndpointId = IDManager.EndpointID.buildId(destServiceId, 
destEndpointName);
-
-        entityId = IDManager.EndpointID.buildRelationId(new 
IDManager.EndpointID.EndpointRelationDefine(
-            sourceServiceId, sourceEndpointName, destServiceId, 
destEndpointName
-        ));
-    }
-}
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
index c7f4bb57b0..ab0a6e9eb0 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SService.java
@@ -32,6 +32,7 @@ public class K8SService extends K8SMetrics {
 
     private volatile String entityId;
 
+    @ScopeDefaultColumn.DefinedByField(columnName = "name", 
requireDynamicActive = true)
     private String name;
     public Layer layer;
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstance.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstance.java
index 151d90999b..bb9a20292d 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstance.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstance.java
@@ -31,8 +31,11 @@ import static 
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SE
 public class K8SServiceInstance extends K8SMetrics {
     private volatile String entityId;
 
+    @ScopeDefaultColumn.DefinedByField(columnName = "service_id")
     private String serviceId;
+    @ScopeDefaultColumn.DefinedByField(columnName = "service_name", 
requireDynamicActive = true)
     private String serviceName;
+    @ScopeDefaultColumn.DefinedByField(columnName = "name", 
requireDynamicActive = true)
     private String serviceInstanceName;
     public Layer layer;
     private DetectPoint detectPoint;
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstanceRelation.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstanceRelation.java
index 291aa23f03..02eabb4b3c 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstanceRelation.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceInstanceRelation.java
@@ -33,16 +33,20 @@ public class K8SServiceInstanceRelation extends K8SMetrics {
     private volatile String entityId;
 
     private String sourceServiceId;
+    @ScopeDefaultColumn.DefinedByField(columnName = "source_service_name", 
requireDynamicActive = true)
     private String sourceServiceName;
     private String sourceServiceInstanceId;
+    @ScopeDefaultColumn.DefinedByField(columnName = 
"source_service_instance_name", requireDynamicActive = true)
     private String sourceServiceInstanceName;
     private Layer sourceLayer;
 
     private DetectPoint detectPoint;
 
     private String destServiceId;
+    @ScopeDefaultColumn.DefinedByField(columnName = "dest_service_name", 
requireDynamicActive = true)
     private String destServiceName;
     private String destServiceInstanceId;
+    @ScopeDefaultColumn.DefinedByField(columnName = 
"dest_service_instance_name", requireDynamicActive = true)
     private String destServiceInstanceName;
     private Layer destLayer;
 
diff --git 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceRelation.java
 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceRelation.java
index e3dba1bc04..e2ccdeda27 100644
--- 
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceRelation.java
+++ 
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/K8SServiceRelation.java
@@ -34,6 +34,7 @@ public class K8SServiceRelation extends K8SMetrics {
     private volatile String entityId;
 
     private String sourceServiceId;
+    @ScopeDefaultColumn.DefinedByField(columnName = "source_name", 
requireDynamicActive = true)
     private String sourceServiceName;
     private Layer sourceLayer;
 
@@ -42,6 +43,7 @@ public class K8SServiceRelation extends K8SMetrics {
     private AccessLogConnectionTLSMode tlsMode;
 
     private String destServiceId;
+    @ScopeDefaultColumn.DefinedByField(columnName = "dest_name", 
requireDynamicActive = true)
     private String destServiceName;
     private Layer destLayer;
 
diff --git 
a/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java
 
b/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java
index 9d6b769b22..7a0e68b158 100644
--- 
a/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java
+++ 
b/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/AccessLogServiceHandler.java
@@ -52,7 +52,6 @@ import org.apache.skywalking.oap.server.core.analysis.Layer;
 import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
 import org.apache.skywalking.oap.server.core.config.NamingControl;
 import org.apache.skywalking.oap.server.core.source.K8SEndpoint;
-import org.apache.skywalking.oap.server.core.source.K8SEndpointRelation;
 import org.apache.skywalking.oap.server.core.source.K8SMetrics;
 import org.apache.skywalking.oap.server.core.source.K8SService;
 import org.apache.skywalking.oap.server.core.source.K8SServiceInstance;
@@ -332,7 +331,7 @@ public class AccessLogServiceHandler extends 
EBPFAccessLogServiceGrpc.EBPFAccess
 
         // endpoint, endpoint relation
         final String endpointName = buildProtocolEndpointName(connection, 
protocolLog);
-        Stream.of(connection.toEndpoint(endpointName, success, duration), 
connection.toEndpointRelation(endpointName, success))
+        Stream.of(connection.toEndpoint(endpointName, success, duration))
             .filter(Objects::nonNull)
             .forEach(metric -> {
                 metric.setType(protocol.getType());
@@ -648,26 +647,6 @@ public class AccessLogServiceHandler extends 
EBPFAccessLogServiceGrpc.EBPFAccess
             return endpoint;
         }
 
-        public K8SEndpointRelation toEndpointRelation(String endpointName, 
boolean success) {
-            final Tuple2<KubernetesProcessAddress, KubernetesProcessAddress> 
tuple = convertSourceAndDestAddress();
-            final String sourceServiceName = 
buildServiceNameByAddress(nodeInfo, tuple._1);
-            final String destServiceName = buildServiceNameByAddress(nodeInfo, 
tuple._2);
-
-            final K8SEndpointRelation endpointRelation = new 
K8SEndpointRelation();
-            endpointRelation.setSourceServiceName(sourceServiceName);
-            
endpointRelation.setSourceEndpointName(namingControl.formatEndpointName(sourceServiceName,
 endpointName));
-            endpointRelation.setSourceLayer(Layer.K8S_SERVICE);
-
-            endpointRelation.setDetectPoint(parseToSourceRole());
-            endpointRelation.setComponentId(buildComponentId());
-
-            endpointRelation.setDestServiceName(destServiceName);
-            
endpointRelation.setDestEndpointName(namingControl.formatEndpointName(destServiceName,
 endpointName));
-            endpointRelation.setDestLayer(Layer.K8S_SERVICE);
-            endpointRelation.setSuccess(success);
-            return endpointRelation;
-        }
-
         private int buildComponentId() {
             boolean isTLS = tlsMode == AccessLogConnectionTLSMode.TLS;
             switch (protocolType) {
diff --git a/test/e2e-v2/cases/profiling/ebpf/access_log/accesslog-cases.yaml 
b/test/e2e-v2/cases/profiling/ebpf/access_log/accesslog-cases.yaml
index 50a5603362..56f89cc351 100644
--- a/test/e2e-v2/cases/profiling/ebpf/access_log/accesslog-cases.yaml
+++ b/test/e2e-v2/cases/profiling/ebpf/access_log/accesslog-cases.yaml
@@ -32,9 +32,6 @@ cases:
   # service endpoints
   - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 endpoint list --service-name=details.default
     expected: expected/service-endpoint-reviews.yml
-  # endpoints topology
-  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency endpoint --service-name=details.default --endpoint-name=/details/0
-    expected: expected/dependency-endpoint-reviews.yml
 
   # service level metrics
   - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=kubernetes_service_connect_cpm 
--service-name=productpage.default
@@ -91,12 +88,16 @@ cases:
       instance_name=$(swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance ls --service-name reviews.default | yq '.[0].name' -)
       swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=kubernetes_service_instance_http_call_cpm 
--service-name=reviews.default --instance-name=$instance_name
     expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec 
--expression="top_n(kubernetes_service_instance_write_l4_duration,10,des)" 
--service-name=details.default
+    expected: expected/metrics-sorted-has-value.yml
 
   # service endpoint level metrics
   - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=kubernetes_service_endpoint_call_cpm 
--service-name=details.default --endpoint-name=/details/0
     expected: expected/metrics-has-value.yml
   - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=kubernetes_service_endpoint_http_call_cpm 
--service-name=details.default --endpoint-name=/details/0
     expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec 
--expression="top_n(kubernetes_service_endpoint_call_duration,10,des)" 
--service-name=details.default
+    expected: expected/metrics-sorted-has-value.yml
 
   # service relation metrics
   - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=kubernetes_service_relation_connect_cpm 
--service-name=productpage.default --dest-service-name=details.default
diff --git 
a/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-endpoint-reviews.yml
 
b/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-endpoint-reviews.yml
deleted file mode 100644
index a0bc6766a3..0000000000
--- 
a/test/e2e-v2/cases/profiling/ebpf/access_log/expected/dependency-endpoint-reviews.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-# 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.
-
-nodes:
-{{- contains .nodes }}
-- id: {{ b64enc "productpage.default" }}.1_{{ b64enc "/details/0" }}
-  name: /details/0
-  serviceid: {{ b64enc "productpage.default" }}.1
-  servicename: productpage.default
-  type: ""
-  isreal: true
-- id: {{ b64enc "details.default" }}.1_{{ b64enc "/details/0" }}
-  name: /details/0
-  serviceid: {{ b64enc "details.default" }}.1
-  servicename: details.default
-  type: ""
-  isreal: true
-{{- end }}
-calls:
-{{- contains .calls }}
-- source: {{ b64enc "productpage.default" }}.1_{{ b64enc "/details/0" }}
-  sourcecomponents: []
-  target: {{ b64enc "details.default" }}.1_{{ b64enc "/details/0" }}
-  targetcomponents: []
-  id: {{ b64enc "productpage.default" }}.1-{{ b64enc "/details/0" }}-{{ b64enc 
"details.default" }}.1-{{ b64enc "/details/0" }}
-  detectpoints:
-    - SERVER
-{{- end }}
diff --git 
a/test/e2e-v2/cases/profiling/ebpf/access_log/expected/metrics-sorted-has-value.yml
 
b/test/e2e-v2/cases/profiling/ebpf/access_log/expected/metrics-sorted-has-value.yml
new file mode 100644
index 0000000000..09aa529344
--- /dev/null
+++ 
b/test/e2e-v2/cases/profiling/ebpf/access_log/expected/metrics-sorted-has-value.yml
@@ -0,0 +1,28 @@
+# 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.
+
+type: SORTED_LIST
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
\ No newline at end of file

Reply via email to