You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2022/07/05 01:19:39 UTC
[skywalking-banyandb] 01/01: Add traffic generator
This is an automated email from the ASF dual-hosted git repository.
hanahmily pushed a commit to branch test-traffic-gen
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
commit 3b170f0508bf4e781f8fe96c4d5faf3a9e9d300d
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Tue Jul 5 00:50:42 2022 +0000
Add traffic generator
Signed-off-by: Gao Hongtao <ha...@gmail.com>
---
.../event/banyandb/docker-compose.yml => .air.toml | 37 +++-----
.gitignore => .dockerignore | 27 +-----
.gitignore | 1 +
banyand/Dockerfile | 33 ++++++-
banyand/Makefile | 3 -
banyand/liaison/http/server.go | 42 +++++++--
bydbctl/Dockerfile | 5 +-
bydbctl/Makefile | 1 -
scripts/build/base.mk | 1 -
scripts/build/build.mk | 6 +-
scripts/build/docker.mk | 4 +-
.../docker-compose => docker}/base-compose.yml | 30 ++----
.../e2e-v2/cases/event/banyandb/docker-compose.yml | 2 -
test/e2e-v2/script/docker-compose/base-compose.yml | 100 +++-----------------
.gitignore => test/stress/Makefile | 39 +++-----
test/stress/docker-compose.yaml | 105 +++++++++++++++++++++
test/stress/env | 31 ++++++
test/stress/env.dev | 31 ++++++
test/stress/log4j2.xml | 34 +++++++
test/stress/scripts/consumer.js | 29 ++++++
20 files changed, 352 insertions(+), 209 deletions(-)
diff --git a/test/e2e-v2/cases/event/banyandb/docker-compose.yml b/.air.toml
similarity index 56%
copy from test/e2e-v2/cases/event/banyandb/docker-compose.yml
copy to .air.toml
index 551c406..1536468 100644
--- a/test/e2e-v2/cases/event/banyandb/docker-compose.yml
+++ b/.air.toml
@@ -13,28 +13,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-version: '3.8'
+# Config file for [Air](https://github.com/cosmtrek/air) in TOML format
-services:
- banyandb:
- extends:
- file: ../../../script/docker-compose/base-compose.yml
- service: banyandb
- networks:
- - e2e
+# Working directory
+# . or absolute path, please note that the directories following must be under root.
+root = "."
+tmp_dir = "tmp"
- oap:
- extends:
- file: ../../../script/docker-compose/base-compose.yml
- service: oap
- environment:
- SW_STORAGE: banyandb
- depends_on:
- banyandb:
- condition: service_healthy
- ports:
- - 11800
- - 12800
-
-networks:
- e2e:
+[build]
+# Just plain old shell command. You could use `make` as well.
+cmd = "go build -gcflags='all=-N -l' -buildvcs=false -o ./tmp/main ./banyand/cmd/server"
+# Binary file yields from `cmd`.
+bin = "tmp/main"
+# Customize binary.
+full_bin = "dlv exec --accept-multiclient --log --headless --continue --listen :2345 --api-version 2 ./tmp/main standalone"
+# Watch these filename extensions.
+include_ext = ["go"]
diff --git a/.gitignore b/.dockerignore
similarity index 75%
copy from .gitignore
copy to .dockerignore
index 426298d..f52bea0 100644
--- a/.gitignore
+++ b/.dockerignore
@@ -15,34 +15,17 @@
# specific language governing permissions and limitations
# under the License.
-# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
+
bin
include
-/build
+build
target
+test
-# Test binary, build with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# editor and IDE paraphernalia
-.idea
-*.swp
-*.swo
-*~
-.vscode
-
-.DS_Store
-.env
-.run
-
-# mock files
-*mock.go
-*mock_test.go
+dist
+*/node_modules
diff --git a/.gitignore b/.gitignore
index 426298d..32e3104 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,6 +25,7 @@ bin
include
/build
target
+/tmp
# Test binary, build with `go test -c`
*.test
diff --git a/banyand/Dockerfile b/banyand/Dockerfile
index ddfa360..a1baea8 100644
--- a/banyand/Dockerfile
+++ b/banyand/Dockerfile
@@ -14,16 +14,28 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-ARG BASE_IMAGE
-ARG CERT_IMAGE
+FROM golang:1.18 AS dev
+WORKDIR /app
+ENV GOOS="linux"
+ENV CGO_ENABLED=0
-FROM $BASE_IMAGE AS base
+RUN go install github.com/cosmtrek/air@latest \
+ && go install github.com/go-delve/delve/cmd/dlv@latest
+
+EXPOSE 8080
+EXPOSE 2345
+
+ENTRYPOINT ["air"]
+
+FROM golang:1.18 AS base
ENV GOPATH "/go"
ENV GO111MODULE "on"
WORKDIR /src
COPY go.* ./
RUN go mod download
+RUN GOBIN=/bin go install github.com/grpc-ecosystem/grpc-health-probe@v0.4.11 \
+ && chmod 755 /bin/grpc-health-probe
FROM base AS builder
@@ -31,7 +43,7 @@ RUN --mount=target=. \
--mount=type=cache,target=/root/.cache/go-build \
BUILD_DIR=/out make -C banyand all
-FROM $CERT_IMAGE AS certs
+FROM alpine:edge AS certs
RUN apk add --no-cache ca-certificates
RUN update-ca-certificates
@@ -40,4 +52,17 @@ FROM busybox:stable-glibc
COPY --from=builder /out/banyand-server /banyand-server
COPY --from=certs /etc/ssl/certs /etc/ssl/certs
+EXPOSE 17912
+EXPOSE 17913
+
+ENTRYPOINT ["/banyand-server"]
+
+FROM busybox:stable-glibc AS test
+
+COPY --from=builder /out/banyand-server /banyand-server
+COPY --from=base /bin/grpc-health-probe /grpc-health-probe
+
+EXPOSE 17912
+EXPOSE 17913
+
ENTRYPOINT ["/banyand-server"]
\ No newline at end of file
diff --git a/banyand/Makefile b/banyand/Makefile
index 38a98bb..e14e560 100644
--- a/banyand/Makefile
+++ b/banyand/Makefile
@@ -29,8 +29,5 @@ include ../scripts/build/build.mk
include ../scripts/build/test.mk
# TODO: remove this
include ../scripts/build/lint-deprecated.mk
-
-DOCKER_BUILD_ARGS := --build-arg CERT_IMAGE=alpine:edge --build-arg BASE_IMAGE=golang:${go_version}
-
include ../scripts/build/docker.mk
include ../scripts/build/help.mk
diff --git a/banyand/liaison/http/server.go b/banyand/liaison/http/server.go
index 700d951..f1737b7 100644
--- a/banyand/liaison/http/server.go
+++ b/banyand/liaison/http/server.go
@@ -27,10 +27,14 @@ import (
"github.com/go-chi/chi/v5"
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
+ "go.uber.org/multierr"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
- pb "github.com/apache/skywalking-banyandb/api/proto/banyandb/database/v1"
+ database_v1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/database/v1"
+ measure_v1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/measure/v1"
+ property_v1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/property/v1"
+ stream_v1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/stream/v1"
"github.com/apache/skywalking-banyandb/pkg/logger"
"github.com/apache/skywalking-banyandb/pkg/run"
"github.com/apache/skywalking-banyandb/ui"
@@ -50,11 +54,12 @@ func NewService() ServiceRepo {
}
type service struct {
- listenAddr string
- grpcAddr string
- mux *chi.Mux
- stopCh chan struct{}
- l *logger.Logger
+ listenAddr string
+ grpcAddr string
+ mux *chi.Mux
+ stopCh chan struct{}
+ clientCloser context.CancelFunc
+ l *logger.Logger
}
func (p *service) FlagSet() *run.FlagSet {
@@ -86,9 +91,27 @@ func (p *service) PreRun() error {
p.mux.Mount("/", intercept404(fileServer, serveIndex))
gwMux := runtime.NewServeMux()
-
- err = pb.RegisterStreamRegistryServiceHandlerFromEndpoint(context.Background(), gwMux, p.grpcAddr,
- []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())})
+ var ctx context.Context
+ ctx, p.clientCloser = context.WithCancel(context.Background())
+
+ err = multierr.Combine(
+ database_v1.RegisterStreamRegistryServiceHandlerFromEndpoint(ctx, gwMux, p.grpcAddr,
+ []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}),
+ database_v1.RegisterMeasureRegistryServiceHandlerFromEndpoint(ctx, gwMux, p.grpcAddr,
+ []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}),
+ database_v1.RegisterIndexRuleRegistryServiceHandlerFromEndpoint(ctx, gwMux, p.grpcAddr,
+ []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}),
+ database_v1.RegisterIndexRuleBindingRegistryServiceHandlerFromEndpoint(ctx, gwMux, p.grpcAddr,
+ []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}),
+ database_v1.RegisterGroupRegistryServiceHandlerFromEndpoint(ctx, gwMux, p.grpcAddr,
+ []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}),
+ stream_v1.RegisterStreamServiceHandlerFromEndpoint(ctx, gwMux, p.grpcAddr,
+ []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}),
+ measure_v1.RegisterMeasureServiceHandlerFromEndpoint(ctx, gwMux, p.grpcAddr,
+ []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}),
+ property_v1.RegisterPropertyServiceHandlerFromEndpoint(ctx, gwMux, p.grpcAddr,
+ []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())}),
+ )
if err != nil {
return err
}
@@ -107,6 +130,7 @@ func (p *service) Serve() run.StopNotify {
}
func (p *service) GracefulStop() {
+ p.clientCloser()
close(p.stopCh)
}
diff --git a/bydbctl/Dockerfile b/bydbctl/Dockerfile
index b91d73a..c1eaf5c 100644
--- a/bydbctl/Dockerfile
+++ b/bydbctl/Dockerfile
@@ -14,10 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-ARG BASE_IMAGE
-ARG CERT_IMAGE
-
-FROM $BASE_IMAGE AS base
+FROM golang:1.18 AS base
ENV GOPATH "/go"
ENV GO111MODULE "on"
diff --git a/bydbctl/Makefile b/bydbctl/Makefile
index afcabaf..dbfeff1 100644
--- a/bydbctl/Makefile
+++ b/bydbctl/Makefile
@@ -49,7 +49,6 @@ $(BUILDS):
.PHONY: release
release: $(BUILDS)
-DOCKER_BUILD_ARGS := --build-arg BASE_IMAGE=golang:${go_version}
include ../scripts/build/docker.mk
include ../scripts/build/test.mk
include ../scripts/build/lint.mk
diff --git a/scripts/build/base.mk b/scripts/build/base.mk
index 3f3c7cd..a0d3b2b 100644
--- a/scripts/build/base.mk
+++ b/scripts/build/base.mk
@@ -23,7 +23,6 @@ tool_bin := $(root_dir)/bin
tool_include := "$(root_dir)/include"
buf_version ?= v1.5.0
-go_version ?= 1.18
# Retrieve git versioning details so we can add to our binary assets
VERSION_PATH := github.com/apache/skywalking-banyandb/pkg/version
diff --git a/scripts/build/build.mk b/scripts/build/build.mk
index ae3b786..13f1188 100644
--- a/scripts/build/build.mk
+++ b/scripts/build/build.mk
@@ -39,7 +39,7 @@ all: $(BINARIES) ## Build all the binaries
$(BINARIES): $(NAME)-%: $(BUILD_DIR)/$(NAME)-%
$(addprefix $(BUILD_DIR)/,$(BINARIES)): $(BUILD_DIR)/$(NAME)-%:
@echo "Building binary"
- go build -v --ldflags '${GO_LINK_VERSION}' -tags "$(BUILD_TAGS)" -o $@ github.com/apache/skywalking-banyandb/$(SOURCE_DIR)/cmd/$*
+ go build -v -buildvcs=false --ldflags '${GO_LINK_VERSION}' -tags "$(BUILD_TAGS)" -o $@ github.com/apache/skywalking-banyandb/$(SOURCE_DIR)/cmd/$*
chmod +x $@
@echo "Done building $(NAME) $*"
@@ -49,7 +49,7 @@ $(DEBUG_BINARIES): $(NAME)-%-debug: $(BUILD_DIR)/$(NAME)-%-debug
$(addprefix $(BUILD_DIR)/,$(DEBUG_BINARIES)): $(BUILD_DIR)/$(NAME)-%-debug:
@echo "Building debug binary"
mkdir -p $(BUILD_DIR)
- go build -v --ldflags '${GO_LINK_VERSION}' -tags "$(BUILD_TAGS)" -gcflags='all=-N -l' -o $@ github.com/apache/skywalking-banyandb/$(SOURCE_DIR)/cmd/$*
+ go build -v -buildvcs=false --ldflags '${GO_LINK_VERSION}' -tags "$(BUILD_TAGS)" -gcflags='all=-N -l' -o $@ github.com/apache/skywalking-banyandb/$(SOURCE_DIR)/cmd/$*
chmod +x $@
@echo "Done building debug $(NAME) $*"
@@ -57,6 +57,7 @@ $(STATIC_BINARIES): $(NAME)-%-static: $(BUILD_DIR)/$(NAME)-%-static
$(addprefix $(BUILD_DIR)/,$(STATIC_BINARIES)): $(BUILD_DIR)/$(NAME)-%-static:
@echo "Building static binary"
CGO_ENABLED=0 GOOS=linux go build \
+ -buildvcs=false \
-a --ldflags '${GO_LINK_VERSION} -extldflags "-static"' -tags "netgo $(BUILD_TAGS)" -installsuffix netgo \
-o $(BUILD_DIR)/$(NAME)-$*-static github.com/apache/skywalking-banyandb/$(SOURCE_DIR)/cmd/$*
chmod +x $(BUILD_DIR)/$(NAME)-$*-static
@@ -68,6 +69,7 @@ $(DEBUG_STATIC_BINARIES): $(NAME)-%-debug-static: $(BUILD_DIR)/$(NAME)-%-debug-s
$(addprefix $(BUILD_DIR)/,$(DEBUG_STATIC_BINARIES)): $(BUILD_DIR)/$(NAME)-%-debug-static:
@echo "Building debug static binary"
CGO_ENABLED=0 GOOS=linux go build \
+ -buildvcs=false \
-a --ldflags '${GO_LINK_VERSION} -extldflags "-static"' -tags "netgo $(BUILD_TAGS)" -gcflags='all=-N -l' -installsuffix netgo \
-o $(BUILD_DIR)/$(NAME)-$*-debug-static github.com/apache/skywalking-banyandb/$(SOURCE_DIR)/cmd/$*
chmod +x $(BUILD_DIR)/$(NAME)-$*-debug-static
diff --git a/scripts/build/docker.mk b/scripts/build/docker.mk
index ead34c9..d34df40 100644
--- a/scripts/build/docker.mk
+++ b/scripts/build/docker.mk
@@ -29,8 +29,6 @@ TAG ?= latest
IMG := $(HUB)/$(IMG_NAME):$(TAG)
-DOCKER_BUILD_ARGS ?= ""
-
# Disable cache in CI environment
ifeq (true,$(CI))
DOCKER_BUILD_ARGS := $(DOCKER_BUILD_ARGS) --no-cache --load
@@ -39,7 +37,7 @@ endif
.PHONY: docker
docker:
@echo "Build $(IMG)"
- @time docker buildx build $(DOCKER_BUILD_ARGS) -t $(IMG) -f Dockerfile ..
+ time docker buildx build $(DOCKER_BUILD_ARGS) -t $(IMG) -f Dockerfile ..
.PHONY: docker.push
docker.push:
diff --git a/test/e2e-v2/script/docker-compose/base-compose.yml b/test/docker/base-compose.yml
similarity index 87%
copy from test/e2e-v2/script/docker-compose/base-compose.yml
copy to test/docker/base-compose.yml
index dd665ea..1db2405 100644
--- a/test/e2e-v2/script/docker-compose/base-compose.yml
+++ b/test/docker/base-compose.yml
@@ -13,26 +13,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-version: '2.1'
-
services:
banyandb:
- image: "apache/skywalking-banyandb:${TAG}"
- networks:
- - e2e
expose:
- 17912
- command: standalone --stream-root-path /tmp/stream-data --measure-root-path /tmp/measure-data
+ command: standalone
healthcheck:
- test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 17912"]
+ test: ["CMD", "/grpc-health-probe", "-addr=localhost:17912"]
interval: 5s
- timeout: 60s
+ timeout: 10s
retries: 120
agent:
image: "ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java8"
- networks:
- - e2e
command: cp -r /skywalking/agent/ /skywalking-java-agent/
volumes:
- sw_agent:/skywalking-java-agent
@@ -44,10 +37,6 @@ services:
- 12800
- 10051
- 5005
- networks:
- - e2e
- volumes:
- - ./../prepare/setup-oap/log4j2.xml:/skywalking/config/log4j2.xml
environment:
SW_CLUSTER_ZK_HOST_PORT: zk:2181
SW_STORAGE_ES_CLUSTER_NODES: es:9200
@@ -69,8 +58,6 @@ services:
image: "ghcr.io/apache/skywalking/ui:${SW_OAP_COMMIT}"
expose:
- 8080
- networks:
- - e2e
environment:
- SW_OAP_ADDRESS=http://oap:12800
@@ -78,8 +65,6 @@ services:
image: "ghcr.io/apache/skywalking/e2e-service-provider:${SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT}"
volumes:
- sw_agent:/sw-java-agent
- networks:
- - e2e
expose:
- 9090
- 5005
@@ -101,8 +86,6 @@ services:
image: "ghcr.io/apache/skywalking/e2e-service-consumer:${SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT}"
volumes:
- sw_agent:/sw-java-agent
- networks:
- - e2e
expose:
- 9092
- 5005
@@ -121,8 +104,11 @@ services:
timeout: 60s
retries: 120
-networks:
- e2e:
+ traffic_loader:
+ image: grafana/k6:latest
+ ports:
+ - "6565:6565"
+
volumes:
sw_agent:
\ No newline at end of file
diff --git a/test/e2e-v2/cases/event/banyandb/docker-compose.yml b/test/e2e-v2/cases/event/banyandb/docker-compose.yml
index 551c406..aa3bb42 100644
--- a/test/e2e-v2/cases/event/banyandb/docker-compose.yml
+++ b/test/e2e-v2/cases/event/banyandb/docker-compose.yml
@@ -13,8 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-version: '3.8'
-
services:
banyandb:
extends:
diff --git a/test/e2e-v2/script/docker-compose/base-compose.yml b/test/e2e-v2/script/docker-compose/base-compose.yml
index dd665ea..452c50c 100644
--- a/test/e2e-v2/script/docker-compose/base-compose.yml
+++ b/test/e2e-v2/script/docker-compose/base-compose.yml
@@ -17,112 +17,42 @@ version: '2.1'
services:
banyandb:
+ extends:
+ file: ../../docker/docker-compose/base-compose.yml
+ service: banyandb
image: "apache/skywalking-banyandb:${TAG}"
networks:
- e2e
- expose:
- - 17912
- command: standalone --stream-root-path /tmp/stream-data --measure-root-path /tmp/measure-data
- healthcheck:
- test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 17912"]
- interval: 5s
- timeout: 60s
- retries: 120
agent:
- image: "ghcr.io/apache/skywalking-java/skywalking-java:${SW_AGENT_JAVA_COMMIT}-java8"
+ extends:
+ file: ../../docker/docker-compose/base-compose.yml
+ service: agent
networks:
- e2e
- command: cp -r /skywalking/agent/ /skywalking-java-agent/
- volumes:
- - sw_agent:/skywalking-java-agent
oap:
- image: "ghcr.io/apache/skywalking/oap:${SW_OAP_COMMIT}"
- expose:
- - 11800
- - 12800
- - 10051
- - 5005
+ extends:
+ file: ../../docker/docker-compose/base-compose.yml
+ service: oap
networks:
- e2e
volumes:
- ./../prepare/setup-oap/log4j2.xml:/skywalking/config/log4j2.xml
- environment:
- SW_CLUSTER_ZK_HOST_PORT: zk:2181
- SW_STORAGE_ES_CLUSTER_NODES: es:9200
- SW_JDBC_URL: jdbc:mysql://mysql:3306/swtest
- SW_STORAGE_INFLUXDB_URL: http://influxdb:8086
- SW_STORAGE_BANYANDB_HOST: banyandb
- SW_STORAGE_IOTDB_HOST: iotdb
- SW_STORAGE_IOTDB_SESSIONPOOL_SIZE: 2
- SW_CONFIG_ETCD_PERIOD: 1
- SW_CONFIG_ETCD_ENDPOINTS: http://etcd:2379
- SW_CLUSTER_ETCD_ENDPOINTS: http://etcd:2379
- healthcheck:
- test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/11800"]
- interval: 5s
- timeout: 60s
- retries: 120
-
- ui:
- image: "ghcr.io/apache/skywalking/ui:${SW_OAP_COMMIT}"
- expose:
- - 8080
- networks:
- - e2e
- environment:
- - SW_OAP_ADDRESS=http://oap:12800
provider:
- image: "ghcr.io/apache/skywalking/e2e-service-provider:${SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT}"
- volumes:
- - sw_agent:/sw-java-agent
+ extends:
+ file: ../../docker/docker-compose/base-compose.yml
+ service: provider
networks:
- e2e
- expose:
- - 9090
- - 5005
- environment:
- JAVA_TOOL_OPTIONS: -javaagent:/sw-java-agent/agent/skywalking-agent.jar
- SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
- SW_LOGGING_OUTPUT: CONSOLE
- SW_AGENT_NAME: e2e-service-provider
- SW_AGENT_INSTANCE_NAME: provider1
- SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1
- SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1
- healthcheck:
- test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9090"]
- interval: 5s
- timeout: 60s
- retries: 120
consumer:
- image: "ghcr.io/apache/skywalking/e2e-service-consumer:${SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT}"
- volumes:
- - sw_agent:/sw-java-agent
+ extends:
+ file: ../../docker/docker-compose/base-compose.yml
+ service: consumer
networks:
- e2e
- expose:
- - 9092
- - 5005
- environment:
- JAVA_TOOL_OPTIONS: -javaagent:/sw-java-agent/agent/skywalking-agent.jar
- SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800
- SW_LOGGING_OUTPUT: CONSOLE
- PROVIDER_URL: http://provider:9090
- SW_AGENT_NAME: e2e-service-consumer
- SW_AGENT_INSTANCE_NAME: consumer1
- SW_AGENT_COLLECTOR_GET_PROFILE_TASK_INTERVAL: 1
- SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL: 1
- healthcheck:
- test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/9092"]
- interval: 5s
- timeout: 60s
- retries: 120
networks:
e2e:
-
-volumes:
- sw_agent:
\ No newline at end of file
diff --git a/.gitignore b/test/stress/Makefile
similarity index 70%
copy from .gitignore
copy to test/stress/Makefile
index 426298d..1a12f92 100644
--- a/.gitignore
+++ b/test/stress/Makefile
@@ -14,35 +14,18 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+#
-# Binaries for programs and plugins
-*.exe
-*.exe~
-*.dll
-*.so
-*.dylib
-bin
-include
-/build
-target
-
-# Test binary, build with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
+NAME := ui
-# editor and IDE paraphernalia
-.idea
-*.swp
-*.swo
-*~
-.vscode
+.PHONY: dev-up
+dev-up:
+ DOCKER_BUILDKIT=1 docker compose --env-file ./env.dev up --build
-.DS_Store
-.env
-.run
+.PHONY: up
+up:
+ DOCKER_BUILDKIT=1 docker compose --env-file ./env up --build
-# mock files
-*mock.go
-*mock_test.go
+.PHONY: down
+down:
+ DOCKER_BUILDKIT=1 docker compose down
diff --git a/test/stress/docker-compose.yaml b/test/stress/docker-compose.yaml
new file mode 100644
index 0000000..ad92e1a
--- /dev/null
+++ b/test/stress/docker-compose.yaml
@@ -0,0 +1,105 @@
+# 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.
+
+services:
+ banyandb:
+ extends:
+ file: ../docker/base-compose.yml
+ service: banyandb
+ build:
+ dockerfile: ./banyand/Dockerfile
+ context: ../..
+ target: ${TARGET}
+ volumes:
+ - ../..:/app:rw,delegated
+ ports:
+ - 17913:17913
+ networks:
+ - test
+
+ oap:
+ extends:
+ file: ../docker/base-compose.yml
+ service: oap
+ environment:
+ SW_STORAGE: banyandb
+ ports:
+ - 12800
+ volumes:
+ - ./log4j2.xml:/skywalking/config/log4j2.xml
+ networks:
+ - test
+ depends_on:
+ banyandb:
+ condition: service_healthy
+
+ agent:
+ extends:
+ file: ../docker/base-compose.yml
+ service: agent
+ networks:
+ - test
+
+ provider:
+ extends:
+ file: ../docker/base-compose.yml
+ service: provider
+ ports:
+ - 9090
+ networks:
+ - test
+ depends_on:
+ oap:
+ condition: service_healthy
+ agent:
+ condition: service_completed_successfully
+
+ consumer:
+ extends:
+ file: ../docker/base-compose.yml
+ service: consumer
+ ports:
+ - 9092
+ networks:
+ - test
+ depends_on:
+ oap:
+ condition: service_healthy
+ provider:
+ condition: service_healthy
+ agent:
+ condition: service_completed_successfully
+
+ traffic_loader:
+ extends:
+ file: ../docker/base-compose.yml
+ service: traffic_loader
+ command: run --duration 1h /scripts/consumer.js
+ volumes:
+ - ./scripts:/scripts
+ networks:
+ - test
+ depends_on:
+ oap:
+ condition: service_healthy
+ provider:
+ condition: service_healthy
+ consumer:
+ condition: service_healthy
+networks:
+ test:
+
+volumes:
+ sw_agent:
diff --git a/test/stress/env b/test/stress/env
new file mode 100644
index 0000000..3571db7
--- /dev/null
+++ b/test/stress/env
@@ -0,0 +1,31 @@
+# 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.
+
+SW_AGENT_JAVA_COMMIT=5bc1d1d1f1d9ce6a4f7fce20e8ecc330bccf47ec
+SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=34a4553e23530e8255efe6f5a0adff9e69555d64
+SW_AGENT_SATELLITE_COMMIT=1987e1d566ac90f6b58a45fd9bfa27bf8faad635
+SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa
+SW_AGENT_NODEJS_COMMIT=2e7560518aff846befd4d6bc815fe5e38c704a11
+SW_AGENT_GO_COMMIT=4af380c2db6243106b0fc650b6003ce3b3eb82a0
+SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
+SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
+SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
+SW_KUBERNETES_COMMIT_SHA=0f3ec68e5a7e1608cec8688716b848ed15e971e5
+SW_ROVER_COMMIT=90c93c706743aac1f5853b677730edae8cc32a2c
+SW_CTL_COMMIT=219876daf985fd474955834ef0b65013f0890e96
+
+SW_OAP_COMMIT=dc39ce9bb44ed33d9c2bb0d5a054b1dfd5bbd657
+
+TARGET=test
diff --git a/test/stress/env.dev b/test/stress/env.dev
new file mode 100644
index 0000000..496b269
--- /dev/null
+++ b/test/stress/env.dev
@@ -0,0 +1,31 @@
+# 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.
+
+SW_AGENT_JAVA_COMMIT=5bc1d1d1f1d9ce6a4f7fce20e8ecc330bccf47ec
+SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=34a4553e23530e8255efe6f5a0adff9e69555d64
+SW_AGENT_SATELLITE_COMMIT=1987e1d566ac90f6b58a45fd9bfa27bf8faad635
+SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa
+SW_AGENT_NODEJS_COMMIT=2e7560518aff846befd4d6bc815fe5e38c704a11
+SW_AGENT_GO_COMMIT=4af380c2db6243106b0fc650b6003ce3b3eb82a0
+SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
+SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
+SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
+SW_KUBERNETES_COMMIT_SHA=0f3ec68e5a7e1608cec8688716b848ed15e971e5
+SW_ROVER_COMMIT=90c93c706743aac1f5853b677730edae8cc32a2c
+SW_CTL_COMMIT=219876daf985fd474955834ef0b65013f0890e96
+
+SW_OAP_COMMIT=dc39ce9bb44ed33d9c2bb0d5a054b1dfd5bbd657
+
+TARGET=dev
diff --git a/test/stress/log4j2.xml b/test/stress/log4j2.xml
new file mode 100644
index 0000000..e3174f5
--- /dev/null
+++ b/test/stress/log4j2.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ ~
+ -->
+
+<Configuration status="INFO">
+ <Appenders>
+ <Console name="Console" target="SYSTEM_OUT">
+ <PatternLayout charset="UTF-8" pattern="%d %c %L [%t] %-5p %x - %m%n"/>
+ </Console>
+ </Appenders>
+ <Loggers>
+ <logger name="org.apache.skywalking.oap.server.storage.plugin.banyandb" level="DEBUG"/>
+ <logger name="org.apache.skywalking.oap.server.core.storage.ttl" level="DEBUG"/>
+ <logger name="org.apache.skywalking.restapi" level="DEBUG"/>
+ <Root level="INFO">
+ <AppenderRef ref="Console"/>
+ </Root>
+ </Loggers>
+</Configuration>
diff --git a/test/stress/scripts/consumer.js b/test/stress/scripts/consumer.js
new file mode 100644
index 0000000..5a0fe30
--- /dev/null
+++ b/test/stress/scripts/consumer.js
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+import http from "k6/http";
+import { check, group } from "k6";
+
+export default function () {
+ // POST request
+ let res = http.post("http://consumer:9092/info");
+ check(res, {
+ "status is 200": (r) => r.status === 200,
+ });
+}
\ No newline at end of file