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 {