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

wusheng pushed a commit to branch feature/istio-banyandb-e2e
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit b5bdcb5cb8770d40cbf13df6e94c005a1f66bc07
Author: Wu Sheng <[email protected]>
AuthorDate: Sun Mar 29 20:40:53 2026 +0800

    Add BanyanDB cluster mode e2e tests for Istio ALS and metrics
    
    BanyanDB cluster: liaison x2, data x2, DNS discovery, native metadata.
    Access logs enabled on liaison nodes only.
    
    - istio/als/banyandb/e2e.yaml — ALS with BanyanDB cluster
    - istio/metrics/banyandb/e2e.yaml — Envoy metrics service with BanyanDB 
cluster
    - Extract shared verify cases into als-cases.yaml and metrics-cases.yaml
    - Add storage matrix (ES/BanyanDB) to e2e-test-istio job
    - Add BanyanDB metrics variant to e2e-test job matrix
    
    Verified locally: helm install creates correct cluster topology
    (2 liaison + 2 data-hot StatefulSets, DNS discovery, access log env
    vars on liaison only).
---
 .github/workflows/skywalking.yaml                  |  16 ++-
 test/e2e-v2/cases/istio/als/als-cases.yaml         | 154 +++++++++++++++++++++
 test/e2e-v2/cases/istio/als/banyandb/e2e.yaml      | 127 +++++++++++++++++
 test/e2e-v2/cases/istio/als/e2e.yaml               | 138 +-----------------
 test/e2e-v2/cases/istio/metrics/banyandb/e2e.yaml  | 131 ++++++++++++++++++
 test/e2e-v2/cases/istio/metrics/e2e.yaml           | 110 +--------------
 .../istio/metrics/{e2e.yaml => metrics-cases.yaml} |  97 +------------
 7 files changed, 431 insertions(+), 342 deletions(-)

diff --git a/.github/workflows/skywalking.yaml 
b/.github/workflows/skywalking.yaml
index fcc2a11b7b..b49b32bcb0 100644
--- a/.github/workflows/skywalking.yaml
+++ b/.github/workflows/skywalking.yaml
@@ -581,6 +581,11 @@ jobs:
             env: |
               ISTIO_VERSION=1.29.0
               KUBERNETES_VERSION=28
+          - name: Istio Metrics Service BanyanDB 1.29.0
+            config: test/e2e-v2/cases/istio/metrics/banyandb/e2e.yaml
+            env: |
+              ISTIO_VERSION=1.29.0
+              KUBERNETES_VERSION=28
 
           - name: Rover with Istio Process 1.28.0
             config: test/e2e-v2/cases/rover/process/istio/e2e.yaml
@@ -786,6 +791,11 @@ jobs:
       fail-fast: false
       matrix:
         analyzer: [k8s-mesh, mx-mesh]
+        storage:
+          - name: ES
+            config: test/e2e-v2/cases/istio/als/e2e.yaml
+          - name: BanyanDB
+            config: test/e2e-v2/cases/istio/als/banyandb/e2e.yaml
         versions:
           - istio: 1.21.0
             kubernetes: 28
@@ -830,14 +840,14 @@ jobs:
           registry: ghcr.io
           username: ${{ github.repository_owner }}
           password: ${{ secrets.GITHUB_TOKEN }}
-      - name: ${{ matrix.test.name }}
+      - name: ${{ matrix.analyzer }}-${{ matrix.storage.name }}-${{ 
matrix.versions.istio }}
         uses: 
apache/skywalking-infra-e2e@e26033e1faaf865899c486ffe17dabdf17b90aae
         env:
           ISTIO_VERSION: ${{ matrix.versions.istio }}
           KUBERNETES_VERSION: ${{ matrix.versions.kubernetes }}
           ALS_ANALYZER: ${{ matrix.analyzer }}
         with:
