| # 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: ../../../../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 |
| 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 SkyWalking |
| command: | |
| rm -rf skywalking-kubernetes && git clone https://github.com/apache/skywalking-kubernetes.git |
| cd skywalking-kubernetes |
| cd chart |
| 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=skywalking/ui \ |
| --set ui.image.tag=latest \ |
| --set oap.image.tag=latest \ |
| --set oap.image.repository=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-v2/cases/profiling/ebpf/network/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 |