Skip to content

Commit 8fb665b

Browse files
authored
Remove validating metric name (#424)
2 parents c5fbcc7 + b242467 commit 8fb665b

6 files changed

+132
-102
lines changed

pkg/pquerier/pqueriertest/client_aggregates_integration_test.go

-38
Original file line numberDiff line numberDiff line change
@@ -703,41 +703,3 @@ func (suite *testClientAggregatesSuite) TestUsePreciseAggregationsConfig() {
703703

704704
suite.Require().Equal(3, seriesCount, "series count didn't match expected")
705705
}
706-
707-
func (suite *testClientAggregatesSuite) TestQueryNonExistingMetric() {
708-
adapter, err := tsdb.NewV3ioAdapter(suite.v3ioConfig, nil, nil)
709-
if err != nil {
710-
suite.T().Fatalf("failed to create v3io adapter. reason: %s", err)
711-
}
712-
713-
labels := utils.LabelsFromStringList("os", "linux")
714-
cpuData := []tsdbtest.DataPoint{{suite.basicQueryTime, 10},
715-
{int64(suite.basicQueryTime + tsdbtest.MinuteInMillis), 20},
716-
{suite.basicQueryTime + 2*tsdbtest.MinuteInMillis, 30},
717-
{suite.basicQueryTime + 3*tsdbtest.MinuteInMillis, 40}}
718-
diskioData := []tsdbtest.DataPoint{{suite.basicQueryTime, 10}}
719-
testParams := tsdbtest.NewTestParams(suite.T(),
720-
tsdbtest.TestOption{
721-
Key: tsdbtest.OptTimeSeries,
722-
Value: tsdbtest.TimeSeries{tsdbtest.Metric{
723-
Name: "cpu",
724-
Labels: labels,
725-
Data: cpuData},
726-
tsdbtest.Metric{
727-
Name: "diskio",
728-
Labels: labels,
729-
Data: diskioData},
730-
}})
731-
tsdbtest.InsertData(suite.T(), testParams)
732-
733-
querierV2, err := adapter.QuerierV2()
734-
if err != nil {
735-
suite.T().Fatalf("Failed to create querier v2, err: %v", err)
736-
}
737-
738-
params := &pquerier.SelectParams{Name: "cpu, tal", Functions: "max, avg",
739-
From: suite.basicQueryTime, To: suite.basicQueryTime + 4*tsdbtest.MinuteInMillis}
740-
_, err = querierV2.SelectDataFrame(params)
741-
suite.Error(err, "expected error but finished successfully")
742-
743-
}

pkg/pquerier/pqueriertest/dataframe_query_integration_test.go

+71
Original file line numberDiff line numberDiff line change
@@ -711,3 +711,74 @@ func (suite *testSelectDataframeSuite) TestColumnOrder() {
711711

712712
suite.Require().Equal(1, seriesCount, "series count didn't match expected")
713713
}
714+
715+
func (suite *testSelectDataframeSuite) TestQueryNonExistingMetric() {
716+
adapter, err := tsdb.NewV3ioAdapter(suite.v3ioConfig, nil, nil)
717+
if err != nil {
718+
suite.T().Fatalf("failed to create v3io adapter. reason: %s", err)
719+
}
720+
721+
labels := utils.LabelsFromStringList("os", "linux")
722+
cpuData := []tsdbtest.DataPoint{{suite.basicQueryTime, 10},
723+
{int64(suite.basicQueryTime + tsdbtest.MinuteInMillis), 20},
724+
{suite.basicQueryTime + 2*tsdbtest.MinuteInMillis, 30},
725+
{suite.basicQueryTime + 3*tsdbtest.MinuteInMillis, 40}}
726+
testParams := tsdbtest.NewTestParams(suite.T(),
727+
tsdbtest.TestOption{
728+
Key: tsdbtest.OptTimeSeries,
729+
Value: tsdbtest.TimeSeries{tsdbtest.Metric{
730+
Name: "cpu",
731+
Labels: labels,
732+
Data: cpuData},
733+
}})
734+
tsdbtest.InsertData(suite.T(), testParams)
735+
736+
querierV2, err := adapter.QuerierV2()
737+
if err != nil {
738+
suite.T().Fatalf("Failed to create querier v2, err: %v", err)
739+
}
740+
741+
params := &pquerier.SelectParams{Name: "cpu, tal",
742+
From: suite.basicQueryTime, To: suite.basicQueryTime + 4*tsdbtest.MinuteInMillis}
743+
iter, err := querierV2.SelectDataFrame(params)
744+
suite.Require().NoError(err)
745+
746+
expectedData := map[string][]tsdbtest.DataPoint{
747+
"cpu": {{suite.basicQueryTime, 10},
748+
{int64(suite.basicQueryTime + tsdbtest.MinuteInMillis), 20},
749+
{suite.basicQueryTime + 2*tsdbtest.MinuteInMillis, 30},
750+
{suite.basicQueryTime + 3*tsdbtest.MinuteInMillis, 40}},
751+
"tal": {{suite.basicQueryTime, math.NaN()},
752+
{int64(suite.basicQueryTime + tsdbtest.MinuteInMillis), math.NaN()},
753+
{suite.basicQueryTime + 2*tsdbtest.MinuteInMillis, math.NaN()},
754+
{suite.basicQueryTime + 3*tsdbtest.MinuteInMillis, math.NaN()}}}
755+
756+
var seriesCount int
757+
for iter.NextFrame() {
758+
seriesCount++
759+
frame, err := iter.GetFrame()
760+
suite.NoError(err)
761+
762+
indexCol := frame.Indices()[0]
763+
assert.Equal(suite.T(), 4, indexCol.Len())
764+
for i := 0; i < indexCol.Len(); i++ {
765+
t, err := indexCol.TimeAt(i)
766+
assert.NoError(suite.T(), err)
767+
suite.Require().Equal(expectedData["cpu"][i].Time, t.UnixNano()/int64(time.Millisecond))
768+
769+
for _, colName := range frame.Names() {
770+
col, err := frame.Column(colName)
771+
suite.NoError(err)
772+
currentExpectedData := expectedData[col.Name()]
773+
suite.Require().Equal(len(currentExpectedData), col.Len())
774+
currentExpected := currentExpectedData[i].Value
775+
f, err := col.FloatAt(i)
776+
assert.NoError(suite.T(), err)
777+
778+
if !(math.IsNaN(currentExpected) && math.IsNaN(f)) {
779+
suite.Require().Equal(currentExpected, f)
780+
}
781+
}
782+
}
783+
}
784+
}

pkg/pquerier/pqueriertest/raw_query_integration_test.go

+59-37
Original file line numberDiff line numberDiff line change
@@ -633,43 +633,6 @@ func (suite *testRawQuerySuite) TestDifferentMetricsInDifferentPartitions() {
633633
assert.Equal(suite.T(), 1, seriesCount, "series count didn't match expected")
634634
}
635635

636-
func (suite *testRawQuerySuite) TestQueryNonExistingMetric() {
637-
adapter, err := tsdb.NewV3ioAdapter(suite.v3ioConfig, nil, nil)
638-
if err != nil {
639-
suite.T().Fatalf("failed to create v3io adapter. reason: %s", err)
640-
}
641-
642-
labels := utils.LabelsFromStringList("os", "linux")
643-
cpuData := []tsdbtest.DataPoint{{suite.basicQueryTime, 10},
644-
{int64(suite.basicQueryTime + tsdbtest.MinuteInMillis), 20},
645-
{suite.basicQueryTime + 2*tsdbtest.MinuteInMillis, 30},
646-
{suite.basicQueryTime + 3*tsdbtest.MinuteInMillis, 40}}
647-
diskioData := []tsdbtest.DataPoint{{suite.basicQueryTime, 10}}
648-
testParams := tsdbtest.NewTestParams(suite.T(),
649-
tsdbtest.TestOption{
650-
Key: tsdbtest.OptTimeSeries,
651-
Value: tsdbtest.TimeSeries{tsdbtest.Metric{
652-
Name: "cpu",
653-
Labels: labels,
654-
Data: cpuData},
655-
tsdbtest.Metric{
656-
Name: "diskio",
657-
Labels: labels,
658-
Data: diskioData},
659-
}})
660-
tsdbtest.InsertData(suite.T(), testParams)
661-
662-
querierV2, err := adapter.QuerierV2()
663-
if err != nil {
664-
suite.T().Fatalf("Failed to create querier v2, err: %v", err)
665-
}
666-
667-
params := &pquerier.SelectParams{Name: "cpu, tal", From: suite.basicQueryTime, To: suite.basicQueryTime + 4*tsdbtest.MinuteInMillis}
668-
_, err = querierV2.SelectDataFrame(params)
669-
suite.Error(err, "expected error but finished successfully")
670-
671-
}
672-
673636
func (suite *testRawQuerySuite) TestQueryMetricDoesNotHaveData() {
674637
adapter, err := tsdb.NewV3ioAdapter(suite.v3ioConfig, nil, nil)
675638
if err != nil {
@@ -782,3 +745,62 @@ func (suite *testRawQuerySuite) TestQueryMultiMetricsInconsistentLabels() {
782745
suite.NotNil(iter.At(), "Iterator yielded a nil series")
783746
}
784747
}
748+
749+
func (suite *testRawQuerySuite) TestLoadPartitionsFromAttributes() {
750+
suite.v3ioConfig.LoadPartitionsFromSchemaAttr = true
751+
defer func() { suite.v3ioConfig.LoadPartitionsFromSchemaAttr = false }()
752+
753+
adapter, err := tsdb.NewV3ioAdapter(suite.v3ioConfig, nil, nil)
754+
if err != nil {
755+
suite.T().Fatalf("failed to create v3io adapter. reason: %s", err)
756+
}
757+
758+
labels1 := utils.LabelsFromStringList("os", "linux")
759+
labels2 := utils.LabelsFromStringList("os", "mac")
760+
numberOfEvents := 5
761+
eventsInterval := int64(tsdbtest.MinuteInMillis)
762+
expectedData := []tsdbtest.DataPoint{{suite.basicQueryTime - 7*tsdbtest.DaysInMillis, 10},
763+
{int64(suite.basicQueryTime + tsdbtest.MinuteInMillis), 20},
764+
{suite.basicQueryTime + 2*eventsInterval, 30},
765+
{suite.basicQueryTime + 3*eventsInterval, 40}}
766+
767+
testParams := tsdbtest.NewTestParams(suite.T(),
768+
tsdbtest.TestOption{
769+
Key: tsdbtest.OptTimeSeries,
770+
Value: tsdbtest.TimeSeries{tsdbtest.Metric{
771+
Name: "cpu",
772+
Labels: labels1,
773+
Data: expectedData},
774+
tsdbtest.Metric{
775+
Name: "cpu",
776+
Labels: labels2,
777+
Data: expectedData},
778+
}})
779+
780+
tsdbtest.InsertData(suite.T(), testParams)
781+
782+
querierV2, err := adapter.QuerierV2()
783+
if err != nil {
784+
suite.T().Fatalf("Failed to create querier v2, err: %v", err)
785+
}
786+
787+
params := &pquerier.SelectParams{Name: "cpu", From: suite.basicQueryTime - 8*tsdbtest.DaysInMillis, To: suite.basicQueryTime + int64(numberOfEvents)*eventsInterval}
788+
set, err := querierV2.Select(params)
789+
if err != nil {
790+
suite.T().Fatalf("Failed to exeute query, err: %v", err)
791+
}
792+
793+
var seriesCount int
794+
for set.Next() {
795+
seriesCount++
796+
iter := set.At().Iterator()
797+
data, err := tsdbtest.IteratorToSlice(iter)
798+
if err != nil {
799+
suite.T().Fatal(err)
800+
}
801+
802+
assert.Equal(suite.T(), expectedData, data, "queried data does not match expected")
803+
}
804+
805+
assert.Equal(suite.T(), 2, seriesCount, "series count didn't match expected")
806+
}

pkg/pquerier/querier.go

-19
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,6 @@ func (q *V3ioQuerier) baseSelectQry(params *SelectParams, showAggregateLabel boo
183183
return
184184
}
185185

186-
var existingMetrics map[string]bool
187-
existingMetrics, err = q.getExistingMetricNamesMap()
188-
if err != nil {
189-
return
190-
}
191-
selectContext.existingMetrics = existingMetrics
192-
193186
minExistingTime, maxExistingTime := parts[0].GetStartTime(), parts[len(parts)-1].GetEndTime()
194187
if params.From < minExistingTime {
195188
params.From = minExistingTime
@@ -205,18 +198,6 @@ func (q *V3ioQuerier) baseSelectQry(params *SelectParams, showAggregateLabel boo
205198
return
206199
}
207200

208-
func (q *V3ioQuerier) getExistingMetricNamesMap() (map[string]bool, error) {
209-
metrics, err := q.getMetricNames()
210-
if err != nil {
211-
return nil, errors.Wrap(err, "failed to fetch existing metrics")
212-
}
213-
existingMetrics := make(map[string]bool, len(metrics))
214-
for _, metric := range metrics {
215-
existingMetrics[metric] = true
216-
}
217-
return existingMetrics, nil
218-
}
219-
220201
func isPowerOfTwo(x int) bool {
221202
return (x != 0) && ((x & (x - 1)) == 0)
222203
}

pkg/pquerier/select.go

-6
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ type selectQueryContext struct {
4444
requestChannels []chan *qryResults
4545
errorChannel chan error
4646
wg sync.WaitGroup
47-
48-
existingMetrics map[string]bool
4947
}
5048

5149
func (queryCtx *selectQueryContext) start(parts []*partmgr.DBPartition, params *SelectParams) (*frameIterator, error) {
@@ -376,10 +374,6 @@ func (queryCtx *selectQueryContext) createColumnSpecs() ([]columnMeta, map[strin
376374
}
377375

378376
for i, col := range requestedColumns {
379-
if col.Metric != "" && !queryCtx.existingMetrics[col.Metric] {
380-
return nil, nil, fmt.Errorf("metric '%v' does not exist", col.Metric)
381-
}
382-
383377
_, ok := columnsSpecByMetric[col.Metric]
384378
if !ok {
385379
columnsSpecByMetric[col.Metric] = []columnMeta{}

pkg/pquerier/selectQueryContext_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func TestCreateColumnSpecs(t *testing.T) {
114114
}
115115
for _, test := range testCases {
116116
t.Run(test.desc, func(t *testing.T) {
117-
ctx := selectQueryContext{existingMetrics: map[string]bool{"cpu": true, "diskio": true, "disk": true}}
117+
ctx := selectQueryContext{}
118118
ctx.queryParams = &test.params
119119
columnsSpec, columnsSpecByMetric, err := ctx.createColumnSpecs()
120120

@@ -151,7 +151,7 @@ func TestNegativeCreateColumnSpecs(t *testing.T) {
151151
}
152152
for _, test := range testCases {
153153
t.Run(test.desc, func(t *testing.T) {
154-
ctx := selectQueryContext{existingMetrics: map[string]bool{"cpu": true, "diskio": true}}
154+
ctx := selectQueryContext{}
155155
ctx.queryParams = &test.params
156156
_, _, err := ctx.createColumnSpecs()
157157

0 commit comments

Comments
 (0)