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

hanahmily 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 342ed2da6 Collect data on e2e failure, add log test, sync lifecycle, 
fix zipkin (#1030)
342ed2da6 is described below

commit 342ed2da6dc70758dfb2ee7f6c86268c2e194b4e
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Mon Mar 30 13:09:01 2026 +0800

    Collect data on e2e failure, add log test, sync lifecycle, fix zipkin 
(#1030)
    
    * Collect BanyanDB data and access logs on e2e test failure
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
    Co-authored-by: Gao Hongtao <[email protected]>
---
 .github/workflows/e2e.yml                          | 24 +++---
 AGENTS.md                                          | 17 ----
 CHANGES.md                                         |  3 +
 test/e2e-v2/cases/cluster/e2e-etcd.yaml            | 14 ++++
 test/e2e-v2/cases/cluster/e2e-property.yaml        | 14 ++++
 test/e2e-v2/cases/event/banyandb/e2e-etcd.yaml     | 14 ++++
 test/e2e-v2/cases/event/banyandb/e2e-property.yaml | 14 ++++
 .../lifecycle/data-generator/docker-compose.yml    |  4 +-
 test/e2e-v2/cases/lifecycle/data-generator/gen.sh  |  6 +-
 test/e2e-v2/cases/lifecycle/docker-compose.yml     | 97 ++++++++++++----------
 test/e2e-v2/cases/lifecycle/e2e.yaml               | 60 ++++++++++---
 .../metrics-has-value.yml => lifecycle/nodes.yaml} | 28 ++-----
 .../banyandb}/docker-compose.yml                   | 39 +++++----
 .../e2e-v2/cases/{zipkin => log}/banyandb/e2e.yaml | 36 ++++++--
 .../expected/logs.yml}                             | 46 +++++-----
 .../expected/metrics-has-value.yml                 |  2 +-
 .../expected/service-endpoint.yml}                 | 23 +----
 .../e2e-v2/cases/log/expected/service-instance.yml | 40 +++++++++
 .../expected/service.yml}                          | 28 ++-----
 .../trace/banyandb/e2e-etcd.yaml => log/lal.yaml}  | 42 +++++-----
 .../log-base-compose.yml}                          | 37 ++++-----
 test/e2e-v2/cases/log/log-mal.yaml                 | 36 ++++++++
 .../cases/profiling/trace/banyandb/e2e-etcd.yaml   | 14 ++++
 .../profiling/trace/banyandb/e2e-property.yaml     | 14 ++++
 .../rover/process/istio/banyandb/e2e-banyandb.yaml | 23 +++++
 test/e2e-v2/cases/storage/banyandb/e2e-etcd.yaml   | 14 ++++
 .../cases/storage/banyandb/e2e-property.yaml       | 14 ++++
 .../expected/metrics-has-value-percentile.yml      |  4 +-
 .../cases/storage/expected/metrics-has-value.yml   |  2 +-
 test/e2e-v2/cases/zipkin/banyandb/e2e.yaml         | 16 +++-
 test/e2e-v2/script/env                             |  2 +-
 31 files changed, 492 insertions(+), 235 deletions(-)

diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
index 168533eed..99d9576f8 100644
--- a/.github/workflows/e2e.yml
+++ b/.github/workflows/e2e.yml
@@ -48,7 +48,7 @@ jobs:
           tag: ${{ github.sha }}
 
   StoragePlugins:
-    name: Storage E2E
+    name: ${{ matrix.test.name }}
     runs-on: ${{ matrix.test.runs-on || 'ubuntu-latest' }}
     timeout-minutes: 90
     needs: [DockerImage]
@@ -56,23 +56,25 @@ jobs:
       fail-fast: false
       matrix:
         test:
-          - name: BanyanDB Etcd
+          - name: Storage (etcd)
             config: test/e2e-v2/cases/storage/banyandb/e2e-etcd.yaml
-          - name: BanyanDB Property
+          - name: Storage (native-property/dns)
             config: test/e2e-v2/cases/storage/banyandb/e2e-property.yaml
-          - name: Trace Profiling BanyanDB Etcd
+          - name: Trace Profiling (etcd)
             config: test/e2e-v2/cases/profiling/trace/banyandb/e2e-etcd.yaml
-          - name: Trace Profiling BanyanDB Property
+          - name: Trace Profiling (native-property/dns)
             config: 
test/e2e-v2/cases/profiling/trace/banyandb/e2e-property.yaml
-          - name: Event BanyanDB Etcd
+          - name: Event (etcd)
             config: test/e2e-v2/cases/event/banyandb/e2e-etcd.yaml
-          - name: Event BanyanDB Property
+          - name: Event (native-property/dns)
             config: test/e2e-v2/cases/event/banyandb/e2e-property.yaml
-          - name: BanyanDB Cluster Mode Etcd
+          - name: Log
+            config: test/e2e-v2/cases/log/banyandb/e2e.yaml
+          - name: Cluster (etcd)
             config: test/e2e-v2/cases/cluster/e2e-etcd.yaml
-          - name: BanyanDB Cluster Mode Property
+          - name: Cluster (native-property/dns)
             config: test/e2e-v2/cases/cluster/e2e-property.yaml
-          - name: Rover Istio BanyanDB
+          - name: Rover eBPF - Istio mesh, Kind
             config: 
test/e2e-v2/cases/rover/process/istio/banyandb/e2e-banyandb.yaml
             env: |
               ISTIO_VERSION=1.28.0
