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
