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:38 UTC
[skywalking-banyandb] branch test-traffic-gen created (now 3b170f0)
This is an automated email from the ASF dual-hosted git repository.
hanahmily pushed a change to branch test-traffic-gen
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
at 3b170f0 Add traffic generator
This branch includes the following new commits:
new 3b170f0 Add traffic generator
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-banyandb] 01/01: Add traffic generator
Posted by ha...@apache.org.
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