You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by lu...@apache.org on 2022/11/13 14:38:29 UTC

[skywalking-banyandb] branch main updated: Update OAP e2e cases and images (#211)

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

lujiajing pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git


The following commit(s) were added to refs/heads/main by this push:
     new c130222  Update OAP e2e cases and images (#211)
c130222 is described below

commit c1302224dcb7e4113b0aef59d9005dd38f1eee30
Author: Jiajing LU <lu...@gmail.com>
AuthorDate: Sun Nov 13 22:38:24 2022 +0800

    Update OAP e2e cases and images (#211)
    
    * update e2e cases
    * update ebpf
    * remove comment
    * fix lint
    * Update test/e2e-v2/script/env
    * remove empty lines
    
    Co-authored-by: 吴晟 Wu Sheng <wu...@foxmail.com>
    Co-authored-by: Gao Hongtao <ha...@gmail.com>
---
 .github/workflows/e2e.storage.yml                  |   5 +-
 test/docker/base-compose.yml                       |   4 +-
 .../profiling/ebpf/{ => oncpu}/Dockerfile.sqrt     |   0
 .../ebpf/{ => oncpu}/banyandb/docker-compose.yml   |   0
 .../profiling/ebpf/{ => oncpu}/banyandb/e2e.yaml   |   2 +-
 .../profiling/ebpf/{ => oncpu}/docker-compose.yml  |  12 +-
 .../ebpf/{ => oncpu}/expected/instance.yml         |   0
 .../expected/process-estimate-scale.yml            |   0
 .../ebpf/{ => oncpu}/expected/process.yml          |   0
 .../{ => oncpu}/expected/profiling-analysis.yml    |   0
 .../expected/profiling-create-prepare.yml          |   0
 .../ebpf/{ => oncpu}/expected/profiling-create.yml |   0
 .../expected/profiling-schedule-list.yml           |   0
 .../{ => oncpu}/expected/profiling-task-list.yml   |   2 +
 .../ebpf/{ => oncpu}/expected/service.yml          |   0
 .../ebpf/{ => oncpu}/profiling-cases.yaml          |   0
 .../cases/profiling/ebpf/{ => oncpu}/sqrt.go       |   2 +-
 test/e2e-v2/cases/storage/banyandb/e2e.yaml        |   5 +-
 .../expected/dependency-endpoint-consumer.yml      |  53 ++++++++
 ...rvices.yml => dependency-endpoint-provider.yml} |  23 ++--
 ...ndency-services.yml => dependency-instance.yml} |  22 ++--
 ...rvices.yml => dependency-services-consumer.yml} |  19 ++-
 ...rvices.yml => dependency-services-provider.yml} |  11 ++
 .../expected/empty-traces-list.yml}                |   2 +-
 .../expected/metrics-has-value-percentile.yml}     |  35 +++++-
 .../cases/storage/expected/metrics-has-value.yml   |   2 +-
 ...-endpoint.yml => service-endpoint-consumer.yml} |   6 +-
 ...has-value.yml => service-endpoint-provider.yml} |   6 +-
 ...-instance.yml => service-instance-consumer.yml} |  10 +-
 ...-instance.yml => service-instance-provider.yml} |   6 +-
 .../cases/storage/expected/trace-info-detail.yml   |  68 -----------
 .../cases/storage/expected/trace-users-detail.yml  |  57 ++++++++-
 test/e2e-v2/cases/storage/expected/traces-list.yml |   6 +-
 test/e2e-v2/cases/storage/storage-cases.yaml       | 135 +++++++++++++++++----
 test/e2e-v2/script/env                             |  13 +-
 .../prepare/setup-e2e-shell/install-swctl.sh       |  14 ++-
 .../script/prepare/setup-e2e-shell/install-yq.sh   |   2 +-
 .../script/prepare/setup-e2e-shell/install.sh      |   4 +-
 test/e2e-v2/script/prepare/setup-oap/log4j2.xml    |   1 -
 39 files changed, 357 insertions(+), 170 deletions(-)

diff --git a/.github/workflows/e2e.storage.yml b/.github/workflows/e2e.storage.yml
index 9604d0a..1aec3f6 100644
--- a/.github/workflows/e2e.storage.yml
+++ b/.github/workflows/e2e.storage.yml
@@ -17,8 +17,7 @@
 name: OAP-E2E
 
 on:
-  # TODO:// uncomment once the new APIs are supported by OAP
-  # pull_request:
+  pull_request:
   schedule:
     - cron: '0 18 * * *'
 
@@ -45,7 +44,7 @@ jobs:
           - name: Trace Profiling BanyanDB
             config: test/e2e-v2/cases/profiling/trace/banyandb/e2e.yaml
           - name: eBPF Profiling BanyanDB
-            config: test/e2e-v2/cases/profiling/ebpf/banyandb/e2e.yaml
+            config: test/e2e-v2/cases/profiling/ebpf/oncpu/banyandb/e2e.yaml
           - name: Event BanyanDB
             config: test/e2e-v2/cases/event/banyandb/e2e.yaml
     env:
