e2e.yaml 8.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# 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: compose
  file: docker-compose.yml
  timeout: 1200
22
  init-system-environment: ../../../script/env
23 24 25 26 27 28 29 30 31
  steps:
    - 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 etcdctl
      command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh etcdctl

cleanup:
32
  on: success
33 34 35

trigger:
  action: http
36
  interval: 3s
37 38 39 40 41 42 43
  times: 10
  url: http://${consumer_host}:${consumer_9092}/info
  method: POST

verify:
  retry:
    count: 20
44
    interval: 3s
45 46 47 48 49
  cases:
    # basic check: service list
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
      expected: expected/service.yml
    # basic check: service metrics
50
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name service_sla --service-name=e2e-service-provider | yq e 'to_entries' -
51 52
      expected: expected/metrics-has-value.yml
    # basic check: service endpoint
53
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
54 55
      expected: expected/service-endpoint.yml
    # basic check: service endpoint metrics
56
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name endpoint_cpm --endpoint-name=POST:/info --service-name=e2e-service-provider |yq e 'to_entries' -
57 58
      expected: expected/metrics-has-value.yml
    # basic check: dependency service
59
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
60 61 62 63 64 65 66
      expected: expected/dependency-services.yml

    # native management: 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

    # native jvm: service instance jvm metrics
67
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider | yq e 'to_entries' -
68 69 70 71 72 73
      expected: expected/metrics-has-value.yml

    # native tracing: trace segment list
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls
      expected: expected/traces-list.yml
    # native tracing: trace detail
74 75 76 77 78
    - query: |
        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace $( \
          swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls \
            | yq e '.traces | select(.[].endpointnames[0]=="POST:/info") | .[0].traceids[0]' - \
        )
79 80 81
      expected: expected/trace-info-detail.yml

    # native meter: instance meter
82
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name meter_jvm_classes_loaded --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
83 84 85 86 87 88 89
      expected: expected/metrics-has-value.yml

    # native event: event list
    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql event list
      expected: expected/event-list.yml

    # native log: logs list
90 91 92 93 94
    - query: |
        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql logs list --service-name=e2e-service-provider --trace-id=$( \
            swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls \
              | yq e '.traces | select(.[].endpointnames[0]=="POST:/info") | .[0].traceids[0]' -
        )
95 96 97
      expected: expected/logs-list.yml

    # native profile: create task
98 99 100 101 102 103 104
    - query: |
        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql \
          profile create --service-name=e2e-service-provider \
            --endpoint-name=POST:/info \
            --start-time=$((($(date +%s)+5)*1000)) \
            --duration=1 --min-duration-threshold=0 \
            --dump-period=10 --max-sampling-count=9
105 106
      expected: expected/profile-create.yml
    # native profile: sleep to wait agent notices and query profile list
107
    - query: sleep 10 && swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list -service-name=e2e-service-provider --endpoint-name=POST:/info
108 109 110 111 112
      expected: expected/profile-list.yml
    # native profile: sleep to wait segment report and query profiled segment list
    - query: |
        curl -X POST http://${consumer_host}:${consumer_9092}/info > /dev/null;
        sleep 5;
113 114 115
        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile segment-list --task-id=$( \
          swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list --service-name=e2e-service-provider --endpoint-name=POST:/info | yq e '.[0].id' - \
        )
116 117
      expected: expected/profile-segment-list.yml
    # native profile: query profiled segment
118 119 120 121 122 123
    - query: |
        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile profiled-segment --segment-id=$( \
          swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile segment-list --task-id=$( \
            swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list --service-name=e2e-service-provider --endpoint-name=POST:/info | yq e '.[0].id' - \
          ) | yq e '.[0].segmentid' - \
        )
124 125 126
      expected: expected/profile-segment-detail.yml
    # native profile: query profiled segment
    - query: |
127 128 129 130 131
        segmentid=$( \
          swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile segment-list --task-id=$( \
            swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list --service-name=e2e-service-provider --endpoint-name=POST:/info | yq e '.[0].id' - \
          ) | yq e '.[0].segmentid' - \
        );
132 133 134 135 136 137 138 139 140 141 142 143
        start=$(swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile profiled-segment --segment-id=$segmentid|yq e '.spans.[0].starttime' -);
        end=$(swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile profiled-segment --segment-id=$segmentid|yq e '.spans.[0].endtime' -);
        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile profiled-analyze --segment-id=$segmentid --time-ranges=$(echo $start"-"$end)
      expected: expected/profile-segment-analyze.yml

    # native CDS: using etcdctl to update trace span limit, "/users" should have more than one span because it need DB save
    - query: |
        etcdctl --endpoints http://${etcd_host}:${etcd_2379}/ put /skywalking/configuration-discovery.default.agentConfigurations 'configurations:
               e2e-service-provider:
                 agent.span_limit_per_segment: 1' | yq e '{"message": .}' -
      expected: expected/etcd-put.yml
    - query: |
144
        curl -s -XPOST http://${provider_host}:${provider_9090}/users -d '{"id":"123","name":"SinglesBar"}' -H "Content-Type: application/json" > /dev/null;
145
        sleep 5;
146 147 148 149 150
        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace $( \
          swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql trace ls --order startTime --service-name "e2e-service-provider" --endpoint-name "POST:/users" \
            | yq e '.traces[0].traceids[0]' - \
        )
      expected: expected/trace-users-detail.yml