This is an automated email from the ASF dual-hosted git repository.
hanahmily pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
The following commit(s) were added to refs/heads/main by this push:
new 58422e35 Test query trace (#533)
58422e35 is described below
commit 58422e35786053e20ea627094a8a7b884b07ffac
Author: Gao Hongtao <[email protected]>
AuthorDate: Wed Sep 11 23:15:00 2024 +0800
Test query trace (#533)
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())
}