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

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

commit 683d181f02b883577ce35abd6a7692204444b328
Author: Gao Hongtao <[email protected]>
AuthorDate: Wed Sep 11 15:03:57 2024 +0000

    Test query trace
    
    Signed-off-by: Gao Hongtao <[email protected]>
---
 pkg/index/inverted/inverted_series.go      |  4 ++--
 pkg/index/inverted/inverted_series_test.go |  3 +++
 pkg/index/inverted/query.go                | 34 ++++++++++++------------------
 test/cases/measure/data/data.go            | 16 +++++++++++---
 test/cases/stream/data/data.go             | 16 +++++++++++---
 test/cases/topn/data/data.go               | 16 +++++++++++---
 6 files changed, 58 insertions(+), 31 deletions(-)

diff --git a/pkg/index/inverted/inverted_series.go 
b/pkg/index/inverted/inverted_series.go
index 7c3e31f2..074e30c2 100644
--- a/pkg/index/inverted/inverted_series.go
+++ b/pkg/index/inverted/inverted_series.go
@@ -54,13 +54,13 @@ func (s *store) BuildQuery(seriesMatchers 
[]index.SeriesMatcher, secondaryQuery
                        q := bluge.NewPrefixQuery(match)
                        q.SetField(entityField)
                        qs[i] = q
-                       primaryNode.Append(newPrefixNode(match, nil))
+                       primaryNode.Append(newPrefixNode(match))
                case index.SeriesMatcherTypeWildcard:
                        match := convert.BytesToString(seriesMatchers[i].Match)
                        q := bluge.NewWildcardQuery(match)
                        q.SetField(entityField)
                        qs[i] = q
-                       primaryNode.Append(newWildcardNode(match, nil))
+                       primaryNode.Append(newWildcardNode(match))
                default:
                        return nil, errors.Errorf("unsupported series matcher 
type: %v", seriesMatchers[i].Type)
                }
diff --git a/pkg/index/inverted/inverted_series_test.go 
b/pkg/index/inverted/inverted_series_test.go
index 647189d9..44fe9671 100644
--- a/pkg/index/inverted/inverted_series_test.go
+++ b/pkg/index/inverted/inverted_series_test.go
@@ -192,6 +192,7 @@ func TestStore_Search(t *testing.T) {
                }
                t.Run(name, func(t *testing.T) {
                        query, err := s.BuildQuery(matchers, nil)
+                       require.NotEmpty(t, query.String())
                        require.NoError(t, err)
                        got, err := s.Search(context.Background(), 
tt.projection, query)
                        require.NoError(t, err)
@@ -282,6 +283,7 @@ func TestStore_SearchWildcard(t *testing.T) {
                                },
                        }, nil)
                        require.NoError(t, err)
+                       require.NotEmpty(t, query.String())
                        got, err := s.Search(context.Background(), 
tt.projection, query)
                        require.NoError(t, err)
                        assert.ElementsMatch(t, tt.want, got)
@@ -349,6 +351,7 @@ func TestStore_SearchPrefix(t *testing.T) {
                                },
                        }, nil)
                        require.NoError(t, err)
+                       require.NotEmpty(t, query.String())
                        got, err := s.Search(context.Background(), 
tt.projection, query)
                        require.NoError(t, err)
                        assert.ElementsMatch(t, tt.want, got)
diff --git a/pkg/index/inverted/query.go b/pkg/index/inverted/query.go
index b34fd719..fc110bc7 100644
--- a/pkg/index/inverted/query.go
+++ b/pkg/index/inverted/query.go
@@ -361,7 +361,9 @@ func (t *termRangeInclusiveNode) MarshalJSON() ([]byte, 
error) {
                builder.WriteString(")")
        }
        inner["range"] = builder.String()
-       inner["index"] = t.indexRule.Metadata.Name + ":" + 
t.indexRule.Metadata.Group
+       if t.indexRule != nil {
+               inner["index"] = t.indexRule.Metadata.Name + ":" + 
t.indexRule.Metadata.Group
+       }
        data := make(map[string]interface{}, 1)
        data["termRangeInclusive"] = inner
        return json.Marshal(data)
@@ -385,7 +387,9 @@ func newTermNode(term string, indexRule 
*databasev1.IndexRule) *termNode {
 
 func (t *termNode) MarshalJSON() ([]byte, error) {
        inner := make(map[string]interface{}, 1)
-       inner["index"] = t.indexRule.Metadata.Name + ":" + 
t.indexRule.Metadata.Group
+       if t.indexRule != nil {
+               inner["index"] = t.indexRule.Metadata.Name + ":" + 
t.indexRule.Metadata.Group
+       }
        inner["value"] = t.term
        data := make(map[string]interface{}, 1)
        data["term"] = inner
@@ -423,23 +427,18 @@ func (m *matchNode) String() string {
 }
 
 type prefixNode struct {
-       indexRule *databasev1.IndexRule
-       prefix    string
+       prefix string
 }
 
-func newPrefixNode(prefix string, indexRule *databasev1.IndexRule) *prefixNode 
{
+func newPrefixNode(prefix string) *prefixNode {
        return &prefixNode{
-               indexRule: indexRule,
-               prefix:    prefix,
+               prefix: prefix,
        }
 }
 
 func (m *prefixNode) MarshalJSON() ([]byte, error) {
-       inner := make(map[string]interface{}, 1)
-       inner["index"] = m.indexRule.Metadata.Name + ":" + 
m.indexRule.Metadata.Group
-       inner["value"] = m.prefix
        data := make(map[string]interface{}, 1)
-       data["prefix"] = inner
+       data["prefix"] = m.prefix
        return json.Marshal(data)
 }
 
@@ -448,23 +447,18 @@ func (m *prefixNode) String() string {
 }
 
 type wildcardNode struct {
-       indexRule *databasev1.IndexRule
-       wildcard  string
+       wildcard string
 }
 
-func newWildcardNode(wildcard string, indexRule *databasev1.IndexRule) 
*wildcardNode {
+func newWildcardNode(wildcard string) *wildcardNode {
        return &wildcardNode{
-               indexRule: indexRule,
-               wildcard:  wildcard,
+               wildcard: wildcard,
        }
 }
 
 func (m *wildcardNode) MarshalJSON() ([]byte, error) {
-       inner := make(map[string]interface{}, 1)
-       inner["index"] = m.indexRule.Metadata.Name + ":" + 
m.indexRule.Metadata.Group
-       inner["value"] = m.wildcard
        data := make(map[string]interface{}, 1)
-       data["wildcard"] = inner
+       data["wildcard"] = m.wildcard
        return json.Marshal(data)
 }
 
diff --git a/test/cases/measure/data/data.go b/test/cases/measure/data/data.go
index 3077c510..8bd664f2 100644
--- a/test/cases/measure/data/data.go
+++ b/test/cases/measure/data/data.go
@@ -81,23 +81,33 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext 
helpers.SharedContext, args
                        
innerGm.Expect(resp.DataPoints[i].Sid).Should(gm.BeNumerically(">", 0))
                }
        }
-       innerGm.Expect(cmp.Equal(resp, want,
+       success := innerGm.Expect(cmp.Equal(resp, want,
                protocmp.IgnoreUnknown(),
                protocmp.IgnoreFields(&measurev1.DataPoint{}, "timestamp"),
                protocmp.IgnoreFields(&measurev1.DataPoint{}, "version"),
                protocmp.IgnoreFields(&measurev1.DataPoint{}, "sid"),
                protocmp.Transform())).
                To(gm.BeTrue(), func() string {
-                       j, err := protojson.Marshal(resp)
+                       var j []byte
+                       j, err = protojson.Marshal(resp)
                        if err != nil {
                                return err.Error()
                        }
-                       y, err := yaml.JSONToYAML(j)
+                       var y []byte
+                       y, err = yaml.JSONToYAML(j)
                        if err != nil {
                                return err.Error()
                        }
                        return string(y)
                })
+       if !success {
+               return
+       }
+       query.Trace = true
+       resp, err = c.Query(ctx, query)
+       innerGm.Expect(err).NotTo(gm.HaveOccurred())
+       innerGm.Expect(resp.Trace).NotTo(gm.BeNil())
+       innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty())
 }
 
 //go:embed testdata/*.json
diff --git a/test/cases/stream/data/data.go b/test/cases/stream/data/data.go
index 822d35b3..6701e166 100644
--- a/test/cases/stream/data/data.go
+++ b/test/cases/stream/data/data.go
@@ -97,21 +97,31 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext 
helpers.SharedContext, args
                        return strings.Compare(a.ElementId, b.ElementId)
                })
        }
-       innerGm.Expect(cmp.Equal(resp, want,
+       success := innerGm.Expect(cmp.Equal(resp, want,
                protocmp.IgnoreUnknown(),
                protocmp.IgnoreFields(&streamv1.Element{}, "timestamp"),
                protocmp.Transform())).
                To(gm.BeTrue(), func() string {
-                       j, err := protojson.Marshal(resp)
+                       var j []byte
+                       j, err = protojson.Marshal(resp)
                        if err != nil {
                                return err.Error()
                        }
-                       y, err := yaml.JSONToYAML(j)
+                       var y []byte
+                       y, err = yaml.JSONToYAML(j)
                        if err != nil {
                                return err.Error()
                        }
                        return string(y)
                })
+       if !success {
+               return
+       }
+       query.Trace = true
+       resp, err = c.Query(ctx, query)
+       innerGm.Expect(err).NotTo(gm.HaveOccurred())
+       innerGm.Expect(resp.Trace).NotTo(gm.BeNil())
+       innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty())
 }
 
 func loadData(stream streamv1.StreamService_WriteClient, metadata 
*commonv1.Metadata, dataFile string, baseTime time.Time, interval 
time.Duration) {
diff --git a/test/cases/topn/data/data.go b/test/cases/topn/data/data.go
index 1eb7fbb5..983be9c4 100644
--- a/test/cases/topn/data/data.go
+++ b/test/cases/topn/data/data.go
@@ -67,19 +67,29 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext 
helpers.SharedContext, args
        innerGm.Expect(err).NotTo(gm.HaveOccurred())
        want := &measurev1.TopNResponse{}
        helpers.UnmarshalYAML(ww, want)
-       innerGm.Expect(cmp.Equal(resp, want,
+       success := innerGm.Expect(cmp.Equal(resp, want,
                protocmp.IgnoreUnknown(),
                protocmp.IgnoreFields(&measurev1.TopNList{}, "timestamp"),
                protocmp.Transform())).
                To(gm.BeTrue(), func() string {
-                       j, err := protojson.Marshal(resp)
+                       var j []byte
+                       j, err = protojson.Marshal(resp)
                        if err != nil {
                                return err.Error()
                        }
-                       y, err := yaml.JSONToYAML(j)
+                       var y []byte
+                       y, err = yaml.JSONToYAML(j)
                        if err != nil {
                                return err.Error()
                        }
                        return string(y)
                })
+       if !success {
+               return
+       }
+       query.Trace = true
+       resp, err = c.TopN(ctx, query)
+       innerGm.Expect(err).NotTo(gm.HaveOccurred())
+       innerGm.Expect(resp.Trace).NotTo(gm.BeNil())
+       innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty())
 }

Reply via email to