-          e2e-file: test/e2e-v2/cases/istio/als/e2e.yaml
+          e2e-file: ${{ matrix.storage.config }}
       - if: ${{ failure() }}
         run: |
           df -h
@@ -847,7 +857,7 @@ jobs:
         if: ${{ failure() }}
         name: Upload Logs
         with:
-          name: test-logs-${{ matrix.test.name }}
+          name: test-logs-${{ matrix.analyzer }}-${{ matrix.storage.name 
}}-${{ matrix.versions.istio }}-${{ matrix.versions.kubernetes }}
           path: "${{ env.SW_INFRA_E2E_LOG_DIR }}"
           overwrite: true
 
diff --git a/test/e2e-v2/cases/istio/als/als-cases.yaml 
b/test/e2e-v2/cases/istio/als/als-cases.yaml
new file mode 100644
index 0000000000..0f298a2410
--- /dev/null
+++ b/test/e2e-v2/cases/istio/als/als-cases.yaml
@@ -0,0 +1,154 @@
+# 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.
+
+# Shared verify cases for Istio ALS tests (ES and BanyanDB variants)
+
+cases:
+  # service list
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 service ls
+    expected: expected/service.yml
+  # service instance list
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage
+    expected: expected/service-instance.yml
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews
+    expected: expected/service-instance.yml
+  # service endpoint
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 endpoint list --service-name=e2e::productpage
+    expected: expected/service-endpoint-productpage.yml
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 endpoint list --service-name=e2e::reviews
+    expected: expected/service-endpoint-reviews.yml
+
+  # service metrics: e2e::productpage
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_sla --service-name=e2e::productpage
+    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=service_cpm --service-name=e2e::productpage
+    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=service_resp_time --service-name=e2e::productpage
+    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=service_apdex --service-name=e2e::productpage
+    expected: expected/metrics-has-value.yml
+  # service metrics: e2e::reviews
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_sla --service-name=e2e::reviews
+    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=service_cpm --service-name=e2e::reviews
+    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=service_resp_time --service-name=e2e::reviews
+    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=service_apdex --service-name=e2e::reviews
+    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=service_sidecar_internal_req_latency_nanos 
--service-name=e2e::reviews
+    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=service_sidecar_internal_resp_latency_nanos 
--service-name=e2e::reviews
+    expected: expected/metrics-has-value.yml
+  # service instance metrics: e2e::productpage
+  - query: |
+      swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_instance_resp_time 
--service-name=e2e::productpage --instance-name=$( \
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=service_instance_cpm --service-name=e2e::productpage 
--instance-name=$( \
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=service_instance_sla --service-name=e2e::productpage 
--instance-name=$( \
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].name' -
+      )
+    expected: expected/metrics-has-value.yml
+  # service instance metrics: e2e::reviews
+  - query: |
+      swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_instance_resp_time 
--service-name=e2e::reviews --instance-name=$( \
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_cpm --service-name=e2e::reviews 
--instance-name=$( \
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_sla --service-name=e2e::reviews 
--instance-name=$( \
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_sidecar_internal_req_latency_nanos 
--service-name=e2e::reviews --instance-name=$( \
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_sidecar_internal_resp_latency_nanos 
--service-name=e2e::reviews --instance-name=$( \
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].name' -
+      )
+    expected: expected/metrics-has-value.yml
+
+  # service endpoint metrics: e2e::productpage GET:/productpage
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=endpoint_cpm --endpoint-name=GET:/productpage 
--service-name=e2e::productpage
+    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=endpoint_resp_time --endpoint-name=GET:/productpage 
--service-name=e2e::productpage
+    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=endpoint_sla --endpoint-name=GET:/productpage 
--service-name=e2e::productpage
+    expected: expected/metrics-has-value.yml
+  # service endpoint metrics: e2e::reviews GET:/reviews/0
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=endpoint_cpm --endpoint-name=GET:/reviews/0 
--service-name=e2e::reviews
+    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=endpoint_resp_time --endpoint-name=GET:/reviews/0 
--service-name=e2e::reviews
+    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=endpoint_sla --endpoint-name=GET:/reviews/0 
--service-name=e2e::reviews
+    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=endpoint_sidecar_internal_req_latency_nanos 
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
+    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=endpoint_sidecar_internal_resp_latency_nanos 
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
+    expected: expected/metrics-has-value.yml
+
+  # dependency service
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency service --service-name=e2e::productpage
+    expected: expected/dependency-services-productpage.yml
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency service --service-name=e2e::reviews
+    expected: expected/dependency-services-reviews.yml
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency instance --service-name=e2e::productpage 
--dest-service-name=e2e::reviews
+    expected: expected/dependency-services-instance-productpage.yml
+
+  # service relation metrics
+  - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_relation_client_cpm  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+    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=service_relation_server_cpm  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+    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=service_client_sidecar_internal_req_latency_nanos  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+    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=service_server_sidecar_internal_req_latency_nanos  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+    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=service_client_sidecar_internal_resp_latency_nanos  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+    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=service_server_sidecar_internal_resp_latency_nanos  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
+    expected: expected/metrics-has-value.yml
+  # service instance relation metrics, e2e::productpage -> e2e::reviews
+  - query: |
+      swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_instance_relation_client_cpm \
+        --service-name=e2e::productpage --instance-name=$( \
+          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
+        --dest-service-name=e2e::reviews --dest-instance-name=$( \
+          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_relation_server_cpm \
+        --service-name=e2e::productpage --instance-name=$( \
+          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
+        --dest-service-name=e2e::reviews --dest-instance-name=$( \
+          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
+
+    expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/istio/als/banyandb/e2e.yaml 
b/test/e2e-v2/cases/istio/als/banyandb/e2e.yaml
new file mode 100644
index 0000000000..5de5079189
--- /dev/null
+++ b/test/e2e-v2/cases/istio/als/banyandb/e2e.yaml
@@ -0,0 +1,127 @@
+# 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.
+
+# Istio ALS test with BanyanDB cluster mode (liaison x2, data x2, DNS 
discovery, native metadata)
+
+setup:
+  env: kind
+  file: ../../kind.k${KUBERNETES_VERSION}.yaml
+  init-system-environment: ../../../../script/env
+  kind:
+    import-images:
+      - skywalking/ui:latest
+      - skywalking/oap:latest
+    expose-ports:
+      - namespace: istio-system
+        resource: service/skywalking-ui
+        port: 80
+  steps:
+    - name: set PATH
+      command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
+    - name: install yq
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
+    - name: install swctl
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
+    - name: install kubectl
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh 
kubectl
+    - name: install istio
+      command: |
+        bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh istioctl
+        istioctl install -y --set profile=demo \
+          --set 
meshConfig.defaultConfig.envoyAccessLogService.address=skywalking-oap.istio-system:11800
 \
+          --set meshConfig.enableEnvoyAccessLogService=true
+        kubectl label namespace default istio-injection=enabled
+    - name: Install helm
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh helm
+    - name: Install SkyWalking with BanyanDB cluster
+      command: |
+        helm -n istio-system install skywalking \
+          oci://ghcr.io/apache/skywalking-helm/skywalking-helm \
+          --version "0.0.0-${SW_KUBERNETES_COMMIT_SHA}" \
+          --set fullnameOverride=skywalking \
+          --set elasticsearch.enabled=false \
+          --set oap.env.SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS=$ALS_ANALYZER \
+          --set oap.env.SW_ENVOY_METRIC_ALS_TCP_ANALYSIS=$ALS_ANALYZER \
+          --set oap.env.K8S_SERVICE_NAME_RULE='e2e::${service.metadata.name}' \
+          --set oap.env.SW_HEALTH_CHECKER=default \
+          --set oap.envoy.als.enabled=true \
+          --set oap.replicas=1 \
+          --set ui.image.repository=skywalking/ui \
+          --set ui.image.tag=latest \
+          --set oap.image.tag=latest \
+          --set oap.image.repository=skywalking/oap \
+          --set oap.storageType=banyandb \
+          --set banyandb.enabled=true \
+          --set banyandb.standalone.enabled=false \
+          --set banyandb.cluster.enabled=true \
+          --set banyandb.cluster.liaison.replicas=2 \
+          --set banyandb.cluster.data.nodeTemplate.replicas=2 \
+          --set banyandb.image.tag=${SW_BANYANDB_COMMIT} \
+          --set banyandb.image.repository=ghcr.io/apache/skywalking-banyandb \
+          --set 
"banyandb.cluster.liaison.env[0].name=BYDB_ENABLE_INGESTION_ACCESS_LOG" \
+          --set "banyandb.cluster.liaison.env[0].value=\"true\"" \
+          --set 
"banyandb.cluster.liaison.env[1].name=BYDB_ENABLE_QUERY_ACCESS_LOG" \
+          --set "banyandb.cluster.liaison.env[1].value=\"true\"" \
+          --set 
"banyandb.cluster.liaison.env[2].name=BYDB_ACCESS_LOG_ROOT_PATH" \
+          --set "banyandb.cluster.liaison.env[2].value=/tmp" \
+          -f test/e2e-v2/cases/istio/values.yaml
+      wait:
+        - namespace: istio-system
+          resource: deployments/skywalking-oap
+          for: condition=available
+    - name: Deploy demo services
+      command: |
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/bookinfo-gateway.yaml
+        # Enable TCP services
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo-ratings-v2.yaml
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo-db.yaml
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/destination-rule-all.yaml
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/virtual-service-ratings-db.yaml
+      wait:
+        - namespace: default
+          resource: pod
+          for: condition=Ready
+    - name: Generate traffic
+      path: ../../traffic-gen.yaml
+      wait:
+        - namespace: default
+          resource: pod
+          for: condition=Ready
+  timeout: 25m
+
+verify:
+  retry:
+    count: 20
+    interval: 15s
+  cases:
+    - includes:
+        - ../als-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - namespace: istio-system
+        label-selector: app.kubernetes.io/name=banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
+          - /tmp/accesslog/
diff --git a/test/e2e-v2/cases/istio/als/e2e.yaml 
b/test/e2e-v2/cases/istio/als/e2e.yaml
index cd7957e886..6ff8d1b526 100644
--- a/test/e2e-v2/cases/istio/als/e2e.yaml
+++ b/test/e2e-v2/cases/istio/als/e2e.yaml
@@ -102,139 +102,5 @@ verify:
     count: 20
     interval: 15s
   cases:
-    # service list
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 service ls
-      expected: expected/service.yml
-    # service instance list
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage
-      expected: expected/service-instance.yml
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews
-      expected: expected/service-instance.yml
-    # service endpoint
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 endpoint list --service-name=e2e::productpage
-      expected: expected/service-endpoint-productpage.yml
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 endpoint list --service-name=e2e::reviews
-      expected: expected/service-endpoint-reviews.yml
-
-    # service metrics: e2e::productpage
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_sla --service-name=e2e::productpage
-      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=service_cpm --service-name=e2e::productpage
-      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=service_resp_time --service-name=e2e::productpage
-      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=service_apdex --service-name=e2e::productpage
-      expected: expected/metrics-has-value.yml
-    # service metrics: e2e::reviews
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_sla --service-name=e2e::reviews
-      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=service_cpm --service-name=e2e::reviews
-      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=service_resp_time --service-name=e2e::reviews
-      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=service_apdex --service-name=e2e::reviews
-      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=service_sidecar_internal_req_latency_nanos 
--service-name=e2e::reviews
-      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=service_sidecar_internal_resp_latency_nanos 
--service-name=e2e::reviews
-      expected: expected/metrics-has-value.yml
-    # service instance metrics: e2e::productpage
-    - query: |
-        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_instance_resp_time 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=service_instance_cpm --service-name=e2e::productpage 
--instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=service_instance_sla --service-name=e2e::productpage 
--instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].name' -
-        )
-      expected: expected/metrics-has-value.yml
-    # service instance metrics: e2e::reviews
-    - query: |
-        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_instance_resp_time 
--service-name=e2e::reviews --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_cpm --service-name=e2e::reviews 
--instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_sla --service-name=e2e::reviews 
--instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_sidecar_internal_req_latency_nanos 
--service-name=e2e::reviews --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_sidecar_internal_resp_latency_nanos 
--service-name=e2e::reviews --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].name' -
-        )
-      expected: expected/metrics-has-value.yml
-
-    # service endpoint metrics: e2e::productpage GET:/productpage
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=endpoint_cpm --endpoint-name=GET:/productpage 
--service-name=e2e::productpage
-      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=endpoint_resp_time --endpoint-name=GET:/productpage 
--service-name=e2e::productpage
-      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=endpoint_sla --endpoint-name=GET:/productpage 
--service-name=e2e::productpage
-      expected: expected/metrics-has-value.yml
-    # service endpoint metrics: e2e::reviews GET:/reviews/0
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=endpoint_cpm --endpoint-name=GET:/reviews/0 
--service-name=e2e::reviews
-      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=endpoint_resp_time --endpoint-name=GET:/reviews/0 
--service-name=e2e::reviews
-      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=endpoint_sla --endpoint-name=GET:/reviews/0 
--service-name=e2e::reviews
-      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=endpoint_sidecar_internal_req_latency_nanos 
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
-      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=endpoint_sidecar_internal_resp_latency_nanos 
--endpoint-name=GET:/reviews/0 --service-name=e2e::reviews
-      expected: expected/metrics-has-value.yml
-
-    # dependency service
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency service --service-name=e2e::productpage
-      expected: expected/dependency-services-productpage.yml
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency service --service-name=e2e::reviews
-      expected: expected/dependency-services-reviews.yml
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency instance --service-name=e2e::productpage 
--dest-service-name=e2e::reviews
-      expected: expected/dependency-services-instance-productpage.yml
-
-    # service relation metrics
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_relation_client_cpm  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
-      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=service_relation_server_cpm  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
-      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=service_client_sidecar_internal_req_latency_nanos  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
-      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=service_server_sidecar_internal_req_latency_nanos  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
-      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=service_client_sidecar_internal_resp_latency_nanos  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
-      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=service_server_sidecar_internal_resp_latency_nanos  
--service-name=e2e::productpage --dest-service-name=e2e::reviews
-      expected: expected/metrics-has-value.yml
-    # service instance relation metrics, e2e::productpage -> e2e::reviews
-    - query: |
-        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=service_instance_relation_client_cpm \
-          --service-name=e2e::productpage --instance-name=$( \
-            swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
-          --dest-service-name=e2e::reviews --dest-instance-name=$( \
-            swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].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=service_instance_relation_server_cpm \
-          --service-name=e2e::productpage --instance-name=$( \
-            swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].name' - ) \
-          --dest-service-name=e2e::reviews --dest-instance-name=$( \
-            swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \
-
-      expected: expected/metrics-has-value.yml
+    - includes:
+        - als-cases.yaml
diff --git a/test/e2e-v2/cases/istio/metrics/banyandb/e2e.yaml 
b/test/e2e-v2/cases/istio/metrics/banyandb/e2e.yaml
new file mode 100644
index 0000000000..adbe200dff
--- /dev/null
+++ b/test/e2e-v2/cases/istio/metrics/banyandb/e2e.yaml
@@ -0,0 +1,131 @@
+# 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.
+
+# Istio Envoy Metrics Service test with BanyanDB cluster mode (liaison x2, 
data x2, DNS discovery, native metadata)
+
+setup:
+  env: kind
+  file: ../../kind.k${KUBERNETES_VERSION}.yaml
+  init-system-environment: ../../../../script/env
+  kind:
+    import-images:
+      - skywalking/ui:latest
+      - skywalking/oap:latest
+    expose-ports:
+      - namespace: istio-system
+        resource: service/skywalking-ui
+        port: 80
+  steps:
+    - name: set PATH
+      command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
+    - name: install yq
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
+    - name: install swctl
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
+    - name: install kubectl
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh 
kubectl
+    - name: install istio
+      command: |
+        bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh istioctl
+        istioctl install -y --set profile=demo \
+                  --set 
meshConfig.defaultConfig.envoyMetricsService.address=skywalking-oap.istio-system:11800
 \
+                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[0]=.*membership_healthy.*'
 \
+                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[1]=.*upstream_cx_active.*'
 \
+                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[2]=.*upstream_cx_total.*'
 \
+                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[3]=.*upstream_rq_active.*'
 \
+                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[4]=.*upstream_rq_total.*'
 \
+                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[5]=.*upstream_rq_pending_active.*'
 \
+                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[6]=.*lb_healthy_panic.*'
 \
+                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[7]=.*upstream_cx_none_healthy.*'
 \
+                  --set values.telemetry.v2.enabled=false
+        kubectl label namespace default istio-injection=enabled
+    - name: Install helm
+      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh helm
+    - name: Install SkyWalking with BanyanDB cluster
+      command: |
+        helm -n istio-system install skywalking \
+          oci://ghcr.io/apache/skywalking-helm/skywalking-helm \
+          --version "0.0.0-${SW_KUBERNETES_COMMIT_SHA}" \
+          --set fullnameOverride=skywalking \
+          --set elasticsearch.enabled=false \
+          --set oap.env.SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS=$ALS_ANALYZER \
+          --set oap.env.SW_ENVOY_METRIC_ALS_TCP_ANALYSIS=$ALS_ANALYZER \
+          --set oap.env.K8S_SERVICE_NAME_RULE='e2e::${service.metadata.name}' \
+          --set oap.env.SW_HEALTH_CHECKER=default \
+          --set oap.replicas=1 \
+          --set ui.image.repository=skywalking/ui \
+          --set ui.image.tag=latest \
+          --set oap.image.tag=latest \
+          --set oap.image.repository=skywalking/oap \
+          --set oap.storageType=banyandb \
+          --set banyandb.enabled=true \
+          --set banyandb.standalone.enabled=false \
+          --set banyandb.cluster.enabled=true \
+          --set banyandb.cluster.liaison.replicas=2 \
+          --set banyandb.cluster.data.nodeTemplate.replicas=2 \
+          --set banyandb.image.tag=${SW_BANYANDB_COMMIT} \
+          --set banyandb.image.repository=ghcr.io/apache/skywalking-banyandb \
+          --set 
"banyandb.cluster.liaison.env[0].name=BYDB_ENABLE_INGESTION_ACCESS_LOG" \
+          --set "banyandb.cluster.liaison.env[0].value=\"true\"" \
+          --set 
"banyandb.cluster.liaison.env[1].name=BYDB_ENABLE_QUERY_ACCESS_LOG" \
+          --set "banyandb.cluster.liaison.env[1].value=\"true\"" \
+          --set 
"banyandb.cluster.liaison.env[2].name=BYDB_ACCESS_LOG_ROOT_PATH" \
+          --set "banyandb.cluster.liaison.env[2].value=/tmp" \
+          -f test/e2e-v2/cases/istio/values.yaml
+      wait:
+        - namespace: istio-system
+          resource: deployments/skywalking-oap
+          for: condition=available
+    - name: Deploy demo services
+      command: |
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/bookinfo-gateway.yaml
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/destination-rule-all.yaml
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/virtual-service-all-v1.yaml
+      wait:
+        - namespace: default
+          resource: pod
+          for: condition=Ready
+    - name: Generate traffic
+      path: ../../traffic-gen.yaml
+      wait:
+        - namespace: default
+          resource: pod
+          for: condition=Ready
+  timeout: 25m
+
+verify:
+  retry:
+    count: 20
+    interval: 15s
+  cases:
+    - includes:
+        - ../metrics-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - namespace: istio-system
+        label-selector: app.kubernetes.io/name=banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
+          - /tmp/accesslog/
diff --git a/test/e2e-v2/cases/istio/metrics/e2e.yaml 
b/test/e2e-v2/cases/istio/metrics/e2e.yaml
index f11d083caf..2097661d45 100644
--- a/test/e2e-v2/cases/istio/metrics/e2e.yaml
+++ b/test/e2e-v2/cases/istio/metrics/e2e.yaml
@@ -109,111 +109,5 @@ verify:
     count: 20
     interval: 10s
   cases:
-    # service list
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 service ls
-      expected: expected/service.yml
-    # service instance list
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage
-      expected: expected/service-instance.yml
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway
-      expected: expected/service-instance.yml
-
-    # service instance metrics: e2e::productpage
-    - query: |
-        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=envoy_heap_memory_used 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=envoy_heap_memory_max_used 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=envoy_memory_allocated 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=envoy_memory_allocated_max 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=envoy_memory_physical_size 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=envoy_memory_physical_size_max 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=envoy_worker_threads --service-name=e2e::productpage 
--instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].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=envoy_worker_threads_max 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].name' -
-        )
-      expected: expected/metrics-has-value.yml
-    # service instance metrics: e2e::istio-ingressgateway
-    - query: |
-        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=envoy_heap_memory_used 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].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=envoy_heap_memory_max_used 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].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=envoy_memory_allocated 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].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=envoy_memory_allocated_max 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].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=envoy_memory_physical_size 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].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=envoy_memory_physical_size_max 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].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=envoy_worker_threads 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].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=envoy_worker_threads_max 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].name' -
-        )
-      expected: expected/metrics-has-value.yml
-
-    # service instance labeled metrics: e2e::productpage, label: e2e::details
-    - query: |
-        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec 
--expression=envoy_cluster_membership_healthy{cluster_name=\"e2e::details\"} 
--service-name=e2e::productpage --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::productpage | yq e '.[0].name' -
-        )
-      expected: expected/metrics-has-value-label.yml
-    # service instance labeled metrics: e2e::productpage, label: e2e::details
-    - query: |
-        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec 
--expression=envoy_cluster_membership_healthy{cluster_name=\"e2e::details\"} 
--service-name=e2e::istio-ingressgateway --instance-name=$( \
-          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=e2e::istio-ingressgateway | yq e '.[0].name' -
-        )
-      expected: expected/metrics-has-value-label.yml
-
-    # dependency service
-    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency service --service-name=e2e::productpage
-      expected: expected/dependency-services-productpage.yml
+    - includes:
+        - metrics-cases.yaml
diff --git a/test/e2e-v2/cases/istio/metrics/e2e.yaml 
b/test/e2e-v2/cases/istio/metrics/metrics-cases.yaml
similarity index 68%
copy from test/e2e-v2/cases/istio/metrics/e2e.yaml
copy to test/e2e-v2/cases/istio/metrics/metrics-cases.yaml
index f11d083caf..0543f0c3ab 100644
--- a/test/e2e-v2/cases/istio/metrics/e2e.yaml
+++ b/test/e2e-v2/cases/istio/metrics/metrics-cases.yaml
@@ -13,102 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# This file is used to show how to write configuration files and can be used 
to test.
+# Shared verify cases for Istio metrics tests (ES and BanyanDB variants)
 
-setup:
-  env: kind
-  file: ../kind.k${KUBERNETES_VERSION}.yaml
-  init-system-environment: ../../../script/env
-  kind:
-    import-images:
-      - skywalking/ui:latest
-      - skywalking/oap:latest
-    expose-ports:
-      - namespace: istio-system
-        resource: service/skywalking-ui
-        port: 80
-  steps:
-    - name: set PATH
-      command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
-    - name: install yq
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
-    - name: install swctl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
-    - name: install kubectl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh 
kubectl
-    - name: install istio
-      command: |
-        bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh istioctl
-        istioctl install -y --set profile=demo \
-                  --set 
meshConfig.defaultConfig.envoyMetricsService.address=skywalking-oap.istio-system:11800
 \
-                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[0]=.*membership_healthy.*'
 \
-                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[1]=.*upstream_cx_active.*'
 \
-                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[2]=.*upstream_cx_total.*'
 \
-                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[3]=.*upstream_rq_active.*'
 \
-                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[4]=.*upstream_rq_total.*'
 \
-                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[5]=.*upstream_rq_pending_active.*'
 \
-                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[6]=.*lb_healthy_panic.*'
 \
-                  --set 
'meshConfig.defaultConfig.proxyStatsMatcher.inclusionRegexps[7]=.*upstream_cx_none_healthy.*'
 \
-                  --set values.telemetry.v2.enabled=false # disable the 
metadata-exchange extension intentionally to make sure metrics service doesn't 
rely on it
-        kubectl label namespace default istio-injection=enabled
-    - name: Install helm
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh helm
-    - name: Install kubectl
-      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh 
kubectl
-    - name: Install ECK operator
-      command: |
-        helm pull oci://ghcr.io/apache/skywalking-helm/skywalking-helm \
-          --version "0.0.0-${SW_KUBERNETES_COMMIT_SHA}" --untar
-        helm dep up skywalking-helm
-        helm -n istio-system install eck-operator 
skywalking-helm/charts/eck-operator-*.tgz \
-          --create-namespace
-        kubectl -n istio-system rollout status --watch --timeout=120s 
statefulset/elastic-operator
-    - name: Install SkyWalking
-      command: |
-        helm -n istio-system install skywalking \
-          oci://ghcr.io/apache/skywalking-helm/skywalking-helm \
-          --version "0.0.0-${SW_KUBERNETES_COMMIT_SHA}" \
-          --set fullnameOverride=skywalking \
-          --set eckOperator.enabled=false \
-          --set oap.env.SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS=$ALS_ANALYZER \
-          --set oap.env.SW_ENVOY_METRIC_ALS_TCP_ANALYSIS=$ALS_ANALYZER \
-          --set oap.env.K8S_SERVICE_NAME_RULE='e2e::${service.metadata.name}' \
-          --set oap.env.SW_HEALTH_CHECKER=default \
-          --set oap.envoy.als.enabled=true \
-          --set oap.replicas=1 \
-          --set ui.image.repository=skywalking/ui \
-          --set ui.image.tag=latest \
-          --set oap.image.tag=latest \
-          --set oap.image.repository=skywalking/oap \
-          --set oap.storageType=elasticsearch \
-          -f test/e2e-v2/cases/istio/values.yaml
-      wait:
-        - namespace: istio-system
-          resource: deployments/skywalking-oap
-          for: condition=available
-    - name: Deploy demo services
-      command: |
-        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml
-        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/bookinfo-gateway.yaml
-        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/destination-rule-all.yaml
-        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/virtual-service-all-v1.yaml
-      wait:
-        - namespace: default
-          resource: pod
-          for: condition=Ready
-    - name: Generate traffic
-      path: ../traffic-gen.yaml
-      wait:
-        - namespace: default
-          resource: pod
-          for: condition=Ready
-  timeout: 25m
-
-verify:
-  retry:
-    count: 20
-    interval: 10s
-  cases:
+cases:
     # service list
     - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 service ls
       expected: expected/service.yml

Reply via email to