@@ -117,7 +119,7 @@ jobs:
         run: |
           bash test/e2e-v2/cases/lifecycle/data-generator/gen.sh
       - name: ${{ matrix.test.name }}
-        uses: 
apache/skywalking-infra-e2e@8c21e43e241a32a54bdf8eeceb9099eb27e5e9b4
+        uses: 
apache/skywalking-infra-e2e@e26033e1faaf865899c486ffe17dabdf17b90aae
         with:
           e2e-file: $GITHUB_WORKSPACE/${{ matrix.test.config }}
       - name: Fix directory permissions
diff --git a/AGENTS.md b/AGENTS.md
index c83511260..93332e260 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,20 +1,3 @@
-# Licensed to 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. Apache Software Foundation (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.
-
 # AI Assistant Rules for SkyWalking BanyanDB Go Project
 # This file provides coding standards and guidelines for AI assistants
 # Compatible with Claude, Cursor, GitHub Copilot, and other LLMs
diff --git a/CHANGES.md b/CHANGES.md
index f3b2df450..554063268 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -7,6 +7,9 @@ Release Notes.
 ### Features
 
 - Organize access logs under a dedicated "accesslog" subdirectory to improve 
log organization and separation from other application data.
+- Collect BanyanDB data on e2e test failure for CI debugging.
+- Add log query e2e test.
+- Sync lifecycle e2e test from SkyWalking stages test.
 
 ## 0.10.0
 
diff --git a/test/e2e-v2/cases/cluster/e2e-etcd.yaml 
b/test/e2e-v2/cases/cluster/e2e-etcd.yaml
index 9cc96f83f..46292a107 100644
--- a/test/e2e-v2/cases/cluster/e2e-etcd.yaml
+++ b/test/e2e-v2/cases/cluster/e2e-etcd.yaml
@@ -48,3 +48,17 @@ verify:
   cases:
   - includes:
     - ../storage/storage-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: data
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/cluster/e2e-property.yaml 
b/test/e2e-v2/cases/cluster/e2e-property.yaml
index ac234b896..b9bcf7f35 100644
--- a/test/e2e-v2/cases/cluster/e2e-property.yaml
+++ b/test/e2e-v2/cases/cluster/e2e-property.yaml
@@ -48,3 +48,17 @@ verify:
   cases:
   - includes:
     - ../storage/storage-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: data
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/event/banyandb/e2e-etcd.yaml 
b/test/e2e-v2/cases/event/banyandb/e2e-etcd.yaml
index c44fae9db..36cfc82a8 100644
--- a/test/e2e-v2/cases/event/banyandb/e2e-etcd.yaml
+++ b/test/e2e-v2/cases/event/banyandb/e2e-etcd.yaml
@@ -35,3 +35,17 @@ verify:
   cases:
     - includes:
         - ../event-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/event/banyandb/e2e-property.yaml 
b/test/e2e-v2/cases/event/banyandb/e2e-property.yaml
index 979c98911..fd203a597 100644
--- a/test/e2e-v2/cases/event/banyandb/e2e-property.yaml
+++ b/test/e2e-v2/cases/event/banyandb/e2e-property.yaml
@@ -35,3 +35,17 @@ verify:
   cases:
     - includes:
         - ../event-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/lifecycle/data-generator/docker-compose.yml 
b/test/e2e-v2/cases/lifecycle/data-generator/docker-compose.yml
index b3f6f169e..98f1078ac 100644
--- a/test/e2e-v2/cases/lifecycle/data-generator/docker-compose.yml
+++ b/test/e2e-v2/cases/lifecycle/data-generator/docker-compose.yml
@@ -21,10 +21,10 @@ services:
     ports:
       - 17912:17912
       - 17913:17913
-    command: standalone --stream-root-path /tmp/stream-data 
--measure-root-path /tmp/measure-data --measure-metadata-cache-wait-duration 1m 
--stream-metadata-cache-wait-duration 1m --schema-registry-mode=etcd
+    command: standalone --measure-metadata-cache-wait-duration 1m 
--stream-metadata-cache-wait-duration 1m
     networks:
       - e2e
-  
+
   oap:
     extends:
       file: ../../../script/docker-compose/base-compose.yml
diff --git a/test/e2e-v2/cases/lifecycle/data-generator/gen.sh 
b/test/e2e-v2/cases/lifecycle/data-generator/gen.sh
index 826ba6a90..fa8a4382d 100644
--- a/test/e2e-v2/cases/lifecycle/data-generator/gen.sh
+++ b/test/e2e-v2/cases/lifecycle/data-generator/gen.sh
@@ -32,12 +32,12 @@ CONTAINER_ID=$(docker compose -f "$COMPOSE_FILE" ps -q 
banyandb)
 echo "⌛ monitoring segment files..."
 found=false
 for i in {1..60}; do
-  if docker exec "$CONTAINER_ID" sh -c '[ -n "$(ls 
/tmp/measure-data/measure/data/metricsDay/seg* 2>/dev/null)" ]'; then
+  if docker exec "$CONTAINER_ID" sh -c '[ -n "$(ls 
/tmp/measure/data/sw_metricsDay/seg* 2>/dev/null)" ]'; then
     echo "✅ found segment files"
     sleep 180
     # copy out data
     docker cp "$CONTAINER_ID":/tmp "$DIR/tmp"
-    docker cp "$CONTAINER_ID":/tmp/measure-data/measure/data/metadata 
"$DIR/tmp"
+    docker cp "$CONTAINER_ID":/tmp/measure/data/sw_metadata "$DIR/tmp"
     found=true
     break
   else
