This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-rover.git
The following commit(s) were added to refs/heads/main by this push:
new 29ef115 Adding Access Log Service E2E Test (#127)
29ef115 is described below
commit 29ef115f29d5597f64d3745e7b191d57cc853848
Author: mrproliu <[email protected]>
AuthorDate: Tue Jun 4 09:11:09 2024 +0000
Adding Access Log Service E2E Test (#127)
---
.github/workflows/rover.yaml | 4 +
CHANGES.md | 1 +
pkg/accesslog/collector/connect.go | 26 ++-
pkg/accesslog/runner.go | 5 +-
pkg/tools/ip/conntrack.go | 31 ++-
test/e2e/base/env | 4 +-
test/e2e/cases/access_log/e2e.yaml | 231 +++++++++++++++++++++
.../expected/dependency-endpoint-reviews.yml | 40 ++++
.../expected/dependency-instance.yml} | 34 ++-
.../access_log/expected/dependency-services.yml | 83 ++++++++
.../access_log/expected/metrics-has-value.yml} | 21 +-
.../expected/service-endpoint-reviews.yml} | 10 +-
.../expected/service-instance.yml} | 13 +-
.../expected/service.yml} | 36 +++-
test/e2e/{base/env => cases/access_log/kind.yaml} | 13 +-
test/e2e/cases/access_log/rover.yaml | 110 ++++++++++
.../env => cases/access_log/traffic-gen.yaml} | 30 ++-
.../continuous/http_avg_response_time/e2e.yaml | 4 +-
.../expected/metrics-has-value-labeld.yml | 30 ++-
.../profiling/continuous/http_error_rate/e2e.yaml | 4 +-
.../expected/metrics-has-value-labeld.yml | 30 ++-
.../cases/profiling/task/network/base-cases.yaml | 25 +--
.../cases/profiling/task/network/envoy/e2e.yaml | 33 ++-
.../envoy/expected/metrics-has-value-label.yml | 30 ++-
.../network/expected/metrics-has-value-label.yml | 30 ++-
.../task/network/http1-metrics-cases.yaml | 10 +-
26 files changed, 745 insertions(+), 143 deletions(-)
diff --git a/.github/workflows/rover.yaml b/.github/workflows/rover.yaml
index ae63f97..964417b 100644
--- a/.github/workflows/rover.yaml
+++ b/.github/workflows/rover.yaml
@@ -149,6 +149,10 @@ jobs:
base: test/e2e/cases/process/istio
config: e2e.yaml
env: ISTIO_VERSION=1.13.1
+
+ - name: Access Log
+ base: test/e2e/cases/access_log
+ config: e2e.yaml
steps:
- uses: actions/checkout@v3
with:
diff --git a/CHANGES.md b/CHANGES.md
index 5ea76ba..9a39183 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -8,6 +8,7 @@ Release Notes.
* Upgrade LLVM to `18`.
#### Bug Fixes
+* Fixed the issue where `conntrack` could not find the Reply IP in the access
log module.
#### Documentation
diff --git a/pkg/accesslog/collector/connect.go
b/pkg/accesslog/collector/connect.go
index f315967..ecd04a3 100644
--- a/pkg/accesslog/collector/connect.go
+++ b/pkg/accesslog/collector/connect.go
@@ -19,6 +19,7 @@ package collector
import (
"encoding/binary"
+ "net"
"github.com/sirupsen/logrus"
@@ -99,6 +100,26 @@ func (c *ConnectCollector) Start(_ *module.Manager, context
*common.AccessLogCon
func (c *ConnectCollector) Stop() {
}
+func (c *ConnectCollector) fixSocketFamilyIfNeed(event
*events.SocketConnectEvent, result *ip.SocketPair) {
+ if result == nil {
+ return
+ }
+ if parseIP := net.ParseIP(result.SrcIP); parseIP != nil {
+ var actual uint32
+ if parseIP.To4() != nil {
+ actual = unix.AF_INET
+ } else {
+ actual = unix.AF_INET6
+ }
+
+ if result.Family != actual {
+ connectLogger.Debugf("fix the socket family from %d to
%d, connection ID: %d, randomID: %d",
+ result.Family, actual, event.ConID,
event.RandomID)
+ result.Family = actual
+ }
+ }
+}
+
func (c *ConnectCollector) buildSocketFromConnectEvent(event
*events.SocketConnectEvent) *ip.SocketPair {
if event.SocketFamily != unix.AF_INET && event.SocketFamily !=
unix.AF_INET6 && event.SocketFamily != enums.SocketFamilyUnknown {
// if not ipv4, ipv6 or unknown, ignore
@@ -122,6 +143,7 @@ func (c *ConnectCollector)
buildSocketFromConnectEvent(event *events.SocketConne
connectLogger.Debugf("found the connection from the socket, connection
ID: %d, randomID: %d",
event.ConID, event.RandomID)
pair.Role = enums.ConnectionRole(event.Role)
+ c.fixSocketFamilyIfNeed(event, pair)
c.tryToUpdateSocketFromConntrack(event, pair)
return pair
}
@@ -193,12 +215,14 @@ func (c *ConnectCollector) buildSocketPair(event
*events.SocketConnectEvent) *ip
return result
}
+ c.fixSocketFamilyIfNeed(event, result)
c.tryToUpdateSocketFromConntrack(event, result)
return result
}
func (c *ConnectCollector) tryToUpdateSocketFromConntrack(event
*events.SocketConnectEvent, socket *ip.SocketPair) {
- if socket != nil && socket.IsValid() && c.connTracker != nil &&
!tools.IsLocalHostAddress(socket.DestIP) {
+ if socket != nil && socket.IsValid() && c.connTracker != nil &&
!tools.IsLocalHostAddress(socket.DestIP) &&
+ event.FuncName != enums.SocketFunctionNameAccept { // accept
event don't need to update the remote address
// if no contract and socket data is valid, then trying to get
the remote address from the socket
// to encase the remote address is not the real remote address
originalIP := socket.DestIP
diff --git a/pkg/accesslog/runner.go b/pkg/accesslog/runner.go
index 2cab4f7..8762f62 100644
--- a/pkg/accesslog/runner.go
+++ b/pkg/accesslog/runner.go
@@ -241,8 +241,9 @@ func (r *Runner) buildAccessLogMessage(firstLog,
firstConnection bool, conn *com
rpcCon = conn.RPCConnection
if log.Enable(logrus.DebugLevel) {
log.Debugf("ready to sending access log with
connection, connection ID: %d, random ID: %d, "+
- "local: %s, remote: %s, role: %s",
- conn.ConnectionID, conn.RandomID, rpcCon.Local,
rpcCon.Remote, rpcCon.Role)
+ "local: %s, remote: %s, role: %s, kernel logs
count: %d, contains protocol log: %t",
+ conn.ConnectionID, conn.RandomID, rpcCon.Local,
rpcCon.Remote, rpcCon.Role,
+ len(kernelLogs), protocolLog != nil)
}
}
return &v3.EBPFAccessLogMessage{
diff --git a/pkg/tools/ip/conntrack.go b/pkg/tools/ip/conntrack.go
index 4d58d28..0ad7095 100644
--- a/pkg/tools/ip/conntrack.go
+++ b/pkg/tools/ip/conntrack.go
@@ -30,7 +30,16 @@ import (
var log = logger.GetLogger("tools", "ip")
-var numberStrategies = map[string]uint8{"tcp": syscall.IPPROTO_TCP, "udp":
syscall.IPPROTO_UDP}
+var numberStrategies = []struct {
+ name string
+ proto uint8
+}{{
+ name: "tcp",
+ proto: syscall.IPPROTO_TCP,
+}, {
+ name: "udp",
+ proto: syscall.IPPROTO_UDP,
+}}
type ConnTrack struct {
tracker *conntrack.Nfct
@@ -51,13 +60,15 @@ func (c *ConnTrack) UpdateRealPeerAddress(addr *SocketPair)
bool {
}
tuple := c.parseSocketToTuple(addr)
- for name, strategy := range numberStrategies {
- tuple.Proto.Number = &strategy
+ for _, info := range numberStrategies {
+ tuple.Proto.Number = &(info.proto)
+ // using get to query protocol
session, e := c.tracker.Get(conntrack.Conntrack, family,
conntrack.Con{Origin: tuple})
if e != nil {
- // try to get the reply session, if the strategy not
exists or from accept events, have error is normal
- log.Debugf("cannot get the conntrack session, strategy:
%s, error: %v", name, e)
+ // try to get the reply session, if the info not exists
or from accept events, have error is normal
+ log.Debugf("cannot get the conntrack session, type: %s,
family: %d, origin src: %s:%d, origin dest: %s:%d, error: %v", info.name,
+ family, tuple.Src, *tuple.Proto.SrcPort,
tuple.Dst, *tuple.Proto.DstPort, e)
continue
}
@@ -67,6 +78,16 @@ func (c *ConnTrack) UpdateRealPeerAddress(addr *SocketPair)
bool {
}
}
+ // using dump to query protocol
+ dump, e := c.tracker.Dump(conntrack.Conntrack, family)
+ if e != nil {
+ log.Debug("cannot dump the conntrack session, error: ", e)
+ return false
+ }
+ if res := c.filterValidateReply(dump, tuple); res != nil {
+ addr.DestIP = res.Src.String()
+ return true
+ }
return false
}
diff --git a/test/e2e/base/env b/test/e2e/base/env
index e417340..8ee9005 100644
--- a/test/e2e/base/env
+++ b/test/e2e/base/env
@@ -13,8 +13,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SW_CTL_COMMIT=6b2eb0011e38b630db6af7203db215806bd141ed
-SW_OAP_COMMIT=9ba0ad299139eeb4bb4e274c500cec1deaf84f79
+SW_CTL_COMMIT=ee371a210afe2dc6e65c2229b6a0519f8a4a2752
+SW_OAP_COMMIT=7a8bbacd20381bc780c48abf5706fd6e529c9872
SW_KUBERNETES_COMMIT_SHA=a14f386063fffc61ed9b396e1328b76d33239aba
SW_AGENT_GO_COMMIT=216f122d942cb683f48578d3014cc5ea83637582
diff --git a/test/e2e/cases/access_log/e2e.yaml
b/test/e2e/cases/access_log/e2e.yaml
new file mode 100644
index 0000000..ff55ea4
--- /dev/null
+++ b/test/e2e/cases/access_log/e2e.yaml
@@ -0,0 +1,231 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file is used to show how to write configuration files and can be used
to test.
+
+setup:
+ env: kind
+ file: kind.yaml
+ init-system-environment: ../../base/env
+ kind:
+ import-images:
+ - apache/skywalking-rover:latest
+ expose-ports:
+ - namespace: istio-system
+ resource: service/skywalking-ui
+ port: 80
+ steps:
+ - name: set PATH
+ command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
+ - name: install swctl
+ command: bash test/e2e/base/scripts/prepare/setup-e2e-shell/install.sh
swctl
+ - name: install kubectl
+ command: bash test/e2e/base/scripts/prepare/setup-e2e-shell/install.sh
kubectl
+ - name: Install helm
+ command: bash test/e2e/base/scripts/prepare/setup-e2e-shell/install.sh
helm
+ - name: Install SkyWalking
+ command: |
+ helm -n istio-system install skywalking --create-namespace \
+ oci://ghcr.io/apache/skywalking-helm/skywalking-helm \
+ --version "0.0.0-${SW_KUBERNETES_COMMIT_SHA}" \
+ --set fullnameOverride=skywalking \
+ --set elasticsearch.replicas=1 \
+ --set elasticsearch.minimumMasterNodes=1 \
+ --set oap.replicas=1 \
+ --set ui.image.repository=ghcr.io/apache/skywalking/ui \
+ --set ui.image.tag=${SW_OAP_COMMIT} \
+ --set oap.image.tag=${SW_OAP_COMMIT} \
+ --set oap.image.repository=ghcr.io/apache/skywalking/oap \
+ --set oap.storageType=elasticsearch \
+ -f test/e2e/base/kubernetes-values.yaml
+ wait:
+ - namespace: istio-system
+ resource: deployments/skywalking-oap
+ for: condition=available
+ - name: Deploy demo services
+ command: |
+ kubectl apply -f
https://raw.githubusercontent.com/istio/istio/1.18.0/samples/bookinfo/platform/kube/bookinfo.yaml
+ wait:
+ - namespace: default
+ resource: pod
+ for: condition=Ready
+ - name: Install SkyWalking Rover
+ command: |
+ envsubst < test/e2e/cases/access_log/rover.yaml | kubectl apply -f -
+ wait:
+ - namespace: default
+ resource: pod
+ for: condition=Ready
+ - name: Generate traffic
+ path: traffic-gen.yaml
+ wait:
+ - namespace: default
+ resource: pod
+ for: condition=Ready
+ timeout: 25m
+
+verify:
+ retry:
+ count: 20
+ interval: 10s
+ cases:
+ # service list
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
service ls
+ expected: expected/service.yml
+ # service instance list
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance list --service-name=productpage.default
+ expected: expected/service-instance.yml
+
+ # service topology
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency global --layer=K8S_SERVICE
+ expected: expected/dependency-services.yml
+ # service instance topology
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency instance --service-name=productpage.default
--dest-service-name=details.default
+ expected: expected/dependency-instance.yml
+ # service endpoints
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
endpoint list --service-name=details.default
+ expected: expected/service-endpoint-reviews.yml
+ # endpoints topology
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
dependency endpoint --service-name=details.default --endpoint-name=/details/0
+ expected: expected/dependency-endpoint-reviews.yml
+
+ # service level metrics
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_connect_cpm
--service-name=productpage.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_accept_cpm
--service-name=reviews.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_write_cpm
--service-name=productpage.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_read_cpm
--service-name=productpage.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_write_l4_duration
--service-name=productpage.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_read_l4_duration
--service-name=productpage.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_write_package_cpm
--service-name=productpage.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_read_package_cpm
--service-name=productpage.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_http_call_cpm
--service-name=reviews.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_http_call_duration
--service-name=reviews.default
+ expected: expected/metrics-has-value.yml
+
+ # service instance level metrics
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_connect_cpm
--service-name=productpage.default --instance-name=$instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_write_cpm
--service-name=productpage.default --instance-name=$instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_write_l4_duration
--service-name=productpage.default --instance-name=$instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_write_package_cpm
--service-name=productpage.default --instance-name=$instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_read_cpm
--service-name=productpage.default --instance-name=$instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_read_l4_duration
--service-name=productpage.default --instance-name=$instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_read_package_cpm
--service-name=productpage.default --instance-name=$instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name reviews.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_http_call_cpm
--service-name=reviews.default --instance-name=$instance_name
+ expected: expected/metrics-has-value.yml
+
+ # service endpoint level metrics
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_endpoint_call_cpm
--service-name=details.default --endpoint-name=/details/0
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_endpoint_http_call_cpm
--service-name=details.default --endpoint-name=/details/0
+ expected: expected/metrics-has-value.yml
+
+ # service relation metrics
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_connect_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_server_write_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_server_write_package_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_server_read_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_server_read_package_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_client_write_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_client_write_package_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_client_read_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+ - query: swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_relation_client_read_package_cpm
--service-name=productpage.default --dest-service-name=details.default
+ expected: expected/metrics-has-value.yml
+
+ # service instance relation metrics
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_relation_connect_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=kubernetes_service_instance_relation_server_write_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=kubernetes_service_instance_relation_server_write_package_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_relation_server_read_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=kubernetes_service_instance_relation_server_read_package_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=kubernetes_service_instance_relation_client_write_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=kubernetes_service_instance_relation_client_write_package_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=kubernetes_service_instance_relation_client_read_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
+ - query: |
+ instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name productpage.default | yq '.[0].name' -)
+ dest_instance_name=$(swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
instance ls --service-name details.default | yq '.[0].name' -)
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=kubernetes_service_instance_relation_client_read_package_cpm
--service-name=productpage.default --instance-name=$instance_name
--dest-service-name=details.default --dest-instance-name=$dest_instance_name
+ expected: expected/metrics-has-value.yml
\ No newline at end of file
diff --git a/test/e2e/cases/access_log/expected/dependency-endpoint-reviews.yml
b/test/e2e/cases/access_log/expected/dependency-endpoint-reviews.yml
new file mode 100644
index 0000000..a0bc676
--- /dev/null
+++ b/test/e2e/cases/access_log/expected/dependency-endpoint-reviews.yml
@@ -0,0 +1,40 @@
+# 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 "productpage.default" }}.1_{{ b64enc "/details/0" }}
+ name: /details/0
+ serviceid: {{ b64enc "productpage.default" }}.1
+ servicename: productpage.default
+ type: ""
+ isreal: true
+- id: {{ b64enc "details.default" }}.1_{{ b64enc "/details/0" }}
+ name: /details/0
+ serviceid: {{ b64enc "details.default" }}.1
+ servicename: details.default
+ type: ""
+ isreal: true
+{{- end }}
+calls:
+{{- contains .calls }}
+- source: {{ b64enc "productpage.default" }}.1_{{ b64enc "/details/0" }}
+ sourcecomponents: []
+ target: {{ b64enc "details.default" }}.1_{{ b64enc "/details/0" }}
+ targetcomponents: []
+ id: {{ b64enc "productpage.default" }}.1-{{ b64enc "/details/0" }}-{{ b64enc
"details.default" }}.1-{{ b64enc "/details/0" }}
+ detectpoints:
+ - SERVER
+{{- end }}
diff --git
a/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
b/test/e2e/cases/access_log/expected/dependency-instance.yml
similarity index 58%
copy from
test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
copy to test/e2e/cases/access_log/expected/dependency-instance.yml
index 8093415..f104561 100644
---
a/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
+++ b/test/e2e/cases/access_log/expected/dependency-instance.yml
@@ -13,13 +13,29 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-{{- contains . }}
-- key: {{ notEmpty .key }}
- value:
- {{- contains .value }}
- - key: {{ notEmpty .key }}
- value:
- value: {{ ge .value.value 1 }}
- isemptyvalue: false
- {{- end }}
+nodes:
+{{- contains .nodes }}
+- id: {{ notEmpty .id }}
+ name: {{ notEmpty .name }}
+ serviceid: {{ b64enc "productpage.default" }}.1
+ servicename: productpage.default
+ type: ""
+ isreal: true
+- id: {{ notEmpty .id }}
+ name: {{ notEmpty .name }}
+ serviceid: {{ b64enc "details.default" }}.1
+ servicename: details.default
+ type: ""
+ isreal: true
+{{- end }}
+calls:
+{{- contains .calls }}
+- source: {{ notEmpty .source }}
+ sourcecomponents: []
+ target: {{ notEmpty .target }}
+ targetcomponents: []
+ id: {{ notEmpty .id }}
+ detectpoints:
+ - CLIENT
+ - SERVER
{{- end }}
diff --git a/test/e2e/cases/access_log/expected/dependency-services.yml
b/test/e2e/cases/access_log/expected/dependency-services.yml
new file mode 100644
index 0000000..bbe6f29
--- /dev/null
+++ b/test/e2e/cases/access_log/expected/dependency-services.yml
@@ -0,0 +1,83 @@
+# 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 "productpage.default"}}.1
+ name: productpage.default
+ type: null
+ isreal: true
+ layers: []
+- id: {{ b64enc "details.default"}}.1
+ name: details.default
+ type: http
+ isreal: true
+ layers: []
+- id: {{ b64enc "ratings.default" }}.1
+ name: ratings.default
+ type: http
+ isreal: true
+ layers: []
+- id: {{ b64enc "reviews.default" }}.1
+ name: reviews.default
+ type: http
+ isreal: true
+ layers: []
+{{- end }}
+calls:
+{{- contains .calls }}
+- source: {{ b64enc "productpage.default"}}.1
+ sourcecomponents:
+ {{- contains .sourcecomponents }}
+ - http
+ {{- end }}
+ target: {{ b64enc "details.default"}}.1
+ targetcomponents:
+ {{- contains .targetcomponents }}
+ - http
+ {{- end }}
+ id: {{ b64enc "productpage.default"}}.1-{{ b64enc "details.default"}}.1
+ detectpoints:
+ - CLIENT
+ - SERVER
+- source: {{ b64enc "productpage.default"}}.1
+ sourcecomponents:
+ {{- contains .sourcecomponents }}
+ - http
+ {{- end }}
+ target: {{ b64enc "reviews.default"}}.1
+ targetcomponents:
+ {{- contains .targetcomponents }}
+ - http
+ {{- end }}
+ id: {{ b64enc "productpage.default"}}.1-{{ b64enc "reviews.default"}}.1
+ detectpoints:
+ - CLIENT
+ - SERVER
+- source: {{ b64enc "reviews.default" }}.1
+ sourcecomponents:
+ {{- contains .sourcecomponents }}
+ - http
+ {{- end }}
+ target: {{ b64enc "ratings.default"}}.1
+ targetcomponents:
+ {{- contains .targetcomponents }}
+ - http
+ {{- end }}
+ id: {{ b64enc "reviews.default" }}.1-{{ b64enc "ratings.default"}}.1
+ detectpoints:
+ - CLIENT
+ - SERVER
+{{- end }}
diff --git a/test/e2e/base/env
b/test/e2e/cases/access_log/expected/metrics-has-value.yml
similarity index 70%
copy from test/e2e/base/env
copy to test/e2e/cases/access_log/expected/metrics-has-value.yml
index e417340..c4bbbaf 100644
--- a/test/e2e/base/env
+++ b/test/e2e/cases/access_log/expected/metrics-has-value.yml
@@ -13,8 +13,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SW_CTL_COMMIT=6b2eb0011e38b630db6af7203db215806bd141ed
-SW_OAP_COMMIT=9ba0ad299139eeb4bb4e274c500cec1deaf84f79
-SW_KUBERNETES_COMMIT_SHA=a14f386063fffc61ed9b396e1328b76d33239aba
-
-SW_AGENT_GO_COMMIT=216f122d942cb683f48578d3014cc5ea83637582
+type: TIME_SERIES_VALUES
+results:
+ {{- contains .results }}
+ - metric:
+ labels: []
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+ {{- end}}
+error: null
\ No newline at end of file
diff --git
a/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
b/test/e2e/cases/access_log/expected/service-endpoint-reviews.yml
similarity index 82%
copy from
test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
copy to test/e2e/cases/access_log/expected/service-endpoint-reviews.yml
index 8093415..fd5f37a 100644
---
a/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
+++ b/test/e2e/cases/access_log/expected/service-endpoint-reviews.yml
@@ -14,12 +14,6 @@
# limitations under the License.
{{- contains . }}
-- key: {{ notEmpty .key }}
- value:
- {{- contains .value }}
- - key: {{ notEmpty .key }}
- value:
- value: {{ ge .value.value 1 }}
- isemptyvalue: false
- {{- end }}
+- id: {{ b64enc "details.default" }}.1_{{ b64enc "/details/0" }}
+ name: /details/0
{{- end }}
diff --git
a/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
b/test/e2e/cases/access_log/expected/service-instance.yml
similarity index 82%
copy from
test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
copy to test/e2e/cases/access_log/expected/service-instance.yml
index 8093415..658cdbd 100644
---
a/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
+++ b/test/e2e/cases/access_log/expected/service-instance.yml
@@ -14,12 +14,9 @@
# limitations under the License.
{{- contains . }}
-- key: {{ notEmpty .key }}
- value:
- {{- contains .value }}
- - key: {{ notEmpty .key }}
- value:
- value: {{ ge .value.value 1 }}
- isemptyvalue: false
- {{- end }}
+- id: {{ notEmpty .id }}
+ name: {{ notEmpty .name }}
+ attributes: []
+ language: UNKNOWN
+ instanceuuid: {{ notEmpty .instanceuuid }}
{{- end }}
diff --git
a/test/e2e/cases/profiling/task/network/expected/metrics-has-value-label.yml
b/test/e2e/cases/access_log/expected/service.yml
similarity index 56%
copy from
test/e2e/cases/profiling/task/network/expected/metrics-has-value-label.yml
copy to test/e2e/cases/access_log/expected/service.yml
index c57e8dd..872fbb6 100644
--- a/test/e2e/cases/profiling/task/network/expected/metrics-has-value-label.yml
+++ b/test/e2e/cases/access_log/expected/service.yml
@@ -14,12 +14,32 @@
# limitations under the License.
{{- contains . }}
-- key: {{ notEmpty .key }}
- value:
- {{- contains .value }}
- - key: {{ notEmpty .key }}
- value:
- value: {{ ge .value.value 1 }}
- isemptyvalue: false
- {{- end }}
+- id: {{ b64enc "details.default" }}.1
+ name: details.default
+ group: ""
+ shortname: details.default
+ layers:
+ - K8S_SERVICE
+ normal: true
+- id: {{ b64enc "reviews.default" }}.1
+ name: reviews.default
+ group: ""
+ shortname: reviews.default
+ layers:
+ - K8S_SERVICE
+ normal: true
+- id: {{ b64enc "productpage.default" }}.1
+ name: productpage.default
+ group: ""
+ shortname: productpage.default
+ layers:
+ - K8S_SERVICE
+ normal: true
+- id: {{ b64enc "ratings.default" }}.1
+ name: ratings.default
+ group: ""
+ shortname: ratings.default
+ layers:
+ - K8S_SERVICE
+ normal: true
{{- end }}
\ No newline at end of file
diff --git a/test/e2e/base/env b/test/e2e/cases/access_log/kind.yaml
similarity index 75%
copy from test/e2e/base/env
copy to test/e2e/cases/access_log/kind.yaml
index e417340..20a3fc7 100644
--- a/test/e2e/base/env
+++ b/test/e2e/cases/access_log/kind.yaml
@@ -13,8 +13,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SW_CTL_COMMIT=6b2eb0011e38b630db6af7203db215806bd141ed
-SW_OAP_COMMIT=9ba0ad299139eeb4bb4e274c500cec1deaf84f79
-SW_KUBERNETES_COMMIT_SHA=a14f386063fffc61ed9b396e1328b76d33239aba
-
-SW_AGENT_GO_COMMIT=216f122d942cb683f48578d3014cc5ea83637582
+kind: Cluster
+apiVersion: kind.x-k8s.io/v1alpha4
+nodes:
+ - role: control-plane
+ image:
kindest/node:v1.25.11@sha256:227fa11ce74ea76a0474eeefb84cb75d8dad1b08638371ecf0e86259b35be0c8
+ extraMounts:
+ - hostPath: /
+ containerPath: /host
\ No newline at end of file
diff --git a/test/e2e/cases/access_log/rover.yaml
b/test/e2e/cases/access_log/rover.yaml
new file mode 100644
index 0000000..e32f779
--- /dev/null
+++ b/test/e2e/cases/access_log/rover.yaml
@@ -0,0 +1,110 @@
+# 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.
+
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: skywalking-rover
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: skywalking-rover
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: skywalking-rover
+subjects:
+ - kind: ServiceAccount
+ name: skywalking-rover
+ namespace: default
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+ name: skywalking-rover
+rules:
+ - apiGroups: [""]
+ resources: ["pods", "nodes", "services"]
+ verbs: ["get", "watch", "list"]
+---
+
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+ name: skywalking-rover
+spec:
+ selector:
+ matchLabels:
+ name: skywalking-rover
+ template:
+ metadata:
+ labels:
+ name: skywalking-rover
+ spec:
+ serviceAccountName: skywalking-rover
+ serviceAccount: skywalking-rover
+ containers:
+ - name: skywalking-rover
+ # SkyWalking Rover image path
+ image: apache/skywalking-rover:latest
+ imagePullPolicy: IfNotPresent
+ securityContext:
+ capabilities:
+ add:
+ - SYS_PTRACE
+ - SYS_ADMIN
+ privileged: true
+ volumeMounts:
+ - name: host
+ mountPath: /host
+ readOnly: true
+ - name: host-sys
+ mountPath: /sys
+ readOnly: true
+ env:
+ - name: ROVER_PROCESS_DISCOVERY_KUBERNETES_ACTIVE
+ value: "true"
+ - name: ROVER_LOGGER_LEVEL
+ value: "DEBUG"
+ - name: ROVER_PROCESS_DISCOVERY_KUBERNETES_NODE_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: spec.nodeName
+ - name: ROVER_BACKEND_ADDR
+ # backend OAP address
+ value: skywalking-oap.istio-system:11800
+ - name:
ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_ENVOY_ACTIVE
+ value: "false"
+ - name:
ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_ISTIO_APPLICATION_ACTIVE
+ value: "false"
+ - name: ROVER_HOST_MAPPING
+ value: /host
+ - name: ROVER_ACCESS_LOG_ACTIVE
+ value: "true"
+ - name: ROVER_ACCESS_LOG_FLUSH_PERIOD
+ value: 1s
+ hostPID: true
+ hostNetwork: true
+ dnsPolicy: ClusterFirstWithHostNet
+ volumes:
+ - name: host
+ hostPath:
+ path: /host
+ type: Directory
+ - name: host-sys
+ hostPath:
+ path: /host/sys
+ type: Directory
\ No newline at end of file
diff --git a/test/e2e/base/env b/test/e2e/cases/access_log/traffic-gen.yaml
similarity index 58%
copy from test/e2e/base/env
copy to test/e2e/cases/access_log/traffic-gen.yaml
index e417340..4e3b050 100644
--- a/test/e2e/base/env
+++ b/test/e2e/cases/access_log/traffic-gen.yaml
@@ -13,8 +13,28 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SW_CTL_COMMIT=6b2eb0011e38b630db6af7203db215806bd141ed
-SW_OAP_COMMIT=9ba0ad299139eeb4bb4e274c500cec1deaf84f79
-SW_KUBERNETES_COMMIT_SHA=a14f386063fffc61ed9b396e1328b76d33239aba
-
-SW_AGENT_GO_COMMIT=216f122d942cb683f48578d3014cc5ea83637582
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: trafficgenerator
+ labels:
+ app: trafficgenerator
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: trafficgenerator
+ template:
+ metadata:
+ annotations:
+ sidecar.istio.io/inject: "false"
+ labels:
+ app: trafficgenerator
+ spec:
+ containers:
+ - name: trafficgenerator
+ image: elswork/wrk
+ command: ["wrk", "-t1", "-c1", "-d20m",
"http://productpage:9080/productpage"]
+ resources:
+ requests:
+ cpu: 0.1
\ No newline at end of file
diff --git
a/test/e2e/cases/profiling/continuous/http_avg_response_time/e2e.yaml
b/test/e2e/cases/profiling/continuous/http_avg_response_time/e2e.yaml
index fd1e103..5cfea25 100644
--- a/test/e2e/cases/profiling/continuous/http_avg_response_time/e2e.yaml
+++ b/test/e2e/cases/profiling/continuous/http_avg_response_time/e2e.yaml
@@ -98,8 +98,8 @@ verify:
# check profiling metrics
- query: |
- swctl
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
--display yaml metrics multiple-linear \
- --service-name test-continuous --instance-name test-instance
--process-name response_timeout --name
continuous_profiling_http_avg_response_time |yq e 'to_entries | with(.[] ;
.value=(.value | to_entries))' -
+ swctl
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
--display yaml metrics exec
--expression=continuous_profiling_http_avg_response_time \
+ --service-name test-continuous --instance-name test-instance
--process-name response_timeout
expected: expected/metrics-has-value-labeld.yml
# check triggered profiling task
diff --git
a/test/e2e/cases/profiling/continuous/http_avg_response_time/expected/metrics-has-value-labeld.yml
b/test/e2e/cases/profiling/continuous/http_avg_response_time/expected/metrics-has-value-labeld.yml
index c57e8dd..fb41e2c 100644
---
a/test/e2e/cases/profiling/continuous/http_avg_response_time/expected/metrics-has-value-labeld.yml
+++
b/test/e2e/cases/profiling/continuous/http_avg_response_time/expected/metrics-has-value-labeld.yml
@@ -13,13 +13,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-{{- contains . }}
-- key: {{ notEmpty .key }}
- value:
- {{- contains .value }}
- - key: {{ notEmpty .key }}
- value:
- value: {{ ge .value.value 1 }}
- isemptyvalue: false
- {{- end }}
-{{- end }}
\ No newline at end of file
+type: TIME_SERIES_VALUES
+results:
+ {{- contains .results }}
+ - metric:
+ labels:
+ {{- contains .metric.labels }}
+ - key: {{ .key }}
+ value: {{ .value }}
+ {{- end}}
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+ {{- end}}
+error: null
diff --git a/test/e2e/cases/profiling/continuous/http_error_rate/e2e.yaml
b/test/e2e/cases/profiling/continuous/http_error_rate/e2e.yaml
index 0294168..406da6a 100644
--- a/test/e2e/cases/profiling/continuous/http_error_rate/e2e.yaml
+++ b/test/e2e/cases/profiling/continuous/http_error_rate/e2e.yaml
@@ -98,8 +98,8 @@ verify:
# check profiling metrics
- query: |
- swctl
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
--display yaml metrics multiple-linear \
- --service-name test-continuous --instance-name test-instance
--process-name response_error --name continuous_profiling_http_error_rate |yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ swctl
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
--display yaml metrics exec --expression=continuous_profiling_http_error_rate \
+ --service-name test-continuous --instance-name test-instance
--process-name response_error
expected: expected/metrics-has-value-labeld.yml
# check triggered profiling task
diff --git
a/test/e2e/cases/profiling/continuous/http_error_rate/expected/metrics-has-value-labeld.yml
b/test/e2e/cases/profiling/continuous/http_error_rate/expected/metrics-has-value-labeld.yml
index c57e8dd..fb41e2c 100644
---
a/test/e2e/cases/profiling/continuous/http_error_rate/expected/metrics-has-value-labeld.yml
+++
b/test/e2e/cases/profiling/continuous/http_error_rate/expected/metrics-has-value-labeld.yml
@@ -13,13 +13,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-{{- contains . }}
-- key: {{ notEmpty .key }}
- value:
- {{- contains .value }}
- - key: {{ notEmpty .key }}
- value:
- value: {{ ge .value.value 1 }}
- isemptyvalue: false
- {{- end }}
-{{- end }}
\ No newline at end of file
+type: TIME_SERIES_VALUES
+results:
+ {{- contains .results }}
+ - metric:
+ labels:
+ {{- contains .metric.labels }}
+ - key: {{ .key }}
+ value: {{ .value }}
+ {{- end}}
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+ {{- end}}
+error: null
diff --git a/test/e2e/cases/profiling/task/network/base-cases.yaml
b/test/e2e/cases/profiling/task/network/base-cases.yaml
index 2a068ea..7fe4adc 100644
--- a/test/e2e/cases/profiling/task/network/base-cases.yaml
+++ b/test/e2e/cases/profiling/task/network/base-cases.yaml
@@ -63,32 +63,27 @@ cases:
# histogram value of process relation, client side write_rtt/write_exe/read
time
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_client_write_rtt_time_percentile \
--service-name service --instance-name test --process-name service \
- --dest-service-name service --dest-instance-name test
--dest-process-name UNKNOWN_REMOTE \
- --name=process_relation_client_write_rtt_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name service --dest-instance-name test
--dest-process-name UNKNOWN_REMOTE
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_client_write_exe_time_percentile \
--service-name service --instance-name test --process-name service \
- --dest-service-name service --dest-instance-name test
--dest-process-name UNKNOWN_REMOTE \
- --name=process_relation_client_write_exe_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name service --dest-instance-name test
--dest-process-name UNKNOWN_REMOTE
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_server_write_rtt_time_percentile \
--service-name service --instance-name test --process-name
UNKNOWN_REMOTE \
- --dest-service-name service --dest-instance-name test
--dest-process-name service \
- --name=process_relation_server_write_rtt_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name service --dest-instance-name test
--dest-process-name service
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_server_write_exe_time_percentile \
--service-name service --instance-name test --process-name
UNKNOWN_REMOTE \
- --dest-service-name service --dest-instance-name test
--dest-process-name service \
- --name=process_relation_server_write_exe_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name service --dest-instance-name test
--dest-process-name service
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_server_write_exe_time_percentile \
--service-name service --instance-name test --process-name
UNKNOWN_REMOTE \
- --dest-service-name service --dest-instance-name test
--dest-process-name service \
- --name=process_relation_server_write_exe_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name service --dest-instance-name test
--dest-process-name service
expected: expected/metrics-has-value-label.yml
\ No newline at end of file
diff --git a/test/e2e/cases/profiling/task/network/envoy/e2e.yaml
b/test/e2e/cases/profiling/task/network/envoy/e2e.yaml
index e3114db..bfae32a 100644
--- a/test/e2e/cases/profiling/task/network/envoy/e2e.yaml
+++ b/test/e2e/cases/profiling/task/network/envoy/e2e.yaml
@@ -144,40 +144,34 @@ verify:
# histogram value of process relation, client side
write_rtt/write_exe/read time
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_client_write_rtt_time_percentile \
--service-name productpage.default --instance-name productpage
--process-name envoy \
--dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python \
- --name=process_relation_client_write_rtt_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_client_write_exe_time_percentile \
--service-name productpage.default --instance-name productpage
--process-name envoy \
- --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python \
- --name=process_relation_client_write_exe_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_client_read_exe_time_percentile \
--service-name productpage.default --instance-name productpage
--process-name envoy \
- --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python \
- --name=process_relation_client_read_exe_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_server_write_rtt_time_percentile \
--service-name productpage.default --instance-name productpage
--process-name envoy \
- --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python \
- --name=process_relation_server_write_rtt_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_server_write_exe_time_percentile \
--service-name productpage.default --instance-name productpage
--process-name envoy \
- --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python \
- --name=process_relation_server_write_exe_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec --expression=process_relation_server_write_exe_time_percentile \
--service-name productpage.default --instance-name productpage
--process-name envoy \
- --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python \
- --name=process_relation_server_write_exe_time_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python
expected: expected/metrics-has-value-label.yml
# HTTP1 analyzer
@@ -200,10 +194,9 @@ verify:
--name process_relation_http1_response_package_size|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=process_relation_http1_request_package_size_percentile \
--service-name productpage.default --instance-name productpage
--process-name envoy \
- --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python \
- --name process_relation_http1_request_package_size_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name productpage.default --dest-instance-name
productpage --dest-process-name /usr/local/bin/python
expected: expected/metrics-has-value-label.yml
- query: |
swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics linear \
diff --git
a/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
b/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
index 8093415..fb41e2c 100644
---
a/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
+++
b/test/e2e/cases/profiling/task/network/envoy/expected/metrics-has-value-label.yml
@@ -13,13 +13,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-{{- contains . }}
-- key: {{ notEmpty .key }}
- value:
- {{- contains .value }}
- - key: {{ notEmpty .key }}
- value:
- value: {{ ge .value.value 1 }}
- isemptyvalue: false
- {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+ {{- contains .results }}
+ - metric:
+ labels:
+ {{- contains .metric.labels }}
+ - key: {{ .key }}
+ value: {{ .value }}
+ {{- end}}
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+ {{- end}}
+error: null
diff --git
a/test/e2e/cases/profiling/task/network/expected/metrics-has-value-label.yml
b/test/e2e/cases/profiling/task/network/expected/metrics-has-value-label.yml
index c57e8dd..fb41e2c 100644
--- a/test/e2e/cases/profiling/task/network/expected/metrics-has-value-label.yml
+++ b/test/e2e/cases/profiling/task/network/expected/metrics-has-value-label.yml
@@ -13,13 +13,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-{{- contains . }}
-- key: {{ notEmpty .key }}
- value:
- {{- contains .value }}
- - key: {{ notEmpty .key }}
- value:
- value: {{ ge .value.value 1 }}
- isemptyvalue: false
- {{- end }}
-{{- end }}
\ No newline at end of file
+type: TIME_SERIES_VALUES
+results:
+ {{- contains .results }}
+ - metric:
+ labels:
+ {{- contains .metric.labels }}
+ - key: {{ .key }}
+ value: {{ .value }}
+ {{- end}}
+ values:
+ {{- contains .values }}
+ - id: {{ notEmpty .id }}
+ value: {{ .value }}
+ traceid: null
+ - id: {{ notEmpty .id }}
+ value: null
+ traceid: null
+ {{- end}}
+ {{- end}}
+error: null
diff --git a/test/e2e/cases/profiling/task/network/http1-metrics-cases.yaml
b/test/e2e/cases/profiling/task/network/http1-metrics-cases.yaml
index 511d0b1..25733dd 100644
--- a/test/e2e/cases/profiling/task/network/http1-metrics-cases.yaml
+++ b/test/e2e/cases/profiling/task/network/http1-metrics-cases.yaml
@@ -34,16 +34,14 @@ cases:
--name process_relation_http1_response_package_size|yq e 'to_entries' -
expected: expected/metrics-has-value.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=process_relation_http1_request_package_size_percentile \
--service-name service --instance-name test --process-name service \
- --dest-service-name service --dest-instance-name test
--dest-process-name UNKNOWN_REMOTE \
- --name process_relation_http1_request_package_size_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name service --dest-instance-name test
--dest-process-name UNKNOWN_REMOTE
expected: expected/metrics-has-value-label.yml
- query: |
- swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics multiple-linear \
+ swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics exec
--expression=process_relation_http1_response_package_size_percentile \
--service-name service --instance-name test --process-name service \
- --dest-service-name service --dest-instance-name test
--dest-process-name UNKNOWN_REMOTE \
- --name process_relation_http1_response_package_size_percentile|yq e
'to_entries | with(.[] ; .value=(.value | to_entries))' -
+ --dest-service-name service --dest-instance-name test
--dest-process-name UNKNOWN_REMOTE
expected: expected/metrics-has-value-label.yml
- query: |
swctl --display yaml
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
metrics linear \