diff --git a/test/docker/base-compose.yml b/test/docker/base-compose.yml
index e6893a2..908b269 100644
--- a/test/docker/base-compose.yml
+++ b/test/docker/base-compose.yml
@@ -44,9 +44,7 @@ services:
       SW_STORAGE_ES_CLUSTER_NODES: es:9200
       SW_JDBC_URL: jdbc:mysql://mysql:3306/swtest
       SW_STORAGE_INFLUXDB_URL: http://influxdb:8086
-      SW_STORAGE_BANYANDB_HOST: banyandb
-      SW_STORAGE_IOTDB_HOST: iotdb
-      SW_STORAGE_IOTDB_SESSIONPOOL_SIZE: 2
+      SW_STORAGE_BANYANDB_HOST: "banyandb"
       SW_CONFIG_ETCD_PERIOD: 1
       SW_CONFIG_ETCD_ENDPOINTS: http://etcd:2379
       SW_CLUSTER_ETCD_ENDPOINTS: http://etcd:2379
diff --git a/test/e2e-v2/cases/profiling/ebpf/Dockerfile.sqrt b/test/e2e-v2/cases/profiling/ebpf/oncpu/Dockerfile.sqrt
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/Dockerfile.sqrt
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/Dockerfile.sqrt
diff --git a/test/e2e-v2/cases/profiling/ebpf/banyandb/docker-compose.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/banyandb/docker-compose.yml
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/banyandb/docker-compose.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/banyandb/docker-compose.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/banyandb/e2e.yaml b/test/e2e-v2/cases/profiling/ebpf/oncpu/banyandb/e2e.yaml
similarity index 93%
rename from test/e2e-v2/cases/profiling/ebpf/banyandb/e2e.yaml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/banyandb/e2e.yaml
index 7a52a5d..f8fdca0 100644
--- a/test/e2e-v2/cases/profiling/ebpf/banyandb/e2e.yaml
+++ b/test/e2e-v2/cases/profiling/ebpf/oncpu/banyandb/e2e.yaml
@@ -19,7 +19,7 @@ setup:
   env: compose
   file: docker-compose.yml
   timeout: 20m
-  init-system-environment: ../../../../script/env
+  init-system-environment: ../../../../../script/env
   steps:
     - name: set PATH
       command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
diff --git a/test/e2e-v2/cases/profiling/ebpf/docker-compose.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/docker-compose.yml
similarity index 93%
rename from test/e2e-v2/cases/profiling/ebpf/docker-compose.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/docker-compose.yml
index 632e7c9..a41db1f 100644
--- a/test/e2e-v2/cases/profiling/ebpf/docker-compose.yml
+++ b/test/e2e-v2/cases/profiling/ebpf/oncpu/docker-compose.yml
@@ -16,16 +16,16 @@
 version: '2.1'
 
 services:
-  banyandb:
-    extends:
-      file: ../../../script/docker-compose/base-compose.yml
-      service: banyandb
-
   oap:
     extends:
-      file: ../../../script/docker-compose/base-compose.yml
+      file: ../../../../script/docker-compose/base-compose.yml
       service: oap
 
+  banyandb:
+    extends:
+      file: ../../../../script/docker-compose/base-compose.yml
+      service: banyandb
+
   sqrt:
     build:
       context: .
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/instance.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/instance.yml
similarity index 100%
copy from test/e2e-v2/cases/profiling/ebpf/expected/instance.yml
copy to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/instance.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/process-estimate-scale.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/process-estimate-scale.yml
similarity index 100%
copy from test/e2e-v2/cases/profiling/ebpf/expected/process-estimate-scale.yml
copy to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/process-estimate-scale.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/process.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/process.yml
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/expected/process.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/process.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/profiling-analysis.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-analysis.yml
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/expected/profiling-analysis.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-analysis.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/profiling-create-prepare.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-create-prepare.yml
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/expected/profiling-create-prepare.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-create-prepare.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/profiling-create.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-create.yml
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/expected/profiling-create.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-create.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/profiling-schedule-list.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-schedule-list.yml
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/expected/profiling-schedule-list.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-schedule-list.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/profiling-task-list.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-task-list.yml
similarity index 94%
rename from test/e2e-v2/cases/profiling/ebpf/expected/profiling-task-list.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-task-list.yml
index f561c46..faa04bc 100644
--- a/test/e2e-v2/cases/profiling/ebpf/expected/profiling-task-list.yml
+++ b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/profiling-task-list.yml
@@ -17,6 +17,8 @@
 - taskid: {{ notEmpty .taskid }}
   serviceid: {{ b64enc "sqrt" }}.1
   servicename: sqrt