@@ -53,4 +53,4 @@ else
   exit 1
 fi
 
-docker compose -f "$COMPOSE_FILE" down -v
\ No newline at end of file
+docker compose -f "$COMPOSE_FILE" down -v
diff --git a/test/e2e-v2/cases/lifecycle/docker-compose.yml 
b/test/e2e-v2/cases/lifecycle/docker-compose.yml
index e603c28f3..a5fcaee1e 100644
--- a/test/e2e-v2/cases/lifecycle/docker-compose.yml
+++ b/test/e2e-v2/cases/lifecycle/docker-compose.yml
@@ -14,34 +14,26 @@
 # limitations under the License.
 
 services:
-  etcd:
-    extends:
-      file: ../../script/docker-compose/base-compose.yml
-      service: etcd
-    networks:
-      - e2e
-
   data-hot1:
     extends:
       file: ../../script/docker-compose/base-compose.yml
       service: data
     hostname: data-hot1
-    command: data --etcd-endpoints=http://etcd:2379 --node-labels type=hot 
--schema-registry-mode=etcd --node-discovery-mode=etcd
+    command: data --node-discovery-mode=file 
--node-discovery-file-path=/etc/banyandb/nodes.yaml --node-labels type=hot
     volumes:
-      - ./data-generator/tmp/metadata:/tmp/measure/data/metadata
+      - ./data-generator/tmp/metadata:/tmp/measure/data/sw_metadata
+      - ./nodes.yaml:/etc/banyandb/nodes.yaml
     networks:
       - e2e
 
-  data-hot2:
+  data-warm1:
     extends:
       file: ../../script/docker-compose/base-compose.yml
       service: data
-    hostname: data-hot2
-    command: data --etcd-endpoints=http://etcd:2379 --node-labels type=hot 
--schema-registry-mode=etcd --node-discovery-mode=etcd
+    hostname: data-warm1
+    command: data --node-discovery-mode=file 
--node-discovery-file-path=/etc/banyandb/nodes.yaml --node-labels type=warm
     volumes:
-      - ./data-generator/tmp/measure-data/measure:/tmp/measure
-      - ./data-generator/tmp/stream-data/stream:/tmp/stream
-      - ./data-generator/tmp/property/data:/tmp/property
+      - ./nodes.yaml:/etc/banyandb/nodes.yaml
     networks:
       - e2e
 
@@ -50,11 +42,13 @@ services:
       file: ../../script/docker-compose/base-compose.yml
       service: data
     hostname: data-cold1
-    command: data --etcd-endpoints=http://etcd:2379 --node-labels type=cold 
--schema-registry-mode=etcd --node-discovery-mode=etcd
+    command: data --node-discovery-mode=file 
--node-discovery-file-path=/etc/banyandb/nodes.yaml --node-labels type=cold
     volumes:
-      - /tmp/measure/data-cold1:/tmp/measure
-      - /tmp/stream/data-cold1:/tmp/stream
-      - /tmp/property/data-cold1:/tmp/property
+      - ./data-generator/tmp/measure:/tmp/measure
+      - ./data-generator/tmp/stream:/tmp/stream
+      - ./data-generator/tmp/property:/tmp/property
+      - ./data-generator/tmp/trace:/tmp/trace
+      - ./nodes.yaml:/etc/banyandb/nodes.yaml
     networks:
       - e2e
 
@@ -62,7 +56,9 @@ services:
     extends:
       file: ../../script/docker-compose/base-compose.yml
       service: liaison
-    command: liaison --etcd-endpoints=http://etcd:2379 --data-node-selector 
type=hot --schema-registry-mode=etcd --node-discovery-mode=etcd
+    command: liaison --node-discovery-mode=file 
--node-discovery-file-path=/etc/banyandb/nodes.yaml --data-node-selector 
type=hot
+    volumes:
+      - ./nodes.yaml:/etc/banyandb/nodes.yaml
     networks:
       - e2e
 
@@ -73,44 +69,57 @@ services:
     environment:
       SW_STORAGE: banyandb
       SW_STORAGE_BANYANDB_TARGETS: "liaison:17912"
-      SW_STORAGE_BANYANDB_METRICS_MINUTE_ENABLE_WARM_STAGE: "false"
+      SW_STORAGE_BANYANDB_METRICS_MINUTE_ENABLE_WARM_STAGE: "true"
       SW_STORAGE_BANYANDB_METRICS_MINUTE_ENABLE_COLD_STAGE: "true"
-      SW_STORAGE_BANYANDB_METRICS_HOUR_ENABLE_WARM_STAGE: "false"
+      SW_STORAGE_BANYANDB_METRICS_HOUR_ENABLE_WARM_STAGE: "true"
       SW_STORAGE_BANYANDB_METRICS_HOUR_ENABLE_COLD_STAGE: "true"
-      SW_STORAGE_BANYANDB_METRICS_DAY_ENABLE_WARM_STAGE: "false"
+      SW_STORAGE_BANYANDB_METRICS_DAY_ENABLE_WARM_STAGE: "true"
       SW_STORAGE_BANYANDB_METRICS_DAY_ENABLE_COLD_STAGE: "true"
-      SW_STORAGE_BANYANDB_RECORDS_ENABLE_WARM_STAGE: "false"
+      SW_STORAGE_BANYANDB_RECORDS_ENABLE_WARM_STAGE: "true"
       SW_STORAGE_BANYANDB_RECORDS_ENABLE_COLD_STAGE: "true"
