You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2021/10/01 06:59:58 UTC

[skywalking-infra-e2e] branch enhancements created (now 8572dc2)

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a change to branch enhancements
in repository https://gitbox.apache.org/repos/asf/skywalking-infra-e2e.git.


      at 8572dc2  Some enhancements

This branch includes the following new commits:

     new 8572dc2  Some enhancements

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[skywalking-infra-e2e] 01/01: Some enhancements

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch enhancements
in repository https://gitbox.apache.org/repos/asf/skywalking-infra-e2e.git

commit 8572dc2f0d7eab18c92fdf286e035b1e9a996e1a
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Fri Oct 1 14:59:48 2021 +0800

    Some enhancements
    
    - Adjust the env var logs for convenient copy and test.
    - Support `body` and `headers` in http trigger.
    - Add `install` target in makefile.
    - Add some unit tests for verifier.
---
 Makefile                                      |  8 +++
 commands/trigger/trigger.go                   |  5 +-
 internal/components/setup/compose.go          |  2 +-
 internal/components/trigger/http.go           | 18 ++++++-
 internal/components/verifier/verifier_test.go | 77 +++++++++++++++++++++++++++
 internal/config/e2eConfig.go                  | 12 +++--
 6 files changed, 113 insertions(+), 9 deletions(-)

diff --git a/Makefile b/Makefile
index 673441a..00494e7 100644
--- a/Makefile
+++ b/Makefile
@@ -97,3 +97,11 @@ release: verify release-src release-bin
 	shasum -a 512 $(RELEASE_SRC).tgz > $(RELEASE_SRC).tgz.sha512
 	gpg --batch --yes --armor --detach-sig $(RELEASE_BIN).tgz
 	shasum -a 512 $(RELEASE_BIN).tgz > $(RELEASE_BIN).tgz.sha512
+
+.PHONY: install
+install: $(OSNAME)
+	-cp $(OUT_DIR)/$(OSNAME)/$(PROJECT) $(DESTDIR)
+
+.PHONY: uninstall
+uninstall: $(OSNAME)
+	-rm $(DESTDIR)/$(PROJECT)
diff --git a/commands/trigger/trigger.go b/commands/trigger/trigger.go
index 7d86776..80410f4 100644
--- a/commands/trigger/trigger.go
+++ b/commands/trigger/trigger.go
@@ -50,7 +50,10 @@ func DoActionAccordingE2E() error {
 		action := trigger.NewHTTPAction(e2eConfig.Trigger.Interval,
 			e2eConfig.Trigger.Times,
 			e2eConfig.Trigger.URL,
-			e2eConfig.Trigger.Method)
+			e2eConfig.Trigger.Method,
+			e2eConfig.Trigger.Body,
+			e2eConfig.Trigger.Headers,
+		)
 		if action == nil {
 			return fmt.Errorf("trigger [%+v] parse error", e2eConfig.Trigger)
 		}
diff --git a/internal/components/setup/compose.go b/internal/components/setup/compose.go
index d73c14e..14b47bb 100644
--- a/internal/components/setup/compose.go
+++ b/internal/components/setup/compose.go
@@ -154,7 +154,7 @@ func exportComposeEnv(key, value, service string) error {
 	if err != nil {
 		return fmt.Errorf("could not set env for %s, %v", service, err)
 	}
-	logger.Log.Infof("expose env : %s : %s", key, value)
+	logger.Log.Infof("export %s=%s", key, value)
 	return nil
 }
 