+  serviceinstanceid: null
+  serviceinstancename: null
   processlabels:
     {{- contains .processlabels }}
     - e2e-label1
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/service.yml b/test/e2e-v2/cases/profiling/ebpf/oncpu/expected/service.yml
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/expected/service.yml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/expected/service.yml
diff --git a/test/e2e-v2/cases/profiling/ebpf/profiling-cases.yaml b/test/e2e-v2/cases/profiling/ebpf/oncpu/profiling-cases.yaml
similarity index 100%
rename from test/e2e-v2/cases/profiling/ebpf/profiling-cases.yaml
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/profiling-cases.yaml
diff --git a/test/e2e-v2/cases/profiling/ebpf/sqrt.go b/test/e2e-v2/cases/profiling/ebpf/oncpu/sqrt.go
similarity index 93%
rename from test/e2e-v2/cases/profiling/ebpf/sqrt.go
rename to test/e2e-v2/cases/profiling/ebpf/oncpu/sqrt.go
index 7670d49..7e3189a 100644
--- a/test/e2e-v2/cases/profiling/ebpf/sqrt.go
+++ b/test/e2e-v2/cases/profiling/ebpf/oncpu/sqrt.go
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Package main generates system load
+// Package main is the entry point of the process for EBPF profiling
 package main
 
 import (
diff --git a/test/e2e-v2/cases/storage/banyandb/e2e.yaml b/test/e2e-v2/cases/storage/banyandb/e2e.yaml
index 7c7bebb..b9e094c 100644
--- a/test/e2e-v2/cases/storage/banyandb/e2e.yaml
+++ b/test/e2e-v2/cases/storage/banyandb/e2e.yaml
@@ -32,8 +32,11 @@ trigger:
   action: http
   interval: 3s
   times: 10
-  url: http://${consumer_host}:${consumer_9092}/info
+  url: http://${consumer_host}:${consumer_9092}/users
   method: POST
+  body: '{"id":"123","name":"skywalking"}'
+  headers:
+    "Content-Type": "application/json"
 
 verify:
   # verify with retry strategy
diff --git a/test/e2e-v2/cases/storage/expected/dependency-endpoint-consumer.yml b/test/e2e-v2/cases/storage/expected/dependency-endpoint-consumer.yml
new file mode 100644
index 0000000..8f5a8b2
--- /dev/null
+++ b/test/e2e-v2/cases/storage/expected/dependency-endpoint-consumer.yml
@@ -0,0 +1,53 @@
+# 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 "User" }}.0_{{ b64enc "User" }}
+  name: User
+  serviceid: {{ b64enc "User" }}.0
+  servicename: User
+  type: ""
+  isreal: false
+- id: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "POST:/users" }}
+  name: POST:/users
+  serviceid: {{ b64enc "e2e-service-consumer" }}.1
+  servicename: e2e-service-consumer
+  type: ""
+  isreal: true
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "POST:/users" }}
+  name: POST:/users
+  serviceid: {{ b64enc "e2e-service-provider" }}.1
+  servicename: e2e-service-provider
+  type: ""
+  isreal: true
+{{- end }}
+calls:
+{{- contains .calls }}
+- source: {{ b64enc "User" }}.0_{{ b64enc "User" }}
+  sourcecomponents: []
+  target: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "POST:/users" }}
+  targetcomponents: []
+  id: {{ b64enc "User" }}.0-{{ b64enc "User" }}-{{ b64enc "e2e-service-consumer" }}.1-{{ b64enc "POST:/users" }}
+  detectpoints:
+    - SERVER
+- source: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "POST:/users" }}
+  sourcecomponents: []
+  target: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "POST:/users" }}
+  targetcomponents: []
+  id: {{ b64enc "e2e-service-consumer" }}.1-{{ b64enc "POST:/users" }}-{{ b64enc "e2e-service-provider" }}.1-{{ b64enc "POST:/users" }}
+  detectpoints:
+    - SERVER
+{{- end }}
diff --git a/test/e2e-v2/cases/storage/expected/dependency-services.yml b/test/e2e-v2/cases/storage/expected/dependency-endpoint-provider.yml
similarity index 59%
copy from test/e2e-v2/cases/storage/expected/dependency-services.yml
copy to test/e2e-v2/cases/storage/expected/dependency-endpoint-provider.yml
index aa6e2fc..3835336 100644
--- a/test/e2e-v2/cases/storage/expected/dependency-services.yml
+++ b/test/e2e-v2/cases/storage/expected/dependency-endpoint-provider.yml
@@ -15,23 +15,26 @@
 
 nodes:
 {{- contains .nodes }}
-- id: {{ b64enc "e2e-service-provider"}}.1
-  name: e2e-service-provider
-  type: Tomcat
+- id: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "POST:/users" }}
+  name: POST:/users
+  serviceid: {{ b64enc "e2e-service-consumer" }}.1
+  servicename: e2e-service-consumer
+  type: ""
   isreal: true
-- id: {{ b64enc "e2e-service-consumer"}}.1
-  name: e2e-service-consumer
-  type: Tomcat
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "POST:/users" }}
+  name: POST:/users
+  serviceid: {{ b64enc "e2e-service-provider" }}.1
+  servicename: e2e-service-provider
+  type: ""
   isreal: true
 {{- end }}
 calls:
 {{- contains .calls }}
-- source: {{ b64enc "e2e-service-consumer"}}.1
+- source: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "POST:/users" }}
   sourcecomponents: []
-  target: {{ b64enc "e2e-service-provider"}}.1
+  target: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "POST:/users" }}
   targetcomponents: []
-  id: {{ b64enc "e2e-service-consumer"}}.1-{{ b64enc "e2e-service-provider"}}.1
+  id: {{ b64enc "e2e-service-consumer" }}.1-{{ b64enc "POST:/users" }}-{{ b64enc "e2e-service-provider" }}.1-{{ b64enc "POST:/users" }}
   detectpoints:
-    - CLIENT
     - SERVER
 {{- end }}