-      SW_STORAGE_BANYANDB_TRACE_ENABLE_WARM_STAGE: "false"
+      SW_STORAGE_BANYANDB_TRACE_ENABLE_WARM_STAGE: "true"
       SW_STORAGE_BANYANDB_TRACE_ENABLE_COLD_STAGE: "true"
-      SW_STORAGE_BANYANDB_TRACE_TTL_DAYS: "1"
-      SW_STORAGE_BANYANDB_RECORDS_TTL_DAYS: "1"
-      SW_STORAGE_BANYANDB_METRICS_MINUTE_TTL_DAYS: "1"
-      SW_STORAGE_BANYANDB_METRICS_HOUR_TTL_DAYS: "1"
-      SW_STORAGE_BANYANDB_METRICS_HOUR_SI_DAYS: "1"
-      SW_STORAGE_BANYANDB_METRICS_DAY_TTL_DAYS: "1"
-      SW_STORAGE_BANYANDB_METRICS_DAY_SI_DAYS: "1"
     ports:
-      - 12800
-    networks:
-      - e2e
+      - 12800:12800
+      - 11800:11800
     depends_on:
       liaison:
         condition: service_healthy
 
-  data-hot1-lifecycle-agent:
-    image: "apache/skywalking-banyandb:${TAG}-testing"
-    network_mode: service:data-hot2
-    volumes_from:
-      - data-hot2
-    entrypoint: ["/lifecycle", "--node-labels", "type=hot", 
"--etcd-endpoints=http://etcd:2379";]
-    volumes:
-      - /tmp/lifecycle:/tmp
+  agent:
+    extends:
+      file: ../../script/docker-compose/base-compose.yml
+      service: agent
+    networks:
+      - e2e
+
+  provider:
+    extends:
+      file: ../../script/docker-compose/base-compose.yml
+      service: provider
+    ports:
+      - 9090
+    networks:
+      - e2e
     depends_on:
-      data-hot2:
+      oap:
         condition: service_healthy
+      agent:
+        condition: service_completed_successfully
+
+  consumer:
+    extends:
+      file: ../../script/docker-compose/base-compose.yml
+      service: consumer
+    ports:
+      - 9092
+    depends_on:
       oap:
         condition: service_healthy
+      provider:
+        condition: service_healthy
+      agent:
+        condition: service_completed_successfully
 
 networks:
   e2e:
diff --git a/test/e2e-v2/cases/lifecycle/e2e.yaml 
b/test/e2e-v2/cases/lifecycle/e2e.yaml
index a219f5513..92cd88966 100644
--- a/test/e2e-v2/cases/lifecycle/e2e.yaml
+++ b/test/e2e-v2/cases/lifecycle/e2e.yaml
@@ -28,14 +28,29 @@ setup:
     - name: install swctl
       command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
 
+trigger:
+  action: http
+  interval: 5s
+  times: -1
+  url: http://${consumer_host}:${consumer_9092}/users
+  method: POST
+  body: '{"id":"123","name":"skywalking"}'
+  headers:
+    "Content-Type": "application/json"
+
 verify:
   # verify with retry strategy
   retry:
     # max retry count
-    count: 3
+    count: 20
     # the interval between two retries, in millisecond.
     interval: 10s
   cases:
+    - includes:
+        - ../storage/storage-cases.yaml
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression="top_n(service_resp_time,3,des,attr0='GENERAL',attr1!='Not_exist')/100"
+      expected: ../storage/expected/topN-OP-service.yml
+
     # cold data test
     - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression=service_resp_time --service-name=mock_a_service --start="-96h" 
--end="-48h" --cold=true --step=DAY
       expected: ../storage/expected/metrics-has-value.yml
@@ -45,18 +60,39 @@ verify:
       expected: ./expected/dependency-instance.yml
     - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql dependency endpoint 
--service-name=mock_a_service 
--endpoint-name=/dubbox-case/case/dubbox-rest/404-test --start="-96h" 
--end="-48h" --cold=true --step=DAY
       expected: ./expected/dependency-endpoint.yml
-    # TODO:// enabled below when file based sync is supported
-    # trace segment list
-    # - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace ls --tags 
http.method=get --start="-96h" --end="-48h" --cold=true
-    #   expected: ./expected/traces-list.yml
-    # - query: |
-    #     swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace ls --trace-id=$( \
-    #       swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql trace ls --tags 
http.method=get --start="-96h" --end="-48h" --cold=true \
-    #         | yq e '.traces | 
select(.[].endpointnames[0]=="/dubbox-case/case/dubbox-rest/404-test") | 
.[0].traceids[0]' -
-    #     ) --start="-96h" --end="-48h" --cold=true
-    #   expected: ./expected/trace-detail.yml
+    # trace list
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql tv2 ls 
--service-name=mock_a_service 
--endpoint-name=/dubbox-case/case/dubbox-rest/404-test --tags http.method=get 
--start="-96h" --end="-48h" --cold=true
+      expected: ./expected/traces-list.yml
     ## topN
     - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression="top_n(service_resp_time,3,des,attr0='GENERAL')" --start="-96h" 
--end="-48h" --cold=true --step=DAY
       expected: ./expected/topN-OP-service.yml
     - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql metrics exec 
