Replace e2e cases to e2e-v2: Storage (#7934)
* replace log e2e cases to e2e-v2. * update change log * fix change log. * revert proto chenge * fix e2e * active h2 * contains * revert storage e2e mis-change
This commit is contained in:
parent
2fcbe8e998
commit
b5578b68fd
|
|
@ -36,17 +36,27 @@ jobs:
|
|||
timeout-minutes: 90
|
||||
strategy:
|
||||
matrix:
|
||||
storage: ['mysql', 'influxdb', 'opensearch', 'tidb', 'postgresql']
|
||||
config-file:
|
||||
- storage/h2/e2e.yaml
|
||||
- storage/opensearch/e2e.yaml
|
||||
- storage/mysql/e2e.yaml
|
||||
- storage/tidb/e2e.yaml
|
||||
- storage/influxdb/e2e.yaml
|
||||
- storage/postgres/e2e.yaml
|
||||
include:
|
||||
- { storage: es, es-version: 6.3.2 }
|
||||
- { storage: es, es-version: 7.0.0 }
|
||||
- { storage: es, es-version: 7.8.0 }
|
||||
- { storage: es, es-version: 7.10.1 }
|
||||
- { storage: es, es-version: 7.14.0 }
|
||||
- { storage: es, es-version: 7.15.0 }
|
||||
env:
|
||||
SW_STORAGE: ${{ matrix.storage }}
|
||||
ES_VERSION: ${{ matrix.es-version }}
|
||||
- es-version: 6.3.2
|
||||
config-file: storage/es/e2e.yaml
|
||||
- es-version: 7.0.0
|
||||
config-file: storage/es/e2e.yaml
|
||||
- es-version: 7.8.0
|
||||
config-file: storage/es/e2e.yaml
|
||||
- es-version: 7.10.1
|
||||
config-file: storage/es/e2e.yaml
|
||||
- es-version: 7.14.0
|
||||
config-file: storage/es/e2e.yaml
|
||||
- es-version: 7.15.0
|
||||
config-file: storage/es/e2e.yaml
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
|
|
@ -55,9 +65,11 @@ jobs:
|
|||
uses: ./.github/actions/skip
|
||||
- name: Run E2E Test
|
||||
if: env.SKIP_CI != 'true'
|
||||
uses: ./.github/actions/e2e-test
|
||||
uses: ./.github/actions/infra-e2e-test
|
||||
env:
|
||||
ES_VERSION: ${{ matrix.es-version }}
|
||||
with:
|
||||
test_class: org.apache.skywalking.e2e.storage.StorageE2E
|
||||
config-file: ${{ matrix.config-file }}
|
||||
|
||||
Storage:
|
||||
if: (github.event_name == 'schedule' && github.repository == 'apache/skywalking') || (github.event_name != 'schedule')
|
||||
|
|
@ -66,4 +78,4 @@ jobs:
|
|||
needs: [StoragePlugins]
|
||||
steps:
|
||||
- name: To pass or not pass
|
||||
run: echo "Just to make the GitHub merge button green"
|
||||
run: echo "Just to make the GitHub merge button green"
|
||||
|
|
@ -6,7 +6,7 @@ Release Notes.
|
|||
------------------
|
||||
#### Project
|
||||
|
||||
* Replace e2e cases to e2e-v2:
|
||||
* Replace e2e cases to e2e-v2:
|
||||
- Simple: JDK, Auth, SSL, mTLS
|
||||
- Lua Nginx
|
||||
- SelfObservability
|
||||
|
|
@ -18,7 +18,8 @@ Release Notes.
|
|||
- go2sky
|
||||
- log
|
||||
- Python
|
||||
|
||||
- Storage
|
||||
|
||||
#### OAP Server
|
||||
|
||||
* Add component definition for `Jackson`.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
# 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.
|
||||
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
es:
|
||||
image: elastic/elasticsearch:${ES_VERSION}
|
||||
expose:
|
||||
- 9200
|
||||
networks:
|
||||
- e2e
|
||||
environment:
|
||||
- discovery.type=single-node
|
||||
- cluster.routing.allocation.disk.threshold_enabled=false
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9200"]
|
||||
interval: 5s
|
||||
timeout: 60s
|
||||
retries: 120
|
||||
|
||||
oap:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: oap
|
||||
environment:
|
||||
SW_STORAGE: elasticsearch
|
||||
SW_STORAGE_ES_CLUSTER_NODES: es:9200
|
||||
ports:
|
||||
- 12800
|
||||
depends_on:
|
||||
es:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- e2e
|
||||
|
||||
provider:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: provider
|
||||
ports:
|
||||
- 9090
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- e2e
|
||||
|
||||
consumer:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: consumer
|
||||
ports:
|
||||
- 9092
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
provider:
|
||||
condition: service_healthy
|
||||
|
||||
networks:
|
||||
e2e:
|
||||
|
|
@ -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.
|
||||
|
||||
# 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
|
||||
init-system-environment: ../../../script/env
|
||||
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
|
||||
|
||||
trigger:
|
||||
action: http
|
||||
interval: 3s
|
||||
times: 10
|
||||
url: http://${consumer_host}:${consumer_9092}/info
|
||||
method: POST
|
||||
|
||||
verify:
|
||||
# verify with retry strategy
|
||||
retry:
|
||||
# max retry count
|
||||
count: 20
|
||||
# the interval between two retries, in millisecond.
|
||||
interval: 10s
|
||||
cases:
|
||||
# service list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
|
||||
expected: ../expected/service.yml
|
||||
# service metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# service endpoint
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
|
||||
expected: ../expected/service-endpoint.yml
|
||||
# service endpoint metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# dependency service
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
|
||||
expected: ../expected/dependency-services.yml
|
||||
# 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
|
||||
# service instance jvm metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
|
||||
# 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
|
||||
- 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]' - \
|
||||
)
|
||||
expected: ../expected/trace-info-detail.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 profile: create task
|
||||
- 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
|
||||
expected: ../expected/profile-create.yml
|
||||
# native profile: sleep to wait agent notices and query profile list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list -service-name=e2e-service-provider --endpoint-name=POST:/info
|
||||
expected: ../expected/profile-list.yml
|
||||
|
||||
# native profile: sleep to wait segment report and query profiled segment list
|
||||
- query: |
|
||||
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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-list.yml
|
||||
|
||||
# native profile: query profiled segment
|
||||
- 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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-detail.yml
|
||||
|
||||
# native profile: query profiled segment analyze
|
||||
- query: |
|
||||
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' - \
|
||||
);
|
||||
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
|
||||
|
||||
- query: |
|
||||
curl -s -XPOST http://${provider_host}:${provider_9090}/users -d '{"id":"123","name":"SinglesBar"}' -H "Content-Type: application/json" > /dev/null;
|
||||
sleep 5;
|
||||
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
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# 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.
|
||||
|
||||
nodes:
|
||||
{{- contains .nodes }}
|
||||
- id: {{ b64enc "e2e-service-provider"}}.1
|
||||
name: e2e-service-provider
|
||||
type: Tomcat
|
||||
isreal: true
|
||||
- id: {{ b64enc "e2e-service-consumer"}}.1
|
||||
name: e2e-service-consumer
|
||||
type: Tomcat
|
||||
isreal: true
|
||||
{{- end }}
|
||||
calls:
|
||||
{{- contains .calls }}
|
||||
- source: {{ b64enc "e2e-service-consumer"}}.1
|
||||
sourcecomponents: []
|
||||
target: {{ b64enc "e2e-service-provider"}}.1
|
||||
targetcomponents: []
|
||||
id: {{ b64enc "e2e-service-consumer"}}.1-{{ b64enc "e2e-service-provider"}}.1
|
||||
detectpoints:
|
||||
- CLIENT
|
||||
- SERVER
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
# 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.
|
||||
|
||||
events:
|
||||
{{- contains .events }}
|
||||
- uuid: {{ notEmpty .uuid }}
|
||||
source:
|
||||
service: e2e-service-provider
|
||||
serviceinstance: provider1
|
||||
endpoint: ""
|
||||
name: Start
|
||||
type: Normal
|
||||
message: Start Java Application
|
||||
parameters:
|
||||
{{- contains .parameters }}
|
||||
- key: OPTS
|
||||
value: {{ notEmpty .value }}
|
||||
{{- end }}
|
||||
starttime: {{ gt .starttime 0 }}
|
||||
endtime: {{ gt .endtime 0 }}
|
||||
- uuid: {{ notEmpty .uuid }}
|
||||
source:
|
||||
service: e2e-service-consumer
|
||||
serviceinstance: consumer1
|
||||
endpoint: ""
|
||||
name: Start
|
||||
type: Normal
|
||||
message: Start Java Application
|
||||
parameters:
|
||||
{{- contains .parameters }}
|
||||
- key: OPTS
|
||||
value: {{ notEmpty .value }}
|
||||
{{- end }}
|
||||
starttime: {{ gt .starttime 0 }}
|
||||
endtime: {{ gt .endtime 0 }}
|
||||
{{- end }}
|
||||
total: {{ gt .total 0 }}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# 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.
|
||||
|
||||
{{- contains . }}
|
||||
- key: {{ notEmpty .key }}
|
||||
value: {{ ge .value 1 }}
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# 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.
|
||||
|
||||
id: {{ notEmpty .id }}
|
||||
errorreason: null
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
# 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.
|
||||
|
||||
{{- contains . }}
|
||||
- id: {{ notEmpty .id }}
|
||||
serviceid: {{ b64enc "e2e-service-provider" }}.1
|
||||
servicename: ""
|
||||
endpointname: POST:/info
|
||||
starttime: {{ gt .starttime 0 }}
|
||||
duration: 1
|
||||
mindurationthreshold: 0
|
||||
dumpperiod: 10
|
||||
maxsamplingcount: 9
|
||||
logs:
|
||||
{{- contains .logs }}
|
||||
- id: {{ notEmpty .id }}
|
||||
instanceid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
|
||||
operationtype: {{ notEmpty .operationtype }}
|
||||
instancename: ""
|
||||
operationtime: {{ gt .operationtime 0 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# 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.
|
||||
|
||||
tip: null
|
||||
trees:
|
||||
{{- contains .trees }}
|
||||
- elements:
|
||||
{{- contains .elements }}
|
||||
- id: "{{ notEmpty .id }}"
|
||||
parentid: "{{ notEmpty .parentid }}"
|
||||
codesignature: "java.lang.Thread.sleep:-2"
|
||||
duration: {{ gt .duration 0 }}
|
||||
durationchildexcluded: {{ gt .durationchildexcluded 0 }}
|
||||
count: {{ gt .count 0 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
# 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.
|
||||
|
||||
spans:
|
||||
{{- contains .spans }}
|
||||
- spanid: 0
|
||||
parentspanid: -1
|
||||
servicecode: e2e-service-provider
|
||||
serviceinstancename: ""
|
||||
starttime: {{ gt .starttime 0 }}
|
||||
endtime: {{ gt .endtime 0 }}
|
||||
endpointname: POST:/info
|
||||
type: Entry
|
||||
peer: ""
|
||||
component: Tomcat
|
||||
iserror: false
|
||||
layer: Http
|
||||
tags:
|
||||
{{- contains .tags }}
|
||||
- key: url
|
||||
value: {{ notEmpty .value }}
|
||||
- key: http.method
|
||||
value: POST
|
||||
{{- end }}
|
||||
logs: []
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# 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.
|
||||
|
||||
{{- contains . }}
|
||||
- segmentid: {{ notEmpty .segmentid }}
|
||||
endpointnames:
|
||||
- POST:/info
|
||||
duration: {{ gt .duration 0 }}
|
||||
start: "{{ notEmpty .start }}"
|
||||
iserror: false
|
||||
traceids:
|
||||
{{- contains .traceids }}
|
||||
- {{ notEmpty . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# 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.
|
||||
|
||||
{{- contains .}}
|
||||
- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "POST:/info" }}
|
||||
name: POST:/info
|
||||
{{- end}}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
# Licensed to 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. Apache Software Foundation (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.
|
||||
|
||||
{{- contains .}}
|
||||
- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
|
||||
name: {{ notEmpty .name }}
|
||||
attributes:
|
||||
{{- contains .attributes }}
|
||||
- name: OS Name
|
||||
value: Linux
|
||||
- name: hostname
|
||||
value: {{ notEmpty .value }}
|
||||
- name: Process No.
|
||||
value: "1"
|
||||
- name: Start Time
|
||||
value: {{ notEmpty .value }}
|
||||
- name: JVM Arguments
|
||||
value: '{{ notEmpty .value }}'
|
||||
- name: Jar Dependencies
|
||||
value: '{{ notEmpty .value }}'
|
||||
- name: ipv4s
|
||||
value: {{ notEmpty .value }}
|
||||
{{- end}}
|
||||
language: JAVA
|
||||
instanceuuid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
|
||||
{{- end}}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# 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.
|
||||
|
||||
{{- contains . }}
|
||||
- id: {{ b64enc "e2e-service-provider" }}.1
|
||||
name: e2e-service-provider
|
||||
group: ""
|
||||
- id: {{ b64enc "e2e-service-consumer" }}.1
|
||||
name: e2e-service-consumer
|
||||
group: ""
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
# 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.
|
||||
|
||||
spans:
|
||||
{{- contains .spans }}
|
||||
- traceid: {{ notEmpty .traceid }}
|
||||
segmentid: {{ notEmpty .segmentid }}
|
||||
spanid: {{ .spanid }}
|
||||
parentspanid: {{ .parentspanid }}
|
||||
refs:
|
||||
{{- if eq .servicecode "e2e-service-provider" }}
|
||||
{{- contains .refs }}
|
||||
- traceid: {{ notEmpty .traceid }}
|
||||
parentsegmentid: {{ notEmpty .parentsegmentid }}
|
||||
parentspanid: 1
|
||||
type: CROSS_PROCESS
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if eq .servicecode "e2e-service-consumer" }}
|
||||
[]
|
||||
{{- end }}
|
||||
servicecode: {{ notEmpty .servicecode }}
|
||||
serviceinstancename: {{ notEmpty .serviceinstancename }}
|
||||
starttime: {{ gt .starttime 0 }}
|
||||
endtime: {{ gt .endtime 0 }}
|
||||
endpointname:
|
||||
{{- if eq .type "Exit" }}
|
||||
/info
|
||||
{{ else }}
|
||||
POST:/info
|
||||
{{- end }}
|
||||
type: {{ notEmpty .type }}
|
||||
peer:
|
||||
{{- if eq .type "Exit" }}
|
||||
provider:9090
|
||||
{{ else }}
|
||||
""
|
||||
{{- end }}
|
||||
component:
|
||||
{{- if eq .type "Exit" }}
|
||||
SpringRestTemplate
|
||||
{{- end }}
|
||||
{{- if eq .type "Entry" }}
|
||||
Tomcat
|
||||
{{- end }}
|
||||
iserror: false
|
||||
layer: Http
|
||||
tags:
|
||||
{{- contains .tags }}
|
||||
- key: http.method
|
||||
value: POST
|
||||
- key: url
|
||||
value: {{ notEmpty .value }}
|
||||
{{- end }}
|
||||
logs: []
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
# 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.
|
||||
|
||||
spans:
|
||||
{{- contains .spans }}
|
||||
- traceid: {{ .traceid }}
|
||||
segmentid: {{ .segmentid }}
|
||||
spanid: {{ .spanid }}
|
||||
parentspanid: {{ .parentspanid }}
|
||||
refs: []
|
||||
servicecode: e2e-service-provider
|
||||
serviceinstancename: provider1
|
||||
starttime: {{ gt .starttime 0 }}
|
||||
endtime: {{ gt .endtime 0 }}
|
||||
endpointname: POST:/users
|
||||
type: Entry
|
||||
peer: ""
|
||||
component: Tomcat
|
||||
iserror: false
|
||||
layer: Http
|
||||
tags:
|
||||
{{- contains .tags }}
|
||||
- key: http.method
|
||||
value: POST
|
||||
- key: url
|
||||
value: {{ notEmpty .value }}
|
||||
{{- end }}
|
||||
logs: []
|
||||
{{- end }}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# 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.
|
||||
|
||||
traces:
|
||||
{{- contains .traces }}
|
||||
- segmentid: {{ notEmpty .segmentid }}
|
||||
endpointnames:
|
||||
{{- contains .endpointnames }}
|
||||
- POST:/info
|
||||
{{- end }}
|
||||
duration: {{ ge .duration 0 }}
|
||||
start: "{{ notEmpty .start}}"
|
||||
iserror: false
|
||||
traceids:
|
||||
- {{ (index .traceids 0) }}
|
||||
{{- end }}
|
||||
total: {{ gt .total 0 }}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# 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.
|
||||
|
||||
FROM adoptopenjdk/openjdk8:alpine
|
||||
|
||||
WORKDIR /h2
|
||||
|
||||
VOLUME /h2/data
|
||||
|
||||
ADD https://repo.maven.apache.org/maven2/com/h2database/h2/1.4.200/h2-1.4.200.jar /h2
|
||||
|
||||
CMD ["sh", "-c", "java -cp /h2/*.jar org.h2.tools.Server -tcp -tcpAllowOthers -tcpPort 1521 -ifNotExists -baseDir /h2/data"]
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
# 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.
|
||||
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
h2db:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.h2
|
||||
networks:
|
||||
- e2e
|
||||
expose:
|
||||
- 1521
|
||||
healthcheck:
|
||||
test: [ "CMD", "sh", "-c", "nc -z 127.0.0.1 1521" ]
|
||||
interval: 5s
|
||||
timeout: 60s
|
||||
retries: 120
|
||||
|
||||
oap:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: oap
|
||||
environment:
|
||||
SW_STORAGE: h2
|
||||
SW_STORAGE_H2_URL: jdbc:h2:tcp://h2db:1521/skywalking-oap-db
|
||||
depends_on:
|
||||
h2db:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- 12800
|
||||
networks:
|
||||
- e2e
|
||||
|
||||
provider:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: provider
|
||||
ports:
|
||||
- 9090
|
||||
networks:
|
||||
- e2e
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
|
||||
consumer:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: consumer
|
||||
ports:
|
||||
- 9092
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
provider:
|
||||
condition: service_healthy
|
||||
|
||||
networks:
|
||||
e2e:
|
||||
|
|
@ -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.
|
||||
|
||||
# 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
|
||||
init-system-environment: ../../../script/env
|
||||
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
|
||||
|
||||
trigger:
|
||||
action: http
|
||||
interval: 3s
|
||||
times: 10
|
||||
url: http://${consumer_host}:${consumer_9092}/info
|
||||
method: POST
|
||||
|
||||
verify:
|
||||
# verify with retry strategy
|
||||
retry:
|
||||
# max retry count
|
||||
count: 20
|
||||
# the interval between two retries, in millisecond.
|
||||
interval: 10s
|
||||
cases:
|
||||
# service list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
|
||||
expected: ../expected/service.yml
|
||||
# service metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# service endpoint
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
|
||||
expected: ../expected/service-endpoint.yml
|
||||
# service endpoint metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# dependency service
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
|
||||
expected: ../expected/dependency-services.yml
|
||||
# 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
|
||||
# service instance jvm metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
|
||||
# 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
|
||||
- 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]' - \
|
||||
)
|
||||
expected: ../expected/trace-info-detail.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 profile: create task
|
||||
- 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
|
||||
expected: ../expected/profile-create.yml
|
||||
# native profile: sleep to wait agent notices and query profile list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list -service-name=e2e-service-provider --endpoint-name=POST:/info
|
||||
expected: ../expected/profile-list.yml
|
||||
|
||||
# native profile: sleep to wait segment report and query profiled segment list
|
||||
- query: |
|
||||
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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-list.yml
|
||||
|
||||
# native profile: query profiled segment
|
||||
- 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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-detail.yml
|
||||
|
||||
# native profile: query profiled segment analyze
|
||||
- query: |
|
||||
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' - \
|
||||
);
|
||||
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
|
||||
|
||||
- query: |
|
||||
curl -s -XPOST http://${provider_host}:${provider_9090}/users -d '{"id":"123","name":"SinglesBar"}' -H "Content-Type: application/json" > /dev/null;
|
||||
sleep 5;
|
||||
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
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
# 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.
|
||||
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
influxdb:
|
||||
image: influxdb:1.7.9
|
||||
expose:
|
||||
- 8086
|
||||
networks:
|
||||
- e2e
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/8086"]
|
||||
interval: 5s
|
||||
timeout: 60s
|
||||
retries: 120
|
||||
|
||||
oap:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: oap
|
||||
environment:
|
||||
SW_STORAGE: influxdb
|
||||
SW_STORAGE_INFLUXDB_URL: "http://influxdb:8086"
|
||||
ports:
|
||||
- 12800
|
||||
networks:
|
||||
- e2e
|
||||
depends_on:
|
||||
influxdb:
|
||||
condition: service_healthy
|
||||
|
||||
provider:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: provider
|
||||
ports:
|
||||
- 9090
|
||||
networks:
|
||||
- e2e
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
|
||||
consumer:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: consumer
|
||||
ports:
|
||||
- 9092
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
provider:
|
||||
condition: service_healthy
|
||||
|
||||
networks:
|
||||
e2e:
|
||||
|
|
@ -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.
|
||||
|
||||
# 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
|
||||
init-system-environment: ../../../script/env
|
||||
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
|
||||
|
||||
trigger:
|
||||
action: http
|
||||
interval: 3s
|
||||
times: 10
|
||||
url: http://${consumer_host}:${consumer_9092}/info
|
||||
method: POST
|
||||
|
||||
verify:
|
||||
# verify with retry strategy
|
||||
retry:
|
||||
# max retry count
|
||||
count: 20
|
||||
# the interval between two retries, in millisecond.
|
||||
interval: 10s
|
||||
cases:
|
||||
# service list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
|
||||
expected: ../expected/service.yml
|
||||
# service metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# service endpoint
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
|
||||
expected: ../expected/service-endpoint.yml
|
||||
# service endpoint metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# dependency service
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
|
||||
expected: ../expected/dependency-services.yml
|
||||
# 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
|
||||
# service instance jvm metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
|
||||
# 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
|
||||
- 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]' - \
|
||||
)
|
||||
expected: ../expected/trace-info-detail.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 profile: create task
|
||||
- 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
|
||||
expected: ../expected/profile-create.yml
|
||||
# native profile: sleep to wait agent notices and query profile list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list -service-name=e2e-service-provider --endpoint-name=POST:/info
|
||||
expected: ../expected/profile-list.yml
|
||||
|
||||
# native profile: sleep to wait segment report and query profiled segment list
|
||||
- query: |
|
||||
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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-list.yml
|
||||
|
||||
# native profile: query profiled segment
|
||||
- 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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-detail.yml
|
||||
|
||||
# native profile: query profiled segment analyze
|
||||
- query: |
|
||||
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' - \
|
||||
);
|
||||
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
|
||||
|
||||
- query: |
|
||||
curl -s -XPOST http://${provider_host}:${provider_9090}/users -d '{"id":"123","name":"SinglesBar"}' -H "Content-Type: application/json" > /dev/null;
|
||||
sleep 5;
|
||||
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
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
# 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.
|
||||
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql/mysql-server:8.0.13
|
||||
networks:
|
||||
- e2e
|
||||
expose:
|
||||
- 3306
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: "root@1234"
|
||||
MYSQL_DATABASE: "swtest"
|
||||
MYSQL_ROOT_HOST: "%"
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306"]
|
||||
interval: 5s
|
||||
timeout: 60s
|
||||
retries: 120
|
||||
|
||||
oap:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: oap
|
||||
environment:
|
||||
SW_STORAGE: mysql
|
||||
SW_JDBC_URL: jdbc:mysql://mysql:3306/swtest
|
||||
ports:
|
||||
- 12800
|
||||
entrypoint: ['sh', '-c', 'apk add --no-cache bash && /download-mysql.sh && /skywalking/docker-entrypoint.sh']
|
||||
networks:
|
||||
- e2e
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
|
||||
provider:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: provider
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- 9090
|
||||
networks:
|
||||
- e2e
|
||||
|
||||
consumer:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: consumer
|
||||
ports:
|
||||
- 9092
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
provider:
|
||||
condition: service_healthy
|
||||
|
||||
networks:
|
||||
e2e:
|
||||
|
|
@ -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.
|
||||
|
||||
# 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
|
||||
init-system-environment: ../../../script/env
|
||||
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
|
||||
|
||||
trigger:
|
||||
action: http
|
||||
interval: 3s
|
||||
times: 10
|
||||
url: http://${consumer_host}:${consumer_9092}/info
|
||||
method: POST
|
||||
|
||||
verify:
|
||||
# verify with retry strategy
|
||||
retry:
|
||||
# max retry count
|
||||
count: 20
|
||||
# the interval between two retries, in millisecond.
|
||||
interval: 10s
|
||||
cases:
|
||||
# service list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
|
||||
expected: ../expected/service.yml
|
||||
# service metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# service endpoint
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
|
||||
expected: ../expected/service-endpoint.yml
|
||||
# service endpoint metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# dependency service
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
|
||||
expected: ../expected/dependency-services.yml
|
||||
# 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
|
||||
# service instance jvm metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
|
||||
# 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
|
||||
- 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]' - \
|
||||
)
|
||||
expected: ../expected/trace-info-detail.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 profile: create task
|
||||
- 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
|
||||
expected: ../expected/profile-create.yml
|
||||
# native profile: sleep to wait agent notices and query profile list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list -service-name=e2e-service-provider --endpoint-name=POST:/info
|
||||
expected: ../expected/profile-list.yml
|
||||
|
||||
# native profile: sleep to wait segment report and query profiled segment list
|
||||
- query: |
|
||||
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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-list.yml
|
||||
|
||||
# native profile: query profiled segment
|
||||
- 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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-detail.yml
|
||||
|
||||
# native profile: query profiled segment analyze
|
||||
- query: |
|
||||
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' - \
|
||||
);
|
||||
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
|
||||
|
||||
- query: |
|
||||
curl -s -XPOST http://${provider_host}:${provider_9090}/users -d '{"id":"123","name":"SinglesBar"}' -H "Content-Type: application/json" > /dev/null;
|
||||
sleep 5;
|
||||
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
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
# 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.
|
||||
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
es:
|
||||
image: opensearchproject/opensearch:1.1.0
|
||||
expose:
|
||||
- 9200
|
||||
networks:
|
||||
- e2e
|
||||
environment:
|
||||
- discovery.type=single-node
|
||||
- cluster.routing.allocation.disk.threshold_enabled=false
|
||||
- plugins.security.ssl.http.enabled=false
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9200"]
|
||||
interval: 5s
|
||||
timeout: 60s
|
||||
retries: 120
|
||||
|
||||
oap:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: oap
|
||||
environment:
|
||||
SW_STORAGE: elasticsearch
|
||||
SW_STORAGE_ES_CLUSTER_NODES: es:9200
|
||||
SW_ES_USER: admin
|
||||
SW_ES_PASSWORD: admin
|
||||
ports:
|
||||
- 12800
|
||||
depends_on:
|
||||
es:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- e2e
|
||||
|
||||
provider:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: provider
|
||||
ports:
|
||||
- 9090
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- e2e
|
||||
|
||||
consumer:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: consumer
|
||||
ports:
|
||||
- 9092
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
provider:
|
||||
condition: service_healthy
|
||||
|
||||
networks:
|
||||
e2e:
|
||||
|
|
@ -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.
|
||||
|
||||
# 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
|
||||
init-system-environment: ../../../script/env
|
||||
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
|
||||
|
||||
trigger:
|
||||
action: http
|
||||
interval: 3s
|
||||
times: 10
|
||||
url: http://${consumer_host}:${consumer_9092}/info
|
||||
method: POST
|
||||
|
||||
verify:
|
||||
# verify with retry strategy
|
||||
retry:
|
||||
# max retry count
|
||||
count: 20
|
||||
# the interval between two retries, in millisecond.
|
||||
interval: 10s
|
||||
cases:
|
||||
# service list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
|
||||
expected: ../expected/service.yml
|
||||
# service metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# service endpoint
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
|
||||
expected: ../expected/service-endpoint.yml
|
||||
# service endpoint metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# dependency service
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
|
||||
expected: ../expected/dependency-services.yml
|
||||
# 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
|
||||
# service instance jvm metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
|
||||
# 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
|
||||
- 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]' - \
|
||||
)
|
||||
expected: ../expected/trace-info-detail.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 profile: create task
|
||||
- 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
|
||||
expected: ../expected/profile-create.yml
|
||||
# native profile: sleep to wait agent notices and query profile list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list -service-name=e2e-service-provider --endpoint-name=POST:/info
|
||||
expected: ../expected/profile-list.yml
|
||||
|
||||
# native profile: sleep to wait segment report and query profiled segment list
|
||||
- query: |
|
||||
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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-list.yml
|
||||
|
||||
# native profile: query profiled segment
|
||||
- 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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-detail.yml
|
||||
|
||||
# native profile: query profiled segment analyze
|
||||
- query: |
|
||||
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' - \
|
||||
);
|
||||
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
|
||||
|
||||
- query: |
|
||||
curl -s -XPOST http://${provider_host}:${provider_9090}/users -d '{"id":"123","name":"SinglesBar"}' -H "Content-Type: application/json" > /dev/null;
|
||||
sleep 5;
|
||||
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
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
# 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.
|
||||
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:13
|
||||
networks:
|
||||
- e2e
|
||||
expose:
|
||||
- 5432
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=123456
|
||||
- POSTGRES_DB=skywalking
|
||||
healthcheck:
|
||||
test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/5432"]
|
||||
interval: 5s
|
||||
timeout: 60s
|
||||
retries: 120
|
||||
|
||||
oap:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: oap
|
||||
environment:
|
||||
SW_STORAGE: postgresql
|
||||
SW_JDBC_URL: "jdbc:postgresql://postgres:5432/skywalking"
|
||||
ports:
|
||||
- 12800
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
provider:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: provider
|
||||
ports:
|
||||
- 9090
|
||||
networks:
|
||||
- e2e
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
|
||||
consumer:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: consumer
|
||||
ports:
|
||||
- 9092
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
provider:
|
||||
condition: service_healthy
|
||||
|
||||
networks:
|
||||
e2e:
|
||||
|
|
@ -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.
|
||||
|
||||
# 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
|
||||
init-system-environment: ../../../script/env
|
||||
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
|
||||
|
||||
trigger:
|
||||
action: http
|
||||
interval: 3s
|
||||
times: 10
|
||||
url: http://${consumer_host}:${consumer_9092}/info
|
||||
method: POST
|
||||
|
||||
verify:
|
||||
# verify with retry strategy
|
||||
retry:
|
||||
# max retry count
|
||||
count: 20
|
||||
# the interval between two retries, in millisecond.
|
||||
interval: 10s
|
||||
cases:
|
||||
# service list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
|
||||
expected: ../expected/service.yml
|
||||
# service metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# service endpoint
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
|
||||
expected: ../expected/service-endpoint.yml
|
||||
# service endpoint metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# dependency service
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
|
||||
expected: ../expected/dependency-services.yml
|
||||
# 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
|
||||
# service instance jvm metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
|
||||
# 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
|
||||
- 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]' - \
|
||||
)
|
||||
expected: ../expected/trace-info-detail.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 profile: create task
|
||||
- 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
|
||||
expected: ../expected/profile-create.yml
|
||||
# native profile: sleep to wait agent notices and query profile list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list -service-name=e2e-service-provider --endpoint-name=POST:/info
|
||||
expected: ../expected/profile-list.yml
|
||||
|
||||
# native profile: sleep to wait segment report and query profiled segment list
|
||||
- query: |
|
||||
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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-list.yml
|
||||
|
||||
# native profile: query profiled segment
|
||||
- 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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-detail.yml
|
||||
|
||||
# native profile: query profiled segment analyze
|
||||
- query: |
|
||||
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' - \
|
||||
);
|
||||
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
|
||||
|
||||
- query: |
|
||||
curl -s -XPOST http://${provider_host}:${provider_9090}/users -d '{"id":"123","name":"SinglesBar"}' -H "Content-Type: application/json" > /dev/null;
|
||||
sleep 5;
|
||||
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
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
# 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.
|
||||
|
||||
version: '2.1'
|
||||
|
||||
services:
|
||||
tidb:
|
||||
image: pingcap/tidb:v4.0.12
|
||||
expose:
|
||||
- 4000
|
||||
volumes:
|
||||
- ./tidbconfig/tidb.toml:/tidb.toml:ro
|
||||
restart: on-failure
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "nc -zn 127.0.0.1 4000"]
|
||||
interval: 5s
|
||||
timeout: 60s
|
||||
retries: 120
|
||||
networks:
|
||||
- e2e
|
||||
|
||||
oap:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: oap
|
||||
environment:
|
||||
SW_STORAGE: tidb
|
||||
SW_JDBC_URL: "jdbc:mysql://tidb:4000/test"
|
||||
SW_DATA_SOURCE_PASSWORD: ""
|
||||
ports:
|
||||
- 12800
|
||||
entrypoint: ['sh', '-c', 'apk add --no-cache bash && /download-mysql.sh && /skywalking/docker-entrypoint.sh']
|
||||
networks:
|
||||
- e2e
|
||||
depends_on:
|
||||
tidb:
|
||||
condition: service_healthy
|
||||
|
||||
provider:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: provider
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- 9090
|
||||
networks:
|
||||
- e2e
|
||||
|
||||
consumer:
|
||||
extends:
|
||||
file: ../../../script/docker-compose/base-compose.yml
|
||||
service: consumer
|
||||
ports:
|
||||
- 9092
|
||||
depends_on:
|
||||
oap:
|
||||
condition: service_healthy
|
||||
provider:
|
||||
condition: service_healthy
|
||||
|
||||
networks:
|
||||
e2e:
|
||||
|
|
@ -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.
|
||||
|
||||
# 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
|
||||
init-system-environment: ../../../script/env
|
||||
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
|
||||
|
||||
trigger:
|
||||
action: http
|
||||
interval: 3s
|
||||
times: 10
|
||||
url: http://${consumer_host}:${consumer_9092}/info
|
||||
method: POST
|
||||
|
||||
verify:
|
||||
# verify with retry strategy
|
||||
retry:
|
||||
# max retry count
|
||||
count: 20
|
||||
# the interval between two retries, in millisecond.
|
||||
interval: 10s
|
||||
cases:
|
||||
# service list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
|
||||
expected: ../expected/service.yml
|
||||
# service metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# service endpoint
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
|
||||
expected: ../expected/service-endpoint.yml
|
||||
# service endpoint metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
# dependency service
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
|
||||
expected: ../expected/dependency-services.yml
|
||||
# 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
|
||||
# service instance jvm metrics
|
||||
- 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' -
|
||||
expected: ../expected/metrics-has-value.yml
|
||||
|
||||
# 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
|
||||
- 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]' - \
|
||||
)
|
||||
expected: ../expected/trace-info-detail.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 profile: create task
|
||||
- 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
|
||||
expected: ../expected/profile-create.yml
|
||||
# native profile: sleep to wait agent notices and query profile list
|
||||
- query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql profile list -service-name=e2e-service-provider --endpoint-name=POST:/info
|
||||
expected: ../expected/profile-list.yml
|
||||
|
||||
# native profile: sleep to wait segment report and query profiled segment list
|
||||
- query: |
|
||||
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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-list.yml
|
||||
|
||||
# native profile: query profiled segment
|
||||
- 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' - \
|
||||
)
|
||||
expected: ../expected/profile-segment-detail.yml
|
||||
|
||||
# native profile: query profiled segment analyze
|
||||
- query: |
|
||||
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' - \
|
||||
);
|
||||
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
|
||||
|
||||
- query: |
|
||||
curl -s -XPOST http://${provider_host}:${provider_9090}/users -d '{"id":"123","name":"SinglesBar"}' -H "Content-Type: application/json" > /dev/null;
|
||||
sleep 5;
|
||||
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
|
||||
|
|
@ -0,0 +1,254 @@
|
|||
# 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.
|
||||
|
||||
# TiDB Configuration.
|
||||
|
||||
# TiDB server host.
|
||||
host = "0.0.0.0"
|
||||
|
||||
# TiDB server port.
|
||||
port = 4000
|
||||
|
||||
# Registered store name, [tikv, mocktikv]
|
||||
store = "mocktikv"
|
||||
|
||||
# TiDB storage path.
|
||||
path = "/tmp/tidb"
|
||||
|
||||
# The socket file to use for connection.
|
||||
socket = ""
|
||||
|
||||
# Run ddl worker on this tidb-server.
|
||||
run-ddl = true
|
||||
|
||||
# Schema lease duration, very dangerous to change only if you know what you do.
|
||||
lease = "0"
|
||||
|
||||
# When create table, split a separated region for it. It is recommended to
|
||||
# turn off this option if there will be a large number of tables created.
|
||||
split-table = true
|
||||
|
||||
# The limit of concurrent executed sessions.
|
||||
token-limit = 1000
|
||||
|
||||
# Only print a log when out of memory quota.
|
||||
# Valid options: ["log", "cancel"]
|
||||
oom-action = "log"
|
||||
|
||||
# Set the memory quota for a query in bytes. Default: 32GB
|
||||
mem-quota-query = 34359738368
|
||||
|
||||
# Enable coprocessor streaming.
|
||||
enable-streaming = false
|
||||
|
||||
# Set system variable 'lower_case_table_names'
|
||||
lower-case-table-names = 2
|
||||
|
||||
[log]
|
||||
# Log level: debug, info, warn, error, fatal.
|
||||
level = "error"
|
||||
|
||||
# Log format, one of json, text, console.
|
||||
format = "text"
|
||||
|
||||
# Disable automatic timestamp in output
|
||||
disable-timestamp = false
|
||||
|
||||
# Stores slow query log into separated files.
|
||||
slow-query-file = ""
|
||||
|
||||
# Queries with execution time greater than this value will be logged. (Milliseconds)
|
||||
slow-threshold = 300
|
||||
|
||||
# Queries with internal result greater than this value will be logged.
|
||||
expensive-threshold = 10000
|
||||
|
||||
# Maximum query length recorded in log.
|
||||
query-log-max-len = 2048
|
||||
|
||||
# File logging.
|
||||
[log.file]
|
||||
# Log file name.
|
||||
filename = ""
|
||||
|
||||
# Max log file size in MB (upper limit to 4096MB).
|
||||
max-size = 300
|
||||
|
||||
# Max log file keep days. No clean up by default.
|
||||
max-days = 0
|
||||
|
||||
# Maximum number of old log files to retain. No clean up by default.
|
||||
max-backups = 0
|
||||
|
||||
# Rotate log by day
|
||||
log-rotate = true
|
||||
|
||||
[security]
|
||||
# Path of file that contains list of trusted SSL CAs for connection with mysql client.
|
||||
ssl-ca = ""
|
||||
|
||||
# Path of file that contains X509 certificate in PEM format for connection with mysql client.
|
||||
ssl-cert = ""
|
||||
|
||||
# Path of file that contains X509 key in PEM format for connection with mysql client.
|
||||
ssl-key = ""
|
||||
|
||||
# Path of file that contains list of trusted SSL CAs for connection with cluster components.
|
||||
cluster-ssl-ca = ""
|
||||
|
||||
# Path of file that contains X509 certificate in PEM format for connection with cluster components.
|
||||
cluster-ssl-cert = ""
|
||||
|
||||
# Path of file that contains X509 key in PEM format for connection with cluster components.
|
||||
cluster-ssl-key = ""
|
||||
|
||||
[status]
|
||||
# If enable status report HTTP service.
|
||||
report-status = true
|
||||
|
||||
# TiDB status port.
|
||||
status-port = 10080
|
||||
|
||||
# Prometheus pushgateway address, leaves it empty will disable prometheus push.
|
||||
metrics-addr = "pushgateway:9091"
|
||||
|
||||
# Prometheus client push interval in second, set \"0\" to disable prometheus push.
|
||||
metrics-interval = 15
|
||||
|
||||
[performance]
|
||||
# Max CPUs to use, 0 use number of CPUs in the machine.
|
||||
max-procs = 0
|
||||
# StmtCountLimit limits the max count of statement inside a transaction.
|
||||
stmt-count-limit = 5000
|
||||
|
||||
# Set keep alive option for tcp connection.
|
||||
tcp-keep-alive = true
|
||||
|
||||
# The maximum number of retries when commit a transaction.
|
||||
retry-limit = 10
|
||||
|
||||
# Whether support cartesian product.
|
||||
cross-join = true
|
||||
|
||||
# Stats lease duration, which influences the time of analyze and stats load.
|
||||
stats-lease = "3s"
|
||||
|
||||
# Run auto analyze worker on this tidb-server.
|
||||
run-auto-analyze = true
|
||||
|
||||
# Probability to use the query feedback to update stats, 0 or 1 for always false/true.
|
||||
feedback-probability = 0.0
|
||||
|
||||
# The max number of query feedback that cache in memory.
|
||||
query-feedback-limit = 1024
|
||||
|
||||
# Pseudo stats will be used if the ratio between the modify count and
|
||||
# row count in statistics of a table is greater than it.
|
||||
pseudo-estimate-ratio = 0.7
|
||||
|
||||
[proxy-protocol]
|
||||
# PROXY protocol acceptable client networks.
|
||||
# Empty string means disable PROXY protocol, * means all networks.
|
||||
networks = ""
|
||||
|
||||
# PROXY protocol header read timeout, unit is second
|
||||
header-timeout = 5
|
||||
|
||||
[plan-cache]
|
||||
enabled = false
|
||||
capacity = 2560
|
||||
shards = 256
|
||||
|
||||
[prepared-plan-cache]
|
||||
enabled = false
|
||||
capacity = 100
|
||||
|
||||
[opentracing]
|
||||
# Enable opentracing.
|
||||
enable = false
|
||||
|
||||
# Whether to enable the rpc metrics.
|
||||
rpc-metrics = false
|
||||
|
||||
[opentracing.sampler]
|
||||
# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote
|
||||
type = "const"
|
||||
|
||||
# Param is a value passed to the sampler.
|
||||
# Valid values for Param field are:
|
||||
# - for "const" sampler, 0 or 1 for always false/true respectively
|
||||
# - for "probabilistic" sampler, a probability between 0 and 1
|
||||
# - for "rateLimiting" sampler, the number of spans per second
|
||||
# - for "remote" sampler, param is the same as for "probabilistic"
|
||||
# and indicates the initial sampling rate before the actual one
|
||||
# is received from the mothership
|
||||
param = 1.0
|
||||
|
||||
# SamplingServerURL is the address of jaeger-agent's HTTP sampling server
|
||||
sampling-server-url = ""
|
||||
|
||||
# MaxOperations is the maximum number of operations that the sampler
|
||||
# will keep track of. If an operation is not tracked, a default probabilistic
|
||||
# sampler will be used rather than the per operation specific sampler.
|
||||
max-operations = 0
|
||||
|
||||
# SamplingRefreshInterval controls how often the remotely controlled sampler will poll
|
||||
# jaeger-agent for the appropriate sampling strategy.
|
||||
sampling-refresh-interval = 0
|
||||
|
||||
[opentracing.reporter]
|
||||
# QueueSize controls how many spans the reporter can keep in memory before it starts dropping
|
||||
# new spans. The queue is continuously drained by a background go-routine, as fast as spans
|
||||
# can be sent out of process.
|
||||
queue-size = 0
|
||||
|
||||
# BufferFlushInterval controls how often the buffer is force-flushed, even if it's not full.
|
||||
# It is generally not useful, as it only matters for very low traffic services.
|
||||
buffer-flush-interval = 0
|
||||
|
||||
# LogSpans, when true, enables LoggingReporter that runs in parallel with the main reporter
|
||||
# and logs all submitted spans. Main Configuration.Logger must be initialized in the code
|
||||
# for this option to have any effect.
|
||||
log-spans = false
|
||||
|
||||
# LocalAgentHostPort instructs reporter to send spans to jaeger-agent at this address
|
||||
local-agent-host-port = ""
|
||||
|
||||
[tikv-client]
|
||||
# Max gRPC connections that will be established with each tikv-server.
|
||||
grpc-connection-count = 16
|
||||
|
||||
# After a duration of this time in seconds if the client doesn't see any activity it pings
|
||||
# the server to see if the transport is still alive.
|
||||
grpc-keepalive-time = 10
|
||||
|
||||
# After having pinged for keepalive check, the client waits for a duration of Timeout in seconds
|
||||
# and if no activity is seen even after that the connection is closed.
|
||||
grpc-keepalive-timeout = 3
|
||||
|
||||
# max time for commit command, must be twice bigger than raft election timeout.
|
||||
commit-timeout = "41s"
|
||||
|
||||
[binlog]
|
||||
|
||||
# Socket file to write binlog.
|
||||
binlog-socket = ""
|
||||
|
||||
# WriteTimeout specifies how long it will wait for writing binlog to pump.
|
||||
write-timeout = "15s"
|
||||
|
||||
# If IgnoreError is true, when writting binlog meets error, TiDB would stop writting binlog,
|
||||
# but still provide service.
|
||||
ignore-error = false
|
||||
Loading…
Reference in New Issue