diff --git a/test/e2e-v2/cases/storage/expected/dependency-services.yml b/test/e2e-v2/cases/storage/expected/dependency-instance.yml
similarity index 60%
copy from test/e2e-v2/cases/storage/expected/dependency-services.yml
copy to test/e2e-v2/cases/storage/expected/dependency-instance.yml
index aa6e2fc..d3b9547 100644
--- a/test/e2e-v2/cases/storage/expected/dependency-services.yml
+++ b/test/e2e-v2/cases/storage/expected/dependency-instance.yml
@@ -15,22 +15,26 @@
 
 nodes:
 {{- contains .nodes }}
-- id: {{ b64enc "e2e-service-provider"}}.1
-  name: e2e-service-provider
-  type: Tomcat
+- id: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "consumer1" }}
+  name: consumer1
+  serviceid: {{ b64enc "e2e-service-consumer" }}.1
+  servicename: e2e-service-consumer
+  type: ""
   isreal: true
-- id: {{ b64enc "e2e-service-consumer"}}.1
-  name: e2e-service-consumer
-  type: Tomcat
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
+  name: provider1
+  serviceid: {{ b64enc "e2e-service-provider" }}.1
+  servicename: e2e-service-provider
+  type: "Tomcat"
   isreal: true
 {{- end }}
 calls:
 {{- contains .calls }}
-- source: {{ b64enc "e2e-service-consumer"}}.1
+- source: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "consumer1" }}
   sourcecomponents: []
-  target: {{ b64enc "e2e-service-provider"}}.1
+  target: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
   targetcomponents: []
-  id: {{ b64enc "e2e-service-consumer"}}.1-{{ b64enc "e2e-service-provider"}}.1
+  id: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "consumer1" }}-{{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
   detectpoints:
     - CLIENT
     - SERVER
diff --git a/test/e2e-v2/cases/storage/expected/dependency-services.yml b/test/e2e-v2/cases/storage/expected/dependency-services-consumer.yml
similarity index 82%
copy from test/e2e-v2/cases/storage/expected/dependency-services.yml
copy to test/e2e-v2/cases/storage/expected/dependency-services-consumer.yml
index aa6e2fc..11ba084 100644
--- a/test/e2e-v2/cases/storage/expected/dependency-services.yml
+++ b/test/e2e-v2/cases/storage/expected/dependency-services-consumer.yml
@@ -15,14 +15,18 @@
 
 nodes:
 {{- contains .nodes }}
-- id: {{ b64enc "e2e-service-provider"}}.1
-  name: e2e-service-provider
-  type: Tomcat
-  isreal: true
+- id: {{ b64enc "User"}}.0
+  name: User
+  type: USER
+  isreal: false
 - id: {{ b64enc "e2e-service-consumer"}}.1
   name: e2e-service-consumer
   type: Tomcat
   isreal: true
+- id: {{ b64enc "e2e-service-provider"}}.1
+  name: e2e-service-provider
+  type: Tomcat
+  isreal: true
 {{- end }}
 calls:
 {{- contains .calls }}
@@ -34,4 +38,11 @@ calls:
   detectpoints:
     - CLIENT
     - SERVER
+- source: {{ b64enc "User" }}.0
+  sourcecomponents: []
+  target: {{ b64enc "e2e-service-consumer"}}.1
+  targetcomponents: []
+  id: {{ b64enc "User" }}.0-{{ b64enc "e2e-service-consumer"}}.1
+  detectpoints:
+    - SERVER
 {{- end }}
diff --git a/test/e2e-v2/cases/storage/expected/dependency-services.yml b/test/e2e-v2/cases/storage/expected/dependency-services-provider.yml
similarity index 80%
rename from test/e2e-v2/cases/storage/expected/dependency-services.yml
rename to test/e2e-v2/cases/storage/expected/dependency-services-provider.yml
index aa6e2fc..600dd6d 100644
--- a/test/e2e-v2/cases/storage/expected/dependency-services.yml
+++ b/test/e2e-v2/cases/storage/expected/dependency-services-provider.yml
@@ -23,6 +23,10 @@ nodes:
   name: e2e-service-consumer
   type: Tomcat
   isreal: true
+- id: {{ b64enc "localhost:-1" }}.0
+  name: localhost:-1
+  type: H2
+  isreal: false
 {{- end }}
 calls:
 {{- contains .calls }}
@@ -34,4 +38,11 @@ calls:
   detectpoints:
     - CLIENT
     - SERVER
+- source: {{ b64enc "e2e-service-provider" }}.1
+  sourcecomponents: []
+  target: {{ b64enc "localhost:-1"}}.0
+  targetcomponents: []
+  id: {{ b64enc "e2e-service-provider" }}.1-{{ b64enc "localhost:-1"}}.0
+  detectpoints:
+    - CLIENT
 {{- end }}
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/process-estimate-scale.yml b/test/e2e-v2/cases/storage/expected/empty-traces-list.yml
similarity index 98%
rename from test/e2e-v2/cases/profiling/ebpf/expected/process-estimate-scale.yml
rename to test/e2e-v2/cases/storage/expected/empty-traces-list.yml
index a4bfca0..294a89e 100644
--- a/test/e2e-v2/cases/profiling/ebpf/expected/process-estimate-scale.yml
+++ b/test/e2e-v2/cases/storage/expected/empty-traces-list.yml
@@ -13,4 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-1
\ No newline at end of file
+traces: []
diff --git a/test/e2e-v2/cases/profiling/ebpf/expected/instance.yml b/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
similarity index 58%
rename from test/e2e-v2/cases/profiling/ebpf/expected/instance.yml
rename to test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
index 5f27650..ef17490 100644
--- a/test/e2e-v2/cases/profiling/ebpf/expected/instance.yml
+++ b/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
@@ -14,9 +14,34 @@
 # limitations under the License.
 
 {{- contains . }}
-- id: {{ b64enc "sqrt" }}.1_{{ b64enc "test-instance" }}
-  name: test-instance
-  attributes: []
-  language: UNKNOWN
-  instanceuuid: {{ notEmpty .instanceuuid }}
+- key: 0
+  value:
+  {{- contains .value }}
+  - key: {{ notEmpty .key }}
+    value: {{ ge .value 1 }}
+  {{- end }}
+- key: 1
+  value:
+  {{- contains .value }}
+  - key: {{ notEmpty .key }}
+    value: {{ ge .value 1 }}
+  {{- end }}
+- key: 2
+  value:
+  {{- contains .value }}
+  - key: {{ notEmpty .key }}
+    value: {{ ge .value 1 }}
+  {{- end }}
+- key: 3
+  value:
+  {{- contains .value }}
+  - key: {{ notEmpty .key }}
+    value: {{ ge .value 1 }}
+  {{- end }}
+- key: 4
+  value:
+  {{- contains .value }}
+  - key: {{ notEmpty .key }}
+    value: {{ ge .value 1 }}
+  {{- end }}
 {{- end }}
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml b/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
index 5359e6d..d9c4985 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
@@ -16,4 +16,4 @@
 {{- contains . }}
 - key: {{ notEmpty .key }}
   value: {{ ge .value 1 }}
-{{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/test/e2e-v2/cases/storage/expected/service-endpoint.yml b/test/e2e-v2/cases/storage/expected/service-endpoint-consumer.yml
similarity index 87%
rename from test/e2e-v2/cases/storage/expected/service-endpoint.yml
rename to test/e2e-v2/cases/storage/expected/service-endpoint-consumer.yml
index d2afb45..cedf79a 100644
--- a/test/e2e-v2/cases/storage/expected/service-endpoint.yml
+++ b/test/e2e-v2/cases/storage/expected/service-endpoint-consumer.yml
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains .}}
-- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "POST:/info" }}
-  name: POST:/info
+{{- contains . }}
+- id: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "POST:/users" }}
+  name: POST:/users
 {{- end}}
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml b/test/e2e-v2/cases/storage/expected/service-endpoint-provider.yml
similarity index 88%
copy from test/e2e-v2/cases/storage/expected/metrics-has-value.yml
copy to test/e2e-v2/cases/storage/expected/service-endpoint-provider.yml
index 5359e6d..0303f51 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/storage/expected/service-endpoint-provider.yml
@@ -14,6 +14,6 @@
 # limitations under the License.
 
 {{- contains . }}