--expression="top_n(endpoint_resp_time,3,des)" --start="-96h" --end="-48h" 
--cold=true --step=DAY
-      expected: ./expected/topN-OP-endpoint.yml
\ No newline at end of file
+      expected: ./expected/topN-OP-endpoint.yml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: data-hot1
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
+      - service: data-warm1
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
+      - service: data-cold1
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml 
b/test/e2e-v2/cases/lifecycle/nodes.yaml
similarity index 66%
copy from test/e2e-v2/cases/storage/expected/metrics-has-value.yml
copy to test/e2e-v2/cases/lifecycle/nodes.yaml
index 37b19de24..fcc72ce89 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/lifecycle/nodes.yaml
@@ -13,22 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-debuggingtrace: null
-type: TIME_SERIES_VALUES
-results:
-  {{- contains .results }}
-  - metric:
-      labels: []
-    values:
-      {{- contains .values }}
-      - id: {{ notEmpty .id }}
-        value: {{ .value }}
-        owner: null
-        traceid: null
-      - id: {{ notEmpty .id }}
-        value: null
-        owner: null
-        traceid: null
-      {{- end}}
-  {{- end}}
-error: null
+nodes:
+  - name: data-hot1
+    grpc_address: data-hot1:17912
+  - name: data-warm1
+    grpc_address: data-warm1:17912
+  - name: data-cold1
+    grpc_address: data-cold1:17912
+  - name: liaison
+    grpc_address: liaison:17912
diff --git a/test/e2e-v2/cases/lifecycle/data-generator/docker-compose.yml 
b/test/e2e-v2/cases/log/banyandb/docker-compose.yml
similarity index 72%
copy from test/e2e-v2/cases/lifecycle/data-generator/docker-compose.yml
copy to test/e2e-v2/cases/log/banyandb/docker-compose.yml
index b3f6f169e..79eb59a3c 100644
--- a/test/e2e-v2/cases/lifecycle/data-generator/docker-compose.yml
+++ b/test/e2e-v2/cases/log/banyandb/docker-compose.yml
@@ -13,44 +13,53 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+version: '2.1'
+
 services:
   banyandb:
     extends:
       file: ../../../script/docker-compose/base-compose.yml
       service: banyandb
-    ports:
-      - 17912:17912
-      - 17913:17913
-    command: standalone --stream-root-path /tmp/stream-data 
--measure-root-path /tmp/measure-data --measure-metadata-cache-wait-duration 1m 
--stream-metadata-cache-wait-duration 1m --schema-registry-mode=etcd
     networks:
       - e2e
-  
+
   oap:
     extends:
-      file: ../../../script/docker-compose/base-compose.yml
+      file: ../log-base-compose.yml
       service: oap
     environment:
       SW_STORAGE: banyandb
-      SW_STORAGE_BANYANDB_RECORDS_TTL_DAYS: 5
-      SW_STORAGE_BANYANDB_TRACE_TTL_DAYS: 5
     ports:
       - 12800
-    networks:
-      - e2e
     depends_on:
       banyandb:
         condition: service_healthy
+    networks:
+      - e2e
 
-  trace-mocker:
-    image: "ghcr.io/apache/skywalking/trace-mocker:${SW_TRACE_MOCKER_COMMIT}"
-    environment:
-      OAP_HOST: oap
-      MINUS_DAYS: 3
+  agent:
+    extends:
+      file: ../../../script/docker-compose/base-compose.yml
+      service: agent
     networks:
       - e2e
+
+  provider:
+    extends:
+      file: ../../../script/docker-compose/base-compose.yml
+      service: provider
+    ports:
+      - 9090
     depends_on:
       oap:
         condition: service_healthy
+      agent:
+        condition: service_completed_successfully
+    networks:
+      - e2e
 
 networks:
   e2e:
+
+volumes:
+  sw_agent:
diff --git a/test/e2e-v2/cases/zipkin/banyandb/e2e.yaml 
b/test/e2e-v2/cases/log/banyandb/e2e.yaml
similarity index 51%
copy from test/e2e-v2/cases/zipkin/banyandb/e2e.yaml
copy to test/e2e-v2/cases/log/banyandb/e2e.yaml
index 8749cd70d..0891e8f5d 100644
--- a/test/e2e-v2/cases/zipkin/banyandb/e2e.yaml
+++ b/test/e2e-v2/cases/log/banyandb/e2e.yaml
@@ -31,9 +31,9 @@ setup:
 trigger:
   action: http
   interval: 3s
-  times: 10
-  url: http://${frontend_host}:${frontend_8081}
-  method: POST
+  times: -1
+  url: http://${provider_host}:${provider_9090}/logs/trigger
+  method: GET
 
 verify:
   # verify with retry strategy
@@ -43,5 +43,31 @@ verify:
     # the interval between two retries, in millisecond.
     interval: 10s
   cases:
-    - includes:
-      - ../zipkin-cases.yaml
+    # service list
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql service layer GENERAL
+      expected: ../expected/service.yml
+    # service endpoint
+    - query: swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=logs 
--service-name=e2e-service-provider
+      expected: ../expected/service-endpoint.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
+    - query: |
+        swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql logs list 
--service-name=e2e-service-provider --tags level=INFO --trace-id=$( \
+            swctl --display yaml 
--base-url=http://${oap_host}:${oap_12800}/graphql tv2 ls | yq e '.traces | 
map(select(.spans[0].endpointname == "GET:/logs/trigger")) | 
.[0].spans[0].traceid' -
+        )
+      expected: ../expected/logs.yml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git 
a/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml 
b/test/e2e-v2/cases/log/expected/logs.yml
similarity index 54%
copy from test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
copy to test/e2e-v2/cases/log/expected/logs.yml
index cfce15019..8cb1e6569 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
+++ b/test/e2e-v2/cases/log/expected/logs.yml
@@ -14,25 +14,27 @@
 # limitations under the License.
 
 debuggingtrace: null
