blob: 830ceaa87ecf8699e1c2bd5d5c5608daa8a8dc53 [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.
setup:
env: kind
file: ../kind.yaml
steps:
- name: prepare e2e.yaml
command: bash hack/prepare-e2e.sh
- name: install cert-manager
command: |
# kind k8s cluster is in $TMPDIR
export KUBECONFIG=$TMPDIR/e2e-k8s.config
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.0/cert-manager.yaml
wait:
- namespace: cert-manager
resource: pod
for: condition=Ready
- name: install operator
command: |
export OPERATOR_IMG=controller
make -C operator docker-build
kind load docker-image controller
make -C operator install
make -C operator deploy
wait:
- namespace: skywalking-swck-system
resource: pod
for: condition=Ready
- name: setup oapserver and ui
command: |
kubectl create namespace skywalking-system
kubectl apply -f test/e2e/skywalking-components.yaml
wait:
- namespace: skywalking-system
resource: OAPServer/skywalking-system
for: condition=Available
- namespace: skywalking-system
resource: UI/skywalking-system
for: condition=Available
- name: setup java agent demo(test for dynamic configuration)
command: |
kubectl label namespace skywalking-system swck-injection=enabled
sed 's/oap-service/skywalking-system-oap.skywalking-system/' test/e2e/demo.yaml | kubectl create -f -
wait:
- namespace: skywalking-system
resource: deployment/demo
for: condition=Available
- name: setup oapserverconfig(static configuration)
command: |
export oap_podname=$(kubectl get pod -lapp=oap -n skywalking-system -o jsonpath='{.items[*].metadata.name}')
kubectl apply -f test/e2e/oapserverconfig-demo.yaml
- name: wait the old pod teminated
command: |
while kubectl get pod $oap_podname -n skywalking-system > /dev/null; \
do \
sleep 0.1; \
done
- name: setup java agent demo(test for static configuration)
command: |
sed 's/oap-service/skywalking-system-oap.skywalking-system/' test/e2e/resource.yaml | kubectl create -f -
wait:
- namespace: skywalking-system
resource: deployment/songs-deployment
for: condition=Available
- name: setup oapserverdynamicconfig(dynamic configuration)
command: |
sed 's/default: 0.1/default: 500/' test/e2e/oapserverdynamicconfig-demo.yaml | kubectl apply -f -
kubectl get po -A
kind:
expose-ports:
- namespace: skywalking-system
resource: service/demo
port: 8085
- namespace: skywalking-system
resource: service/songs
port: 80
- namespace: skywalking-system
resource: service/skywalking-system-oap
port: 12800
- namespace: skywalking-system
resource: service/skywalking-system-ui
port: 80
timeout: 20m
cleanup:
# always never success failure
on: always
trigger:
action: http
interval: 5s
times: 5
url: http://${service_demo_host}:${service_demo_8085}/hello
method: GET
verify:
# verify with retry strategy
retry:
# max retry count
count: 20
# the interval between two attempts, e.g. 10s, 1m.
interval: 10s
cases:
# test oapserver
- query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql service ls
expected: ../verify/service.yaml
- query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql metrics linear --name service_cpm --service-name Your_ApplicationName | yq e 'to_entries' -
expected: ../verify/metrics.yaml
- query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql endpoint list --keyword=hello --service-name Your_ApplicationName
expected: ../verify/endpoint.yaml
- query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql metrics linear --name endpoint_cpm --endpoint-name GET:/hello --service-name Your_ApplicationName | yq e 'to_entries' -
expected: ../verify/metrics.yaml
- includes:
- ../ui-cases.yaml
# test oapsever's static configuration
- query: |
swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql logs list --service-name=agent::songs --tags level=INFO --trace-id=$( \
swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql trace ls \
| yq e '.traces | select(.[].endpointnames[0]=="HikariCP/Connection/getConnection") | .[0].traceids[0]' -
) | yq e '.logs' -
expected: ../verify/logs.yaml
- query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql metrics linear --name=log_count_info --instance-name=songs --service-name=agent::songs | yq e 'to_entries' -
expected: ../verify/metrics.yaml
# test oapsever's dynamic configuration
- query: swctl --display yaml --base-url=http://${service_skywalking_system_oap_host}:${service_skywalking_system_oap_12800}/graphql metrics linear --name=service_apdex --service-name=Your_ApplicationName | yq e 'to_entries' -
expected: ../verify/service-apdex.yaml