-- key: {{ notEmpty .key }}
-  value: {{ ge .value 1 }}
-{{- end }}
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "POST:/users" }}
+  name: POST:/users
+{{- end}}
\ No newline at end of file
diff --git a/test/e2e-v2/cases/storage/expected/service-instance.yml b/test/e2e-v2/cases/storage/expected/service-instance-consumer.yml
similarity index 85%
copy from test/e2e-v2/cases/storage/expected/service-instance.yml
copy to test/e2e-v2/cases/storage/expected/service-instance-consumer.yml
index 5f03bc1..dc2ac11 100644
--- a/test/e2e-v2/cases/storage/expected/service-instance.yml
+++ b/test/e2e-v2/cases/storage/expected/service-instance-consumer.yml
@@ -15,9 +15,9 @@
 # specific language governing permissions and limitations
 # under the License.
 
-{{- contains .}}
-- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
-  name: {{ notEmpty .name }}
+{{- contains . }}
+- id: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "consumer1" }}
+  name: consumer1
   attributes:
   {{- contains .attributes }}
   - name: OS Name
@@ -25,7 +25,7 @@
   - name: hostname
     value: {{ notEmpty .value }}
   - name: Process No.
-    value: "1"
+    value: {{ notEmpty .value }}
   - name: Start Time
     value: {{ notEmpty .value }}
   - name: JVM Arguments
@@ -36,5 +36,5 @@
     value: {{ notEmpty .value }}
   {{- end}}
   language: JAVA
-  instanceuuid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
+  instanceuuid: {{ b64enc "e2e-service-consumer" }}.1_{{ b64enc "consumer1" }}
 {{- end}}
diff --git a/test/e2e-v2/cases/storage/expected/service-instance.yml b/test/e2e-v2/cases/storage/expected/service-instance-provider.yml
similarity index 95%
rename from test/e2e-v2/cases/storage/expected/service-instance.yml
rename to test/e2e-v2/cases/storage/expected/service-instance-provider.yml
index 5f03bc1..f32cc2b 100644
--- a/test/e2e-v2/cases/storage/expected/service-instance.yml
+++ b/test/e2e-v2/cases/storage/expected/service-instance-provider.yml
@@ -15,9 +15,9 @@
 # specific language governing permissions and limitations
 # under the License.
 