diff --git a/internal/components/trigger/http.go b/internal/components/trigger/http.go
index 2af36a3..4a3ddce 100644
--- a/internal/components/trigger/http.go
+++ b/internal/components/trigger/http.go
@@ -20,6 +20,7 @@ package trigger
 import (
 	"context"
 	"fmt"
+	"io/ioutil"
 	"net/http"
 	"os"
 	"strings"
@@ -33,10 +34,12 @@ type httpAction struct {
 	times         int
 	url           string
 	method        string
+	body          string
+	headers       map[string]string
 	executedCount int
 }
 
-func NewHTTPAction(intervalStr string, times int, url, method string) Action {
+func NewHTTPAction(intervalStr string, times int, url, method, body string, headers map[string]string) Action {
 	interval, err := time.ParseDuration(intervalStr)
 	if err != nil {
 		logger.Log.Errorf("interval [%s] parse error: %s.", intervalStr, err)
@@ -56,6 +59,8 @@ func NewHTTPAction(intervalStr string, times int, url, method string) Action {
 		times:         times,
 		url:           url,
 		method:        strings.ToUpper(method),
+		body:          body,
+		headers:       headers,
 		executedCount: 0,
 	}
 }
@@ -65,7 +70,16 @@ func (h *httpAction) Do() error {
 	t := time.NewTicker(h.interval)
 	h.executedCount = 0
 	client := &http.Client{}
-	request, err := http.NewRequest(h.method, h.url, nil)
+
+	r := strings.NewReader(h.body)
+	rc := ioutil.NopCloser(r)
+
+	request, err := http.NewRequest(h.method, h.url, rc)
+	headers := http.Header{}
+	for k, v := range h.headers {
+		headers[k] = []string{v}
+	}
+	request.Header = headers
 	if err != nil {
 		logger.Log.Errorf("new request error %v", err)
 		return err
diff --git a/internal/components/verifier/verifier_test.go b/internal/components/verifier/verifier_test.go
index d2a287c..09da74c 100644
--- a/internal/components/verifier/verifier_test.go
+++ b/internal/components/verifier/verifier_test.go
@@ -195,6 +195,83 @@ metrics:
 			},
 			wantErr: true,
 		},
+		{
+			name: "multiple level attribute and contains greater 2",
+			args: args{
+				actualData: `
+metrics:
+  key:
+  - name: business-zone::projectA
+    id: YnVzaW5lc3Mtem9uZTo6cHJvamVjdEE=.1
+    value: 1
+`,
+				expectedTemplate: `
+metrics:
+  key:
+  {{- contains .metrics.key }}
+    - name: {{ notEmpty .name }}
+      id: {{ notEmpty .id }}
+      value: {{ gt .value 0 }}
+    - name: {{ notEmpty .name }}
+      id: {{ notEmpty .id }}
+      value: {{ gt .value 2 }}
+  {{- end }}
+`,
+			},
+			wantErr: true,
+		},
+		{
+			name: "contains unordered slices",
+			args: args{
+				actualData: `
+- id: ZTJlLXNlcnZpY2UtcHJvdmlkZXI=.1_cHJvdmlkZXIx
+  name: whatever
+  attributes:
+  - name: JVM Arguments
+    value: abcde
+  - name: OS Name
+    value: Linux
+  - name: hostname
+    value: 127.0.0.1
+  - name: Process No.
+    value: "1"
+  - name: Start Time
+    value: "12345"
+  - name: Jar Dependencies
+    value: abcde
+  - name: ipv4s
+    value: abcde
+  language: JAVA
+  instanceuuid: ZTJlLXNlcnZpY2UtcHJvdmlkZXI=.1_cHJvdmlkZXIx
+`,
+				expectedTemplate: `
+{{- contains . }}
+- id: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
+  name: {{ notEmpty .name }}
+  attributes:
+  {{- contains .attributes }}
+  - name: Jar Dependencies
+    value: '{{ notEmpty .value }}'
+  - name: OS Name
+    value: Linux
+  - name: hostname
+    value: {{ notEmpty .value }}
+  - name: ipv4s
+    value: {{ notEmpty .value }}
+  - name: Process No.
+    value: "1"
+  - name: Start Time
+    value: {{ notEmpty .value }}
+  - name: JVM Arguments
+    value: '{{ notEmpty .value }}'
+  {{- end}}
+  language: JAVA
+  instanceuuid: {{ b64enc "e2e-service-provider" }}.1_{{ b64enc "provider1" }}
+{{- end}}
+`,
+			},
+			wantErr: false,
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
diff --git a/internal/config/e2eConfig.go b/internal/config/e2eConfig.go
index 1fad94c..db89f61 100644
--- a/internal/config/e2eConfig.go
+++ b/internal/config/e2eConfig.go
@@ -74,11 +74,13 @@ type Wait struct {
 }
 
 type Trigger struct {
-	Action   string `yaml:"action"`
-	Interval string `yaml:"interval"`
-	Times    int    `yaml:"times"`
-	URL      string `yaml:"url"`
-	Method   string `yaml:"method"`
+	Action   string            `yaml:"action"`
+	Interval string            `yaml:"interval"`
+	Times    int               `yaml:"times"`
+	URL      string            `yaml:"url"`
+	Method   string            `yaml:"method"`
+	Body     string            `yaml:"body"`
+	Headers  map[string]string `yaml:"headers"`
 }
 
 type VerifyCase struct {