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]

Reply via email to