-{{- contains .}}
+{{- contains . }}
 - id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
-  name: {{ notEmpty .name }}
+  name: provider1
   attributes:
   {{- contains .attributes }}
   - name: OS Name
@@ -25,7 +25,7 @@
   - name: hostname
     value: {{ notEmpty .value }}
   - name: Process No.
-    value: "1"
+    value: {{ notEmpty .value }}
   - name: Start Time
     value: {{ notEmpty .value }}
   - name: JVM Arguments
diff --git a/test/e2e-v2/cases/storage/expected/trace-info-detail.yml b/test/e2e-v2/cases/storage/expected/trace-info-detail.yml
deleted file mode 100644
index 95b9bd9..0000000
--- a/test/e2e-v2/cases/storage/expected/trace-info-detail.yml
+++ /dev/null
@@ -1,68 +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.
-
-spans:
-  {{- contains .spans }}
-  - traceid: {{ notEmpty .traceid }}
-    segmentid: {{ notEmpty .segmentid }}
-    spanid: {{ .spanid }}
-    parentspanid: {{ .parentspanid }}
-    refs:
-      {{- if eq .servicecode "e2e-service-provider" }}
-      {{- contains .refs }}
-        - traceid: {{ notEmpty .traceid }}
-          parentsegmentid: {{ notEmpty .parentsegmentid }}
-          parentspanid: 1
-          type: CROSS_PROCESS
-      {{- end }}
-      {{- end }}
-      {{- if eq .servicecode "e2e-service-consumer" }}
-        []
-      {{- end }}
-    servicecode: {{ notEmpty .servicecode }}
-    serviceinstancename: {{ notEmpty .serviceinstancename }}
-    starttime: {{ gt .starttime 0 }}
-    endtime: {{ gt .endtime 0 }}
-    endpointname:
-      {{- if eq .type "Exit" }}
-        /info
-      {{ else }}
-        POST:/info
-      {{- end }}
-    type: {{ notEmpty .type }}
-    peer:
-    {{- if eq .type "Exit" }}
-      provider:9090
-    {{ else }}
-      ""
-    {{- end }}
-    component:
-    {{- if eq .type "Exit" }}
-      SpringRestTemplate
-    {{- end }}
-    {{- if eq .type "Entry" }}
-      Tomcat
-    {{- end }}
-    iserror: false
-    layer: Http
-    tags:
-      {{- contains .tags }}
-      - key: http.method
-        value: POST
-      - key: url
-        value: {{ notEmpty .value }}
-      {{- end }}
-    logs: []
-  {{- end }}
diff --git a/test/e2e-v2/cases/storage/expected/trace-users-detail.yml b/test/e2e-v2/cases/storage/expected/trace-users-detail.yml
index 4dfdd6e..437b9dd 100644
--- a/test/e2e-v2/cases/storage/expected/trace-users-detail.yml
+++ b/test/e2e-v2/cases/storage/expected/trace-users-detail.yml
@@ -14,12 +14,66 @@
 # limitations under the License.
 
 spans:
-{{- contains .spans }}
+  {{- contains .spans }}
   - traceid: {{ .traceid }}
     segmentid: {{ .segmentid }}
     spanid: {{ .spanid }}
     parentspanid: {{ .parentspanid }}
     refs: []
+    servicecode: e2e-service-consumer
+    serviceinstancename: consumer1
+    starttime: {{ gt .starttime 0 }}
+    endtime: {{ gt .endtime 0 }}
+    endpointname: POST:/users
+    type: Entry
+    peer: ""
+    component: Tomcat
+    iserror: false
+    layer: Http
+    tags:
+      {{- contains .tags }}
+      - key: http.method
+        value: POST
+      - key: url
+        value: {{ notEmpty .value }}
+      {{- end }}
+    logs: []
+    attachedevents: []
+  - traceid: {{ notEmpty .traceid }}
+    segmentid: {{ .segmentid }}
+    spanid: {{ .spanid }}
+    parentspanid: {{ .parentspanid }}
+    refs: []
+    servicecode: e2e-service-consumer
+    serviceinstancename: consumer1
+    starttime: {{ gt .starttime 0 }}
+    endtime: {{ gt .endtime 0 }}
+    endpointname: /users
+    type: Exit
+    peer: provider:9090
+    component: SpringRestTemplate
+    iserror: false
+    layer: Http
+    tags:
+      {{- contains .tags }}
+      - key: http.method
+        value: POST
+      - key: url
+        value: {{ notEmpty .value }}
+      {{- end }}
+    logs: []
+    attachedevents: []
+  - traceid: {{ notEmpty .traceid }}
+    segmentid: {{ .segmentid }}
+    spanid: {{ .spanid }}
+    parentspanid: {{ .parentspanid }}
+    refs:
+      {{- contains .refs }}
+      - traceid: {{ notEmpty .traceid }}
+        parentsegmentid: {{ .parentsegmentid }}
+        parentspanid: 1
+        type: CROSS_PROCESS
+      {{- end }}
     servicecode: e2e-service-provider
     serviceinstancename: provider1
     starttime: {{ gt .starttime 0 }}
@@ -38,4 +92,5 @@ spans:
         value: {{ notEmpty .value }}
       {{- end }}
     logs: []
+    attachedevents: []
   {{- end }}
