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()) }