-type: TIME_SERIES_VALUES
-results:
-  {{- contains .results }}
-  - metric:
-      labels:
-        {{- contains .metric.labels }}
-        - key: p
-          value: {{ .value }}
-        {{- end}}
-    values:
-      {{- contains .values }}
-      - id: {{ notEmpty .id }}
-        value: {{ .value }}
-        owner: null
-        traceid: null
-      - id: {{ notEmpty .id }}
-        value: null
-        owner: null
-        traceid: null
-      {{- end}}
-  {{- end}}
-error: null
+errorreason: null
+logs:
+{{- contains .logs }}
+- servicename: e2e-service-provider
+  serviceid: {{ b64enc "e2e-service-provider" }}.1
+  serviceinstancename: provider1
+  serviceinstanceid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc 
"provider1" }}
+  endpointname: GET:/logs/trigger
+  endpointid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc 
"GET:/logs/trigger" }}
+  traceid: {{ .traceid }}
+  timestamp: {{ gt .timestamp 0 }}
+  contenttype: TEXT
+  content: |
+    {{ notEmpty .content }}
+  tags:
+  {{- contains .tags }}
+  - key: level
+    value: INFO
+  - key: logger
+    value: {{ notEmpty .value }}
+  - key: thread
+    value: {{ notEmpty .value }}
+  {{- end }}
+{{- end }}
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml 
b/test/e2e-v2/cases/log/expected/metrics-has-value.yml
similarity index 96%
copy from test/e2e-v2/cases/storage/expected/metrics-has-value.yml
copy to test/e2e-v2/cases/log/expected/metrics-has-value.yml
index 37b19de24..cae6688ae 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/log/expected/metrics-has-value.yml
@@ -22,7 +22,7 @@ results:
     values:
       {{- contains .values }}
       - id: {{ notEmpty .id }}
-        value: {{ .value }}
+        value: {{ notEmpty .value }}
         owner: null
         traceid: null
       - id: {{ notEmpty .id }}
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml 
b/test/e2e-v2/cases/log/expected/service-endpoint.yml
similarity index 66%
copy from test/e2e-v2/cases/storage/expected/metrics-has-value.yml
copy to test/e2e-v2/cases/log/expected/service-endpoint.yml
index 37b19de24..4efc7bb8a 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/log/expected/service-endpoint.yml
@@ -13,22 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-debuggingtrace: null
-type: TIME_SERIES_VALUES
-results:
-  {{- contains .results }}
-  - metric:
-      labels: []
-    values:
-      {{- contains .values }}
-      - id: {{ notEmpty .id }}
-        value: {{ .value }}
-        owner: null
-        traceid: null
-      - id: {{ notEmpty .id }}
-        value: null
-        owner: null
-        traceid: null
-      {{- end}}
-  {{- end}}
-error: null
+{{- contains .}}
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "GET:/logs/trigger" }}
+  name: GET:/logs/trigger
+{{- end}}
diff --git a/test/e2e-v2/cases/log/expected/service-instance.yml 
b/test/e2e-v2/cases/log/expected/service-instance.yml
new file mode 100644
index 000000000..5f03bc18e
--- /dev/null
+++ b/test/e2e-v2/cases/log/expected/service-instance.yml
@@ -0,0 +1,40 @@
+# Licensed to 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. Apache Software Foundation (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.
+
+{{- contains .}}
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
+  name: {{ notEmpty .name }}
+  attributes:
+  {{- contains .attributes }}
+  - name: OS Name
+    value: Linux
+  - name: hostname
+    value: {{ notEmpty .value }}
+  - name: Process No.
+    value: "1"
+  - name: Start Time
+    value: {{ notEmpty .value }}
+  - name: JVM Arguments
+    value: '{{ notEmpty .value }}'
+  - name: Jar Dependencies
+    value: '{{ notEmpty .value }}'
+  - name: ipv4s
+    value: {{ notEmpty .value }}
+  {{- end}}
+  language: JAVA
+  instanceuuid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
+{{- end}}
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml 
b/test/e2e-v2/cases/log/expected/service.yml
similarity index 66%
copy from test/e2e-v2/cases/storage/expected/metrics-has-value.yml
copy to test/e2e-v2/cases/log/expected/service.yml
index 37b19de24..75d0916f0 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/log/expected/service.yml
@@ -13,22 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-debuggingtrace: null
-type: TIME_SERIES_VALUES
-results:
-  {{- contains .results }}
-  - metric:
-      labels: []
-    values:
-      {{- contains .values }}
-      - id: {{ notEmpty .id }}
-        value: {{ .value }}
-        owner: null
-        traceid: null
-      - id: {{ notEmpty .id }}
-        value: null
-        owner: null
-        traceid: null
-      {{- end}}
-  {{- end}}
-error: null
+{{- contains . }}
+- id: {{ b64enc "e2e-service-provider" }}.1
+  name: e2e-service-provider
+  group: ""
+  shortname: e2e-service-provider
+  normal: true
+  layers:
+    - GENERAL
+{{- end }}
diff --git a/test/e2e-v2/cases/profiling/trace/banyandb/e2e-etcd.yaml 
b/test/e2e-v2/cases/log/lal.yaml
similarity index 55%
copy from test/e2e-v2/cases/profiling/trace/banyandb/e2e-etcd.yaml
copy to test/e2e-v2/cases/log/lal.yaml
index 32ab481a9..4d98c9316 100644
--- a/test/e2e-v2/cases/profiling/trace/banyandb/e2e-etcd.yaml
+++ b/test/e2e-v2/cases/log/lal.yaml
@@ -13,25 +13,23 @@
 # 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.
-
-setup:
-  env: compose
-  file: docker-compose-etcd.yml
-  timeout: 20m
-  init-system-environment: ../../../../script/env
-  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
-
-verify:
-  retry:
-    count: 20
-    interval: 3s
-  cases:
-    - includes:
-        - ../profiling-cases.yaml
+rules:
+  - name: example
+    layer: GENERAL
+    dsl: |
+      filter {
+        text {
+          abortOnFailure false // for test purpose, we want to persist all logs
+          regexp $/(?s)(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}) 
\[TID:(?<tid>.+?)] \[(?<thread>.+?)] (?<level>\w{4,}) (?<logger>.{1,36}) 
(?<msg>.+)/$
+        }
+        extractor {
+          metrics {
+            timestamp log.timestamp as Long
+            labels level: parsed.level, service: log.service, instance: 
log.serviceInstance
+            name "log_count"
+            value 1
+          }
+        }
+        sink {
+        }
+      }
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml 
b/test/e2e-v2/cases/log/log-base-compose.yml
similarity index 66%
copy from test/e2e-v2/cases/storage/expected/metrics-has-value.yml
copy to test/e2e-v2/cases/log/log-base-compose.yml
index 37b19de24..8aebe75dd 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/log/log-base-compose.yml
@@ -13,22 +13,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-debuggingtrace: null
-type: TIME_SERIES_VALUES
-results:
-  {{- contains .results }}
-  - metric:
-      labels: []
-    values:
-      {{- contains .values }}
-      - id: {{ notEmpty .id }}
-        value: {{ .value }}
-        owner: null
-        traceid: null
-      - id: {{ notEmpty .id }}
-        value: null
-        owner: null
-        traceid: null
-      {{- end}}
-  {{- end}}
-error: null
+version: '2.1'
+
+services:
+  oap:
+    extends:
+      file: ../../script/docker-compose/base-compose.yml
+      service: oap
+    environment:
+      SW_LOG_LAL_FILES: test
+      SW_LOG_MAL_FILES: test
+    volumes:
+      - ./lal.yaml:/skywalking/config/lal/test.yaml
+      - ./log-mal.yaml:/skywalking/config/log-mal-rules/test.yaml
+    networks:
+      - e2e
+
+networks:
+  e2e:
diff --git a/test/e2e-v2/cases/log/log-mal.yaml 
b/test/e2e-v2/cases/log/log-mal.yaml
new file mode 100644
index 000000000..1021b85e3
--- /dev/null
+++ b/test/e2e-v2/cases/log/log-mal.yaml
@@ -0,0 +1,36 @@
+# 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.
+
+# This will parse a textual representation of a duration. The formats
+# accepted are based on the ISO-8601 duration format {@code PnDTnHnMn.nS}
+# with days considered to be exactly 24 hours.
+# <p>
+# Examples:
+# <pre>
+#    "PT20.345S" -- parses as "20.345 seconds"
+#    "PT15M"     -- parses as "15 minutes" (where a minute is 60 seconds)
+#    "PT10H"     -- parses as "10 hours" (where an hour is 3600 seconds)
+#    "P2D"       -- parses as "2 days" (where a day is 24 hours or 86400 
seconds)
+#    "P2DT3H4M"  -- parses as "2 days, 3 hours and 4 minutes"
+#    "P-6H3M"    -- parses as "-6 hours and +3 minutes"
+#    "-P6H3M"    -- parses as "-6 hours and -3 minutes"
+#    "-P-6H+3M"  -- parses as "+6 hours and -3 minutes"
+# </pre>
+
+expSuffix: instance(['service'], ['instance'], Layer.GENERAL)
+metricPrefix: log
+metricsRules:
+  - name: count_info
+    exp: log_count.tagEqual('level', 'INFO').sum(['service', 
'instance']).downsampling(SUM)
diff --git a/test/e2e-v2/cases/profiling/trace/banyandb/e2e-etcd.yaml 
b/test/e2e-v2/cases/profiling/trace/banyandb/e2e-etcd.yaml
index 32ab481a9..940e1b19d 100644
--- a/test/e2e-v2/cases/profiling/trace/banyandb/e2e-etcd.yaml
+++ b/test/e2e-v2/cases/profiling/trace/banyandb/e2e-etcd.yaml
@@ -35,3 +35,17 @@ verify:
   cases:
     - includes:
         - ../profiling-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/profiling/trace/banyandb/e2e-property.yaml 
b/test/e2e-v2/cases/profiling/trace/banyandb/e2e-property.yaml
index b92258adf..40ab8648a 100644
--- a/test/e2e-v2/cases/profiling/trace/banyandb/e2e-property.yaml
+++ b/test/e2e-v2/cases/profiling/trace/banyandb/e2e-property.yaml
@@ -35,3 +35,17 @@ verify:
   cases:
     - includes:
         - ../profiling-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/rover/process/istio/banyandb/e2e-banyandb.yaml 
b/test/e2e-v2/cases/rover/process/istio/banyandb/e2e-banyandb.yaml
index a6eb6f79b..200167081 100644
--- a/test/e2e-v2/cases/rover/process/istio/banyandb/e2e-banyandb.yaml
+++ b/test/e2e-v2/cases/rover/process/istio/banyandb/e2e-banyandb.yaml
@@ -52,6 +52,14 @@ setup:
     - name: Wait for BanyanDB
       command: kubectl rollout status deployment/banyandb -n istio-system 
--timeout=120s
     - name: Install SkyWalking
+      # To enable BanyanDB access logs for debugging, add the following --set 
flags to the helm install command:
+      #   --set 
"banyandb.standalone.env[0].name=BYDB_ENABLE_INGESTION_ACCESS_LOG"
+      #   --set "banyandb.standalone.env[0].value=\"true\""
+      #   --set "banyandb.standalone.env[1].name=BYDB_ENABLE_QUERY_ACCESS_LOG"
+      #   --set "banyandb.standalone.env[1].value=\"true\""
+      #   --set "banyandb.standalone.env[2].name=BYDB_ACCESS_LOG_ROOT_PATH"
+      #   --set "banyandb.standalone.env[2].value=/tmp"
+      # Note: access logs use Go channels with internal mutex locks, which 
adds contention to the request path.
       command: |
         rm -rf skywalking-helm
         helm pull oci://ghcr.io/apache/skywalking-helm/skywalking-helm \
@@ -101,3 +109,18 @@ verify:
           swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=productpage.default | yq e '.[0].name' - \
         )
       expected: expected/process.yml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - namespace: istio-system
+        label-selector: app=banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/storage/banyandb/e2e-etcd.yaml 
b/test/e2e-v2/cases/storage/banyandb/e2e-etcd.yaml
index 2b3c65806..02b072ead 100644
--- a/test/e2e-v2/cases/storage/banyandb/e2e-etcd.yaml
+++ b/test/e2e-v2/cases/storage/banyandb/e2e-etcd.yaml
@@ -48,3 +48,17 @@ verify:
   cases:
     - includes:
       - ../storage-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/cases/storage/banyandb/e2e-property.yaml 
b/test/e2e-v2/cases/storage/banyandb/e2e-property.yaml
index ec682c7cf..7438a3da8 100644
--- a/test/e2e-v2/cases/storage/banyandb/e2e-property.yaml
+++ b/test/e2e-v2/cases/storage/banyandb/e2e-property.yaml
@@ -48,3 +48,17 @@ verify:
   cases:
     - includes:
       - ../storage-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git 
a/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml 
b/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
index cfce15019..2ca902c8b 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
+++ b/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
@@ -21,12 +21,12 @@ results:
       labels:
         {{- contains .metric.labels }}
         - key: p
-          value: {{ .value }}
+          value: {{ notEmpty .value }}
         {{- end}}
     values:
       {{- contains .values }}
       - id: {{ notEmpty .id }}
-        value: {{ .value }}
+        value: {{ notEmpty .value }}
         owner: null
         traceid: null
       - id: {{ notEmpty .id }}
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 37b19de24..cae6688ae 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
@@ -22,7 +22,7 @@ results:
     values:
       {{- contains .values }}
       - id: {{ notEmpty .id }}
-        value: {{ .value }}
+        value: {{ notEmpty .value }}
         owner: null
         traceid: null
       - id: {{ notEmpty .id }}
diff --git a/test/e2e-v2/cases/zipkin/banyandb/e2e.yaml 
b/test/e2e-v2/cases/zipkin/banyandb/e2e.yaml
index 8749cd70d..2e2f9dad8 100644
--- a/test/e2e-v2/cases/zipkin/banyandb/e2e.yaml
+++ b/test/e2e-v2/cases/zipkin/banyandb/e2e.yaml
@@ -31,7 +31,7 @@ setup:
 trigger:
   action: http
   interval: 3s
-  times: 10
+  times: -1
   url: http://${frontend_host}:${frontend_8081}
   method: POST
 
@@ -45,3 +45,17 @@ verify:
   cases:
     - includes:
       - ../zipkin-cases.yaml
+
+cleanup:
+  on: always
+  collect:
+    on: failure
+    output-dir: $SW_INFRA_E2E_LOG_DIR/banyandb-data
+    items:
+      - service: banyandb
+        paths:
+          - /tmp/trace/
+          - /tmp/stream/
+          - /tmp/measure/
+          - /tmp/property/
+          - /tmp/schema-property/
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env
index ac6f7da59..33b27fad2 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/script/env
@@ -26,7 +26,7 @@ SW_ROVER_COMMIT=4c0cb8429a96f190ea30eac1807008d523c749c3
 SW_AGENT_PHP_COMMIT=3192c553002707d344bd6774cfab5bc61f67a1d3
 SW_PREDICTOR_COMMIT=54a0197654a3781a6f73ce35146c712af297c994
 
-SW_OAP_COMMIT=4325e74919d0bf8496e9d861e3bbde99cffff597
+SW_OAP_COMMIT=6248d1b7259dd24cc8218a8513d14cf018c519f0
 SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=a2a67ca63084cddf82303155c185e3c24cf07eef
 SW_CTL_COMMIT=3b675df73824bbb80e6aabf6a95d110feb37b6b1
 SW_TRACE_MOCKER_COMMIT=a2a67ca63084cddf82303155c185e3c24cf07eef


Reply via email to