diff --git a/test/e2e-v2/cases/storage/expected/traces-list.yml b/test/e2e-v2/cases/storage/expected/traces-list.yml
index 9ff6901..4d5a1e5 100644
--- a/test/e2e-v2/cases/storage/expected/traces-list.yml
+++ b/test/e2e-v2/cases/storage/expected/traces-list.yml
@@ -17,12 +17,10 @@ traces:
 {{- contains .traces }}
 - segmentid: {{ notEmpty .segmentid }}
   endpointnames:
-  {{- contains .endpointnames }}
-    - POST:/info
-  {{- end }}
+    - POST:/users
   duration: {{ ge .duration 0 }}
   start: "{{ notEmpty .start}}"
   iserror: false
   traceids:
-    - {{ (index .traceids 0) }}
+    - {{ index .traceids 0 }}
 {{- end }}
diff --git a/test/e2e-v2/cases/storage/storage-cases.yaml b/test/e2e-v2/cases/storage/storage-cases.yaml
index 165de43..0dcd9f3 100644
--- a/test/e2e-v2/cases/storage/storage-cases.yaml
+++ b/test/e2e-v2/cases/storage/storage-cases.yaml
@@ -20,37 +20,124 @@ cases:
   # service list
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service layer GENERAL
     expected: expected/service.yml
-  # service metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name service_sla --service-name=e2e-service-provider | yq e 'to_entries' -
-    expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics top --name service_sla 5
-    expected: expected/metrics-top-service-sla.yml
-  # service endpoint
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
-    expected: expected/service-endpoint.yml
-  # service endpoint metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name endpoint_cpm --endpoint-name=POST:/info --service-name=e2e-service-provider |yq e 'to_entries' -
-    expected: expected/metrics-has-value.yml
-  #  dependency service
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
-    expected: expected/dependency-services.yml
   # service instance list
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=e2e-service-provider
-    expected: expected/service-instance.yml
-  # service instance jvm metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider | yq e 'to_entries' -
-    expected: expected/metrics-has-value.yml
-
+    expected: expected/service-instance-provider.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=e2e-service-consumer
+    expected: expected/service-instance-consumer.yml
+  # service endpoint
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=users --service-name=e2e-service-provider
+    expected: expected/service-endpoint-provider.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=users --service-name=e2e-service-consumer
+    expected: expected/service-endpoint-consumer.yml
+  # dependency service
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name=e2e-service-provider
+    expected: expected/dependency-services-provider.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name=e2e-service-consumer
+    expected: expected/dependency-services-consumer.yml
+  # dependency instance
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency instance --service-name=e2e-service-consumer --dest-service-name=e2e-service-provider
+    expected: expected/dependency-instance.yml
+  # dependency endpoint
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency endpoint --service-name=e2e-service-provider --endpoint-name=POST:/users
+    expected: expected/dependency-endpoint-provider.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency endpoint --service-name=e2e-service-consumer --endpoint-name=POST:/users
+    expected: expected/dependency-endpoint-consumer.yml
   # trace segment list
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls  --tags http.method=POST
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls
     expected: expected/traces-list.yml
-  # native tracing: trace detail
+  # negative tags search: relationship should be logical AND instead of logical OR
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --tags http.method=POST,http.status_code=201
+    expected: expected/empty-traces-list.yml
+  # trace detail
   - query: |
       swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace $( \
         swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls \
-          | yq e '.traces | select(.[].endpointnames[0]=="POST:/info") | .[0].traceids[0]' - \
+          | yq e '.traces | select(.[].endpointnames[0]=="POST:/users") | .[0].traceids[0]' -
       )
-    expected: expected/trace-info-detail.yml
+    expected: expected/trace-users-detail.yml
+  # service metrics
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics top --name service_sla 5
+    expected: expected/metrics-top-service-sla.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  # service instance metrics
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_resp_time --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_cpm --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_sla --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  # service instance JVM metrics
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap_max --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_noheap --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_live_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_daemon_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_peak_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_runnable_state_thread_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_total_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap_max --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_noheap --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_daemon_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_peak_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_runnable_state_thread_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_total_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  # service endpoint metrics
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+    expected: expected/metrics-has-value.yml
+  # service endpoint metrics percentile
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+    expected: expected/metrics-has-value-percentile.yml
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+    expected: expected/metrics-has-value-percentile.yml
+
   # native event: event list
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql event list
     expected: expected/event-list.yml
@@ -62,4 +149,4 @@ cases:
         swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
           | yq e '.traces[0].traceids[0]' - \
       )
-    expected: expected/trace-users-detail.yml
\ No newline at end of file
+    expected: expected/trace-users-detail.yml
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env
index be6896b..5ed4284 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/script/env
@@ -13,9 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-SW_AGENT_JAVA_COMMIT=5bc1d1d1f1d9ce6a4f7fce20e8ecc330bccf47ec
-SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=34a4553e23530e8255efe6f5a0adff9e69555d64
-SW_AGENT_SATELLITE_COMMIT=1987e1d566ac90f6b58a45fd9bfa27bf8faad635
+SW_AGENT_JAVA_COMMIT=3f88d735ba2bfd1196aff946502447d4b14450c8
+SW_AGENT_SATELLITE_COMMIT=ea27a3f4e126a24775fe12e2aa2695bcb23d99c3
 SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa
 SW_AGENT_NODEJS_COMMIT=2e7560518aff846befd4d6bc815fe5e38c704a11
 SW_AGENT_GO_COMMIT=4af380c2db6243106b0fc650b6003ce3b3eb82a0
@@ -23,7 +22,7 @@ SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
 SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
 SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
 SW_KUBERNETES_COMMIT_SHA=0f3ec68e5a7e1608cec8688716b848ed15e971e5
-SW_ROVER_COMMIT=90c93c706743aac1f5853b677730edae8cc32a2c
-SW_CTL_COMMIT=219876daf985fd474955834ef0b65013f0890e96
-
-SW_OAP_COMMIT=dc39ce9bb44ed33d9c2bb0d5a054b1dfd5bbd657
+SW_ROVER_COMMIT=d956eaede57b62108b78bca48045bd09ba88e653
+SW_CTL_COMMIT=e684fae0107045fc23799146d62f04cb68bd5a3b
+SW_OAP_COMMIT=d5388683322ee6a4aed2a3bc29d439aadfca9a04
+SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=828e6e2f2b57a0f06bb0d507e3296d2377943d9a
diff --git a/test/e2e-v2/script/prepare/setup-e2e-shell/install-swctl.sh b/test/e2e-v2/script/prepare/setup-e2e-shell/install-swctl.sh
index c58fde4..f9bcf34 100644
--- a/test/e2e-v2/script/prepare/setup-e2e-shell/install-swctl.sh
+++ b/test/e2e-v2/script/prepare/setup-e2e-shell/install-swctl.sh
@@ -22,10 +22,18 @@
 BASE_DIR=$1
 BIN_DIR=$2
 
-if ! command -v swctl &> /dev/null; then
+install_swctl() {
   mkdir -p $BASE_DIR/swctl && cd $BASE_DIR/swctl
   curl -kLo skywalking-cli.tar.gz https://github.com/apache/skywalking-cli/archive/${SW_CTL_COMMIT}.tar.gz
   tar -zxf skywalking-cli.tar.gz --strip=1
-  utype=$(uname | awk '{print tolower($0)}')
-  make $utype-amd64 && mv bin/swctl-*-$utype-amd64 $BIN_DIR/swctl
+  VERSION=${SW_CTL_COMMIT} make install DESTDIR=$BIN_DIR
+}
+
+if ! command -v swctl &> /dev/null; then
+  echo "swctl is not installed"
+  install_swctl
+elif ! swctl --version | grep -q "${SW_CTL_COMMIT}"; then
+  # Check if the installed version is correct
+  echo "swctl is already installed, but version is not ${SW_CTL_COMMIT}, will re-install it"
+  install_swctl
 fi
diff --git a/test/e2e-v2/script/prepare/setup-e2e-shell/install-yq.sh b/test/e2e-v2/script/prepare/setup-e2e-shell/install-yq.sh
index 28fd299..658e092 100644
--- a/test/e2e-v2/script/prepare/setup-e2e-shell/install-yq.sh
+++ b/test/e2e-v2/script/prepare/setup-e2e-shell/install-yq.sh
@@ -24,7 +24,7 @@ BIN_DIR=$2
 
 if ! command -v yq &> /dev/null; then
   mkdir -p $BASE_DIR/yq && cd $BASE_DIR/yq
-  curl -kLo yq.tar.gz https://github.com/mikefarah/yq/archive/v4.11.1.tar.gz
+  curl -kLo yq.tar.gz https://github.com/mikefarah/yq/archive/v4.14.1.tar.gz
   tar -zxf yq.tar.gz --strip=1
   go install && go build -ldflags -s && cp yq $BIN_DIR/
 fi
\ No newline at end of file
diff --git a/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh b/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh
index 3d440fa..dade3db 100644
--- a/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh
+++ b/test/e2e-v2/script/prepare/setup-e2e-shell/install.sh
@@ -26,8 +26,8 @@ CURRENT_DIR="$(cd "$(dirname $0)"; pwd)"
 
 # prepare base dir
 TMP_DIR=/tmp/skywalking-infra-e2e
-BIN_DIR=/usr/local/bin
-mkdir -p $TMP_DIR && cd $TMP_DIR
+BIN_DIR=$TMP_DIR/bin
+mkdir -p $TMP_DIR $BIN_DIR && cd $TMP_DIR
 
 # execute install
 bash $CURRENT_DIR/install-$NAME.sh $TMP_DIR $BIN_DIR
diff --git a/test/e2e-v2/script/prepare/setup-oap/log4j2.xml b/test/e2e-v2/script/prepare/setup-oap/log4j2.xml
index 2758ba6..f7c03f5 100644
--- a/test/e2e-v2/script/prepare/setup-oap/log4j2.xml
+++ b/test/e2e-v2/script/prepare/setup-oap/log4j2.xml
@@ -24,7 +24,6 @@
         </Console>
     </Appenders>
     <Loggers>
-        <logger name="org.eclipse.jetty" level="INFO"/>
         <logger name="org.apache.zookeeper" level="INFO"/>
         <logger name="io.grpc.netty" level="INFO"/>
         <logger name="org.apache.skywalking.oap.meter.analyzer" level="DEBUG"/>