blob: f27334445997e1630002a2081e6c58ef0eeb8237 [file] [log] [blame]
# 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 file is used to show how to write configuration files and can be used to test.
setup:
env: kind
file: kind.yaml
init-system-environment: ../../../../../base/env
kind:
import-images:
- apache/skywalking-rover: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 swctl
command: bash test/e2e/base/scripts/prepare/setup-e2e-shell/install.sh swctl
- name: install kubectl
command: bash test/e2e/base/scripts/prepare/setup-e2e-shell/install.sh kubectl
- name: install istio
command: |
bash test/e2e/base/scripts/prepare/setup-e2e-shell/install.sh istioctl
istioctl install -y --set profile=demo
kubectl label namespace default istio-injection=enabled
- name: Install helm
command: bash test/e2e/base/scripts/prepare/setup-e2e-shell/install.sh helm
- name: Install SkyWalking
command: |
rm -rf skywalking-kubernetes && git clone https://github.com/apache/skywalking-kubernetes.git
cd skywalking-kubernetes
git reset --hard a7d8ff959b46e70cb10428c6714013563ae38cbc
cd chart
mkdir -p skywalking/files/conf.d/oap/meter-analyzer-config/ && cp ../../test/e2e/cases/profiling/task/network/envoy/network-profiling.yaml skywalking/files/conf.d/oap/meter-analyzer-config/network-profiling.yaml
helm dep up skywalking
helm -n istio-system install skywalking skywalking \
--set fullnameOverride=skywalking \
--set elasticsearch.replicas=1 \
--set elasticsearch.minimumMasterNodes=1 \
--set elasticsearch.imageTag=7.5.1 \
--set oap.env.SW_METER_ANALYZER_ACTIVE_FILES='network-profiling' \
--set oap.envoy.als.enabled=true \
--set oap.replicas=1 \
--set ui.image.repository=ghcr.io/apache/skywalking/ui \
--set ui.image.tag=${SW_OAP_COMMIT} \
--set oap.image.tag=${SW_OAP_COMMIT} \
--set oap.image.repository=ghcr.io/apache/skywalking/oap \
--set oap.storageType=elasticsearch
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: Install SkyWalking Rover
command: |
envsubst < test/e2e/cases/profiling/task/network/envoy/rover.yaml | kubectl apply -f -
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:
# 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=default::productpage
expected: expected/service-instance.yml
- query: swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql process list --service-name=default::productpage --instance-name=productpage
expected: expected/process.yml
# create network profiling task
- query: swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql profiling ebpf create network --service-name=default::productpage --instance-name=productpage
expected: expected/profiling-create.yml
- query: swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql dep process --service-name default::productpage --instance-name=productpage
expected: expected/dependency-processs.yml
# single value of process relation, client/server side read/write
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_client_write_cpm|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_client_write_total_bytes|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_client_write_avg_exe_time|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_client_read_cpm|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_server_write_cpm|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
# histogram value of process relation, client side write_rtt/write_exe/read time
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics multiple-linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name=process_relation_client_write_rtt_time_percentile|yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics multiple-linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name=process_relation_client_write_exe_time_percentile|yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics multiple-linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name=process_relation_client_read_exe_time_percentile|yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics multiple-linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name=process_relation_server_write_rtt_time_percentile|yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics multiple-linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name=process_relation_server_write_exe_time_percentile|yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics multiple-linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name=process_relation_server_write_exe_time_percentile|yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
# HTTP1 analyzer
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_http1_request_cpm|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_http1_request_package_size|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_http1_response_package_size|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics multiple-linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_http1_request_package_size_percentile|yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_http1_server_duration|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql metrics linear \
--service-name default::productpage --instance-name productpage --process-name envoy \
--dest-service-name default::productpage --dest-instance-name productpage --dest-process-name /usr/local/bin/python \
--name process_relation_http1_client_duration|yq e 'to_entries' -
expected: expected/metrics-has-value.yml