Copilot commented on code in PR #821:
URL:
https://github.com/apache/skywalking-banyandb/pull/821#discussion_r2453735440
##########
test/cases/measure/data/data.go:
##########
@@ -137,6 +148,80 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext
helpers.SharedContext, args
verifyWithContext(ctx, innerGm, sharedContext, args)
}
+// verifyQLWithRequest ensures the generated QL matches the YAML request
specification.
+func verifyQLWithRequest(ctx context.Context, innerGm gm.Gomega, args
helpers.Args, yamlQuery *measurev1.QueryRequest, conn *grpclib.ClientConn) {
+ // if the test case expects an error, skip the QL verification.
+ if args.WantErr {
+ return
+ }
+ qlContent, err := qlFS.ReadFile("input/" + args.Input + ".ql")
+ innerGm.Expect(err).NotTo(gm.HaveOccurred())
+
+ var qlQueryStr string
+ for _, line := range strings.Split(string(qlContent), "\n") {
+ trimmed := strings.TrimSpace(line)
+ if trimmed == "" || strings.HasPrefix(trimmed, "#") {
+ continue
+ }
+ if qlQueryStr != "" {
+ qlQueryStr += " "
+ }
+ qlQueryStr += trimmed
+ }
+
+ // Auto-inject stages clause if args.Stages is not empty
+ if len(args.Stages) > 0 {
+ stageClause := " ON " + strings.Join(args.Stages, ", ") + "
STAGES"
+ // Use regex to find and replace IN clause with groups
+ // Pattern: IN followed by groups (with or without parentheses)
+ re :=
regexp.MustCompile(`(?i)\s+IN\s+(\([^)]+\)|[a-zA-Z0-9_-]+(?:\s*,\s*[a-zA-Z0-9_-]+)*)`)
+ qlQueryStr = re.ReplaceAllString(qlQueryStr, " IN
$1"+stageClause)
+ }
+
+ ctrl := gomock.NewController(g.GinkgoT())
+ defer ctrl.Finish()
+
+ mockRepo := metadatapkg.NewMockRepo(ctrl)
+ measure := schema.NewMockMeasure(ctrl)
+ measure.EXPECT().GetMeasure(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, meatadata
*commonv1.Metadata) (*databasev1.Measure, error) {
+ client := databasev1.NewMeasureRegistryServiceClient(conn)
+ resp, getErr := client.Get(ctx,
&databasev1.MeasureRegistryServiceGetRequest{Metadata: meatadata})
Review Comment:
Corrected spelling of 'meatadata' to 'metadata'.
```suggestion
measure.EXPECT().GetMeasure(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, metadata
*commonv1.Metadata) (*databasev1.Measure, error) {
client := databasev1.NewMeasureRegistryServiceClient(conn)
resp, getErr := client.Get(ctx,
&databasev1.MeasureRegistryServiceGetRequest{Metadata: metadata})
```
##########
banyand/liaison/grpc/server.go:
##########
@@ -140,12 +143,27 @@ func NewServer(_ context.Context, tir1Client, tir2Client,
broadcaster queue.Clie
pipeline: tir1Client,
broadcaster: broadcaster,
}
+ propertyService := &propertyServer{
+ schemaRegistry: schemaRegistry,
+ pipeline: tir2Client,
+ nodeRegistry: nr.PropertyNodeRegistry,
+ discoveryService: newDiscoveryService(schema.KindProperty,
schemaRegistry, nr.PropertyNodeRegistry, gr),
+ }
+ bydnQLSVC := &bydbQLService{
Review Comment:
Corrected spelling of 'bydnQLSVC' to 'bydbQLSVC'.
##########
test/cases/topn/data/data.go:
##########
@@ -94,3 +108,86 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext
helpers.SharedContext, args
innerGm.Expect(resp.Trace).NotTo(gm.BeNil())
innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty())
}
+
+// verifyQLWithRequest verifies that the QL file produces an equivalent
QueryRequest to the YAML.
+func verifyQLWithRequest(ctx context.Context, innerGm gm.Gomega, args
helpers.Args, yamlQuery *measurev1.TopNRequest, conn *grpclib.ClientConn) {
+ qlContent, err := qlFS.ReadFile("input/" + args.Input + ".ql")
+ innerGm.Expect(err).NotTo(gm.HaveOccurred())
+ var qlQueryStr string
+ for _, line := range strings.Split(string(qlContent), "\n") {
+ trimmed := strings.TrimSpace(line)
+ if trimmed != "" && !strings.HasPrefix(trimmed, "#") {
+ if qlQueryStr != "" {
+ qlQueryStr += " "
+ }
+ qlQueryStr += trimmed
+ }
+ }
+
+ // Auto-inject stages clause if args.Stages is not empty
+ if len(args.Stages) > 0 {
+ stageClause := " ON " + strings.Join(args.Stages, ", ") + "
STAGES"
+ // Use regex to find and replace IN clause with groups
+ // Pattern: IN followed by groups (with or without parentheses)
+ re :=
regexp.MustCompile(`(?i)\s+IN\s+(\([^)]+\)|[a-zA-Z0-9_-]+(?:\s*,\s*[a-zA-Z0-9_-]+)*)`)
+ qlQueryStr = re.ReplaceAllString(qlQueryStr, " IN
$1"+stageClause)
+ }
+
+ // generate mock metadata repo
+ ctrl := gomock.NewController(g.GinkgoT())
+ defer ctrl.Finish()
+ mockRepo := metadata.NewMockRepo(ctrl)
+ measure := schema.NewMockMeasure(ctrl)
+ measure.EXPECT().GetMeasure(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, meatadata
*commonv1.Metadata) (*databasev1.Measure, error) {
+ client := databasev1.NewMeasureRegistryServiceClient(conn)
+ resp, getErr := client.Get(ctx,
&databasev1.MeasureRegistryServiceGetRequest{Metadata: meatadata})
+ if getErr != nil {
+ return nil, getErr
+ }
+ return resp.Measure, nil
+ }).AnyTimes()
+ topn := schema.NewMockTopNAggregation(ctrl)
+ topn.EXPECT().GetTopNAggregation(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, meatadata
*commonv1.Metadata) (*databasev1.TopNAggregation, error) {
+ client :=
databasev1.NewTopNAggregationRegistryServiceClient(conn)
+ resp, getErr := client.Get(ctx,
&databasev1.TopNAggregationRegistryServiceGetRequest{Metadata: meatadata})
Review Comment:
Corrected spelling of 'meatadata' to 'metadata'.
```suggestion
measure.EXPECT().GetMeasure(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, metadata
*commonv1.Metadata) (*databasev1.Measure, error) {
client := databasev1.NewMeasureRegistryServiceClient(conn)
resp, getErr := client.Get(ctx,
&databasev1.MeasureRegistryServiceGetRequest{Metadata: metadata})
if getErr != nil {
return nil, getErr
}
return resp.Measure, nil
}).AnyTimes()
topn := schema.NewMockTopNAggregation(ctrl)
topn.EXPECT().GetTopNAggregation(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, metadata
*commonv1.Metadata) (*databasev1.TopNAggregation, error) {
client :=
databasev1.NewTopNAggregationRegistryServiceClient(conn)
resp, getErr := client.Get(ctx,
&databasev1.TopNAggregationRegistryServiceGetRequest{Metadata: metadata})
```
##########
test/cases/topn/data/data.go:
##########
@@ -94,3 +108,86 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext
helpers.SharedContext, args
innerGm.Expect(resp.Trace).NotTo(gm.BeNil())
innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty())
}
+
+// verifyQLWithRequest verifies that the QL file produces an equivalent
QueryRequest to the YAML.
+func verifyQLWithRequest(ctx context.Context, innerGm gm.Gomega, args
helpers.Args, yamlQuery *measurev1.TopNRequest, conn *grpclib.ClientConn) {
+ qlContent, err := qlFS.ReadFile("input/" + args.Input + ".ql")
+ innerGm.Expect(err).NotTo(gm.HaveOccurred())
+ var qlQueryStr string
+ for _, line := range strings.Split(string(qlContent), "\n") {
+ trimmed := strings.TrimSpace(line)
+ if trimmed != "" && !strings.HasPrefix(trimmed, "#") {
+ if qlQueryStr != "" {
+ qlQueryStr += " "
+ }
+ qlQueryStr += trimmed
+ }
+ }
+
+ // Auto-inject stages clause if args.Stages is not empty
+ if len(args.Stages) > 0 {
+ stageClause := " ON " + strings.Join(args.Stages, ", ") + "
STAGES"
+ // Use regex to find and replace IN clause with groups
+ // Pattern: IN followed by groups (with or without parentheses)
+ re :=
regexp.MustCompile(`(?i)\s+IN\s+(\([^)]+\)|[a-zA-Z0-9_-]+(?:\s*,\s*[a-zA-Z0-9_-]+)*)`)
+ qlQueryStr = re.ReplaceAllString(qlQueryStr, " IN
$1"+stageClause)
+ }
+
+ // generate mock metadata repo
+ ctrl := gomock.NewController(g.GinkgoT())
+ defer ctrl.Finish()
+ mockRepo := metadata.NewMockRepo(ctrl)
+ measure := schema.NewMockMeasure(ctrl)
+ measure.EXPECT().GetMeasure(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, meatadata
*commonv1.Metadata) (*databasev1.Measure, error) {
+ client := databasev1.NewMeasureRegistryServiceClient(conn)
+ resp, getErr := client.Get(ctx,
&databasev1.MeasureRegistryServiceGetRequest{Metadata: meatadata})
+ if getErr != nil {
+ return nil, getErr
+ }
+ return resp.Measure, nil
+ }).AnyTimes()
+ topn := schema.NewMockTopNAggregation(ctrl)
+ topn.EXPECT().GetTopNAggregation(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, meatadata
*commonv1.Metadata) (*databasev1.TopNAggregation, error) {
+ client :=
databasev1.NewTopNAggregationRegistryServiceClient(conn)
+ resp, getErr := client.Get(ctx,
&databasev1.TopNAggregationRegistryServiceGetRequest{Metadata: meatadata})
Review Comment:
Corrected spelling of 'meatadata' to 'metadata'.
```suggestion
measure.EXPECT().GetMeasure(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, metadata
*commonv1.Metadata) (*databasev1.Measure, error) {
client := databasev1.NewMeasureRegistryServiceClient(conn)
resp, getErr := client.Get(ctx,
&databasev1.MeasureRegistryServiceGetRequest{Metadata: metadata})
if getErr != nil {
return nil, getErr
}
return resp.Measure, nil
}).AnyTimes()
topn := schema.NewMockTopNAggregation(ctrl)
topn.EXPECT().GetTopNAggregation(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, metadata
*commonv1.Metadata) (*databasev1.TopNAggregation, error) {
client :=
databasev1.NewTopNAggregationRegistryServiceClient(conn)
resp, getErr := client.Get(ctx,
&databasev1.TopNAggregationRegistryServiceGetRequest{Metadata: metadata})
```
##########
test/cases/property/data/data.go:
##########
@@ -112,7 +121,67 @@ func verifyWithContext(ctx context.Context, innerGm
gm.Gomega, sharedContext hel
innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty())
}
-// Write writes a property with the given name to the "ui_menu" group and "sw"
name.
+func verifyQLWithRequest(ctx context.Context, innerGm gm.Gomega, args
helpers.Args, yamlQuery *propertyv1.QueryRequest, conn *grpclib.ClientConn) {
+ // if the test case expects an error, skip the QL verification.
+ if args.WantErr {
+ return
+ }
+ qlContent, err := qlFS.ReadFile("input/" + args.Input + ".ql")
+ innerGm.Expect(err).NotTo(gm.HaveOccurred())
+
+ var qlQueryStr string
+ for _, line := range strings.Split(string(qlContent), "\n") {
+ trimmed := strings.TrimSpace(line)
+ if trimmed == "" || strings.HasPrefix(trimmed, "#") {
+ continue
+ }
+ if qlQueryStr != "" {
+ qlQueryStr += " "
+ }
+ qlQueryStr += trimmed
+ }
+
+ ctrl := gomock.NewController(g.GinkgoT())
+ defer ctrl.Finish()
+
+ mockRepo := metadatapkg.NewMockRepo(ctrl)
+ measure := schema.NewMockProperty(ctrl)
+ measure.EXPECT().GetProperty(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, meatadata
*commonv1.Metadata) (*databasev1.Property, error) {
+ client := databasev1.NewPropertyRegistryServiceClient(conn)
+ resp, getErr := client.Get(ctx,
&databasev1.PropertyRegistryServiceGetRequest{Metadata: meatadata})
Review Comment:
Corrected spelling of 'meatadata' to 'metadata'.
```suggestion
measure.EXPECT().GetProperty(gomock.Any(),
gomock.Any()).DoAndReturn(func(ctx context.Context, metadata
*commonv1.Metadata) (*databasev1.Property, error) {
client := databasev1.NewPropertyRegistryServiceClient(conn)
resp, getErr := client.Get(ctx,
&databasev1.PropertyRegistryServiceGetRequest{Metadata: metadata})
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]