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 2024/02/28 00:35:25 UTC

(skywalking-banyandb) 01/01: Fix CI tasks

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

hanahmily pushed a commit to branch ci
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git

commit bab977823e5665feb3db44fca20dcd3e1ad99008
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Wed Feb 28 00:33:06 2024 +0000

    Fix CI tasks
    
    Signed-off-by: Gao Hongtao <ha...@gmail.com>
---
 .github/workflows/flaky-test.yml         |   2 +-
 banyand/measure/merger_policy.go         |   2 +-
 bydbctl/internal/cmd/root.go             |   3 +
 test/docker/base-compose.yml             |   2 +-
 test/integration/load/load_suite_test.go | 141 ++++++++++++++++++-------------
 test/stress/Makefile                     |  16 ++--
 test/stress/docker-compose.yaml          |  16 +++-
 test/stress/env                          |   8 +-
 test/stress/env.dev                      |   8 +-
 9 files changed, 122 insertions(+), 76 deletions(-)

diff --git a/.github/workflows/flaky-test.yml b/.github/workflows/flaky-test.yml
index 0ca35b3a..3420da1d 100644
--- a/.github/workflows/flaky-test.yml
+++ b/.github/workflows/flaky-test.yml
@@ -28,5 +28,5 @@ jobs:
     if: github.repository == 'apache/skywalking-banyandb'
     uses: ./.github/workflows/test.yml
     with:
-      options: --repeat 49 --label-filter \\(integration\\&\\&\\!slow\\)\\|\\|banyand
+      options: --repeat 49 --label-filter '(integration&&!slow)||banyand'
       timeout-minutes: 40
diff --git a/banyand/measure/merger_policy.go b/banyand/measure/merger_policy.go
index cdb7e9ad..b04e26cc 100644
--- a/banyand/measure/merger_policy.go
+++ b/banyand/measure/merger_policy.go
@@ -32,7 +32,7 @@ type mergePolicy struct {
 
 // NewDefaultMergePolicy create a MergePolicy with default parameters.
 func newDefaultMergePolicy() *mergePolicy {
-	return newMergePolicy(15, 1.7, math.MaxUint64)
+	return newMergePolicy(8, 1.7, math.MaxUint64)
 }
 
 func newDefaultMergePolicyForTesting() *mergePolicy {
diff --git a/bydbctl/internal/cmd/root.go b/bydbctl/internal/cmd/root.go
index 9aff040d..f9645fca 100644
--- a/bydbctl/internal/cmd/root.go
+++ b/bydbctl/internal/cmd/root.go
@@ -79,6 +79,9 @@ func init() {
 
 func initConfig() {
 	if cfgFile != "" {
+		if cfgFile == "-" {
+			return
+		}
 		// Use config file from the flag.
 		viper.SetConfigFile(cfgFile)
 	} else {
diff --git a/test/docker/base-compose.yml b/test/docker/base-compose.yml
index 49b4e3d5..7379151c 100644
--- a/test/docker/base-compose.yml
+++ b/test/docker/base-compose.yml
@@ -21,7 +21,7 @@ services:
       - 6060
     command: standalone
     healthcheck:
-      test: ["CMD", "./bydbctl", "health", "--addr=http://banyandb:17913"]
+      test: ["CMD", "./bydbctl", "health", "--config=-", "--addr=http://banyandb:17913"]
       interval: 5s
       timeout: 10s
       retries: 120
diff --git a/test/integration/load/load_suite_test.go b/test/integration/load/load_suite_test.go
index 7071bc5e..65011cd4 100644
--- a/test/integration/load/load_suite_test.go
+++ b/test/integration/load/load_suite_test.go
@@ -18,6 +18,7 @@
 package integration_load_test
 
 import (
+	"context"
 	"testing"
 	"time"
 
@@ -27,12 +28,14 @@ import (
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials/insecure"
 
+	commonv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/common/v1"
+	modelv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/model/v1"
+	streamv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/stream/v1"
 	"github.com/apache/skywalking-banyandb/pkg/grpchelper"
 	"github.com/apache/skywalking-banyandb/pkg/logger"
 	"github.com/apache/skywalking-banyandb/pkg/test/flags"
 	"github.com/apache/skywalking-banyandb/pkg/test/helpers"
 	"github.com/apache/skywalking-banyandb/pkg/test/setup"
-	cases_stream "github.com/apache/skywalking-banyandb/test/cases/stream"
 	cases_stream_data "github.com/apache/skywalking-banyandb/test/cases/stream/data"
 )
 
@@ -41,64 +44,88 @@ func TestIntegrationLoad(t *testing.T) {
 	RunSpecs(t, "Integration Load Suite", Label("integration", "slow"))
 }
 
-var (
-	connection *grpc.ClientConn
-	now        time.Time
-	deferFunc  func()
-	goods      []gleak.Goroutine
-)
+var _ = Describe("Test Suite", func() {
+	var (
+		connection *grpc.ClientConn
+		now        time.Time
+		deferFunc  func()
+		goods      []gleak.Goroutine
+		addr       string
+	)
 
-var _ = SynchronizedBeforeSuite(func() []byte {
-	goods = gleak.Goroutines()
-	Expect(logger.Init(logger.Logging{
-		Env:   "dev",
-		Level: flags.LogLevel,
-	})).To(Succeed())
-	var addr string
-	addr, _, deferFunc = setup.Standalone()
-	Eventually(
-		helpers.HealthCheck(addr, 10*time.Second, 10*time.Second, grpc.WithTransportCredentials(insecure.NewCredentials())),
-		flags.EventuallyTimeout).Should(Succeed())
-	conn, err := grpchelper.Conn(addr, 10*time.Second, grpc.WithTransportCredentials(insecure.NewCredentials()))
-	Expect(err).NotTo(HaveOccurred())
-	days := 7
-	hours := 24
-	minutes := 60
-	interval := 10 * time.Second
-	c := time.Now()
-	for i := 0; i < days; i++ {
-		date := c.Add(-time.Hour * time.Duration((days-i)*24))
-		for h := 0; h < hours; h++ {
-			hour := date.Add(time.Hour * time.Duration(h))
-			start := time.Now()
-			for j := 0; j < minutes; j++ {
-				n := hour.Add(time.Minute * time.Duration(j))
-				ns := n.UnixNano()
-				now = time.Unix(0, ns-ns%int64(time.Minute))
-				// stream
-				cases_stream_data.Write(conn, "data.json", now, interval)
+	BeforeEach(func() {
+		Expect(logger.Init(logger.Logging{
+			Env:   "dev",
+			Level: flags.LogLevel,
+		})).Should(Succeed())
+		goods = gleak.Goroutines()
+		addr, _, deferFunc = setup.Standalone()
+		Eventually(
+			helpers.HealthCheck(addr, 10*time.Second, 10*time.Second, grpc.WithTransportCredentials(insecure.NewCredentials())),
+			flags.EventuallyTimeout).Should(Succeed())
+		var err error
+		connection, err = grpchelper.Conn(addr, 10*time.Second, grpc.WithTransportCredentials(insecure.NewCredentials()))
+		Expect(err).NotTo(HaveOccurred())
+		days := 7
+		hours := 24
+		minutes := 60
+		interval := 10 * time.Second
+		c := time.Now()
+		for i := 0; i < days; i++ {
+			date := c.Add(-time.Hour * time.Duration((days-i)*24))
+			for h := 0; h < hours; h++ {
+				hour := date.Add(time.Hour * time.Duration(h))
+				start := time.Now()
+				for j := 0; j < minutes; j++ {
+					n := hour.Add(time.Minute * time.Duration(j))
+					ns := n.UnixNano()
+					now = time.Unix(0, ns-ns%int64(time.Minute))
+					// stream
+					cases_stream_data.Write(connection, "data.json", now, interval)
+				}
+				logger.Infof("written stream in %s took %s \n", hour, time.Since(start))
 			}
-			GinkgoWriter.Printf("written stream in %s took %s \n", hour, time.Since(start))
 		}
-	}
-	Expect(conn.Close()).To(Succeed())
-	return []byte(addr)
-}, func(address []byte) {
-	var err error
-	connection, err = grpchelper.Conn(string(address), 10*time.Second,
-		grpc.WithTransportCredentials(insecure.NewCredentials()))
-	cases_stream.SharedContext = helpers.SharedContext{
-		Connection: connection,
-		BaseTime:   now,
-	}
-	Expect(err).NotTo(HaveOccurred())
-})
-
-var _ = SynchronizedAfterSuite(func() {
-	if connection != nil {
 		Expect(connection.Close()).To(Succeed())
-	}
-}, func() {
-	deferFunc()
-	Eventually(gleak.Goroutines, flags.EventuallyTimeout).ShouldNot(gleak.HaveLeaked(goods))
+	})
+
+	It("should read data", func() {
+		var err error
+		connection, err = grpchelper.Conn(addr, 10*time.Second,
+			grpc.WithTransportCredentials(insecure.NewCredentials()))
+		Expect(err).NotTo(HaveOccurred())
+		sharedContext := helpers.SharedContext{
+			Connection: connection,
+			BaseTime:   now,
+		}
+		query := &streamv1.QueryRequest{
+			Metadata: &commonv1.Metadata{
+				Name:  "sw",
+				Group: "default",
+			},
+			Projection: &modelv1.TagProjection{
+				TagFamilies: []*modelv1.TagProjection_TagFamily{
+					{
+						Name: "searchable",
+						Tags: []string{"trace_id"},
+					},
+				},
+			},
+		}
+		query.TimeRange = helpers.TimeRange(helpers.Args{Input: "all", Duration: 1 * time.Hour}, sharedContext)
+		c := streamv1.NewStreamServiceClient(sharedContext.Connection)
+		ctx := context.Background()
+		resp, err := c.Query(ctx, query)
+		Expect(err).NotTo(HaveOccurred())
+		GinkgoWriter.Printf("query result: %s elements\n", resp.GetElements())
+		Expect(len(resp.GetElements())).To(BeNumerically(">", 0))
+	})
+
+	AfterEach(func() {
+		if connection != nil {
+			Expect(connection.Close()).To(Succeed())
+		}
+		deferFunc()
+		Eventually(gleak.Goroutines, flags.EventuallyTimeout).ShouldNot(gleak.HaveLeaked(goods))
+	})
 })
diff --git a/test/stress/Makefile b/test/stress/Makefile
index e0200152..789c4934 100644
--- a/test/stress/Makefile
+++ b/test/stress/Makefile
@@ -24,14 +24,20 @@ ifdef PROFILE
 	CLI_ARGS := $(CLI_ARGS) --profile $(PROFILE)
 endif
 
+cli_env := DOCKER_BUILDKIT=1 USER_ID=$(shell id -u) GROUP_ID=$(shell id -g)
+
+.PHONY: clean
+clean:
+	rm -rf /tmp/banyandb-stress-agent
+
 .PHONY: dev-up
-dev-up:
-	DOCKER_BUILDKIT=1 docker compose $(CLI_ARGS) --env-file ./env.dev up --build
+dev-up: clean
+	$(cli_env) docker compose $(CLI_ARGS) --env-file ./env.dev up --build
 
 .PHONY: up
-up:
-	DOCKER_BUILDKIT=1 docker compose $(CLI_ARGS) --env-file ./env up --build
+up: clean
+	$(cli_env) docker compose $(CLI_ARGS) --env-file ./env up --build
 
 .PHONY: down
 down:
-	DOCKER_BUILDKIT=1 docker compose down
+	docker compose down
diff --git a/test/stress/docker-compose.yaml b/test/stress/docker-compose.yaml
index 1278a19e..9d28ff79 100644
--- a/test/stress/docker-compose.yaml
+++ b/test/stress/docker-compose.yaml
@@ -14,7 +14,16 @@
 # limitations under the License.
 
 services:
+  change-vol-ownership:
+    image: ubuntu
+    user: "root"
+    group_add:
+      - '${GROUP_ID}'
+    volumes:
+      - /tmp/banyandb-stress-agent:/tmp/change-ownership
+    command: chown -R ${USER_ID}:${GROUP_ID} /tmp/change-ownership
   banyandb:
+    user: "${USER_ID}:${GROUP_ID}"
     extends:
       file: ../docker/base-compose.yml
       service: banyandb
@@ -22,9 +31,7 @@ services:
       dockerfile: ./docker/Dockerfile
       context: ../..
     volumes:
-    - ../..:/app:rw,delegated
-    # Uncomment below line to mount an external volume
-    # - /tmp:/tmp:rw,delgated
+    - /tmp/banyandb-stress-agent:/tmp:rw,delgated
     ports:
     - 17913:17913
     - 6060:6060
@@ -32,6 +39,9 @@ services:
     networks:
       - test
       - monitoring
+    depends_on:
+      change-vol-ownership:
+        condition: service_completed_successfully
 
   oap:
     extends:
diff --git a/test/stress/env b/test/stress/env
index 1560b70d..25350fb1 100644
--- a/test/stress/env
+++ b/test/stress/env
@@ -22,11 +22,11 @@ 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=b670c41d94a82ddefcf466d54bab5c492d88d772
-SW_ROVER_COMMIT=d956eaede57b62108b78bca48045bd09ba88e653
-SW_CTL_COMMIT=e684fae0107045fc23799146d62f04cb68bd5a3b
+SW_KUBERNETES_COMMIT_SHA=e2c61c6774cf377b23516fca6f8a1e119d3191c5
+SW_ROVER_COMMIT=fc8d074c6d34ecfee585a7097cbd5aef1ca680a5
+SW_CTL_COMMIT=6b2eb0011e38b630db6af7203db215806bd141ed
 
 SW_OAP_COMMIT=e5c308d4358d5b02a658b8ad7f153aec99b8e63a
-SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=828e6e2f2b57a0f06bb0d507e3296d2377943d9a
+SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=cc7a2c9e97fd2c421adbe3e9c471688459a446d9
 
 VUS=10
diff --git a/test/stress/env.dev b/test/stress/env.dev
index 69aa1ce1..6e0d3224 100644
--- a/test/stress/env.dev
+++ b/test/stress/env.dev
@@ -21,11 +21,11 @@ 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=b670c41d94a82ddefcf466d54bab5c492d88d772
-SW_ROVER_COMMIT=d956eaede57b62108b78bca48045bd09ba88e653
-SW_CTL_COMMIT=e684fae0107045fc23799146d62f04cb68bd5a3b
+SW_KUBERNETES_COMMIT_SHA=e2c61c6774cf377b23516fca6f8a1e119d3191c5
+SW_ROVER_COMMIT=fc8d074c6d34ecfee585a7097cbd5aef1ca680a5
+SW_CTL_COMMIT=6b2eb0011e38b630db6af7203db215806bd141ed
 
 SW_OAP_COMMIT=e5c308d4358d5b02a658b8ad7f153aec99b8e63a
-SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=828e6e2f2b57a0f06bb0d507e3296d2377943d9a
+SW_AGENT_E2E_SERVICE_PROVIDER_COMMIT=cc7a2c9e97fd2c421adbe3e9c471688459a446d9
 
 VUS=1