@@ -1541,87 +1541,8 @@ func TestBucketSeries_OneBlock_InMemIndexCacheSegfault(t *testing.T) {
1541
1541
}
1542
1542
1543
1543
func TestSeries_RequestAndResponseHints (t * testing.T ) {
1544
- tb := testutil .NewTB (t )
1545
-
1546
- tmpDir , err := ioutil .TempDir ("" , "test-series-hints-enabled" )
1547
- testutil .Ok (t , err )
1548
- defer func () { testutil .Ok (t , os .RemoveAll (tmpDir )) }()
1549
-
1550
- bktDir := filepath .Join (tmpDir , "bkt" )
1551
- bkt , err := filesystem .NewBucket (bktDir )
1552
- testutil .Ok (t , err )
1553
- defer func () { testutil .Ok (t , bkt .Close ()) }()
1554
-
1555
- var (
1556
- logger = log .NewNopLogger ()
1557
- instrBkt = objstore .WithNoopInstr (bkt )
1558
- random = rand .New (rand .NewSource (120 ))
1559
- )
1560
-
1561
- extLset := labels.Labels {{Name : "ext1" , Value : "1" }}
1562
- // Inject the Thanos meta to each block in the storage.
1563
- thanosMeta := metadata.Thanos {
1564
- Labels : extLset .Map (),
1565
- Downsample : metadata.ThanosDownsample {Resolution : 0 },
1566
- Source : metadata .TestSource ,
1567
- }
1568
-
1569
- // Create TSDB blocks.
1570
- head , seriesSet1 := storetestutil .CreateHeadWithSeries (t , 0 , storetestutil.HeadGenOptions {
1571
- TSDBDir : filepath .Join (tmpDir , "0" ),
1572
- SamplesPerSeries : 1 ,
1573
- Series : 2 ,
1574
- PrependLabels : extLset ,
1575
- Random : random ,
1576
- })
1577
- block1 := createBlockFromHead (t , bktDir , head )
1578
- testutil .Ok (t , head .Close ())
1579
- head2 , seriesSet2 := storetestutil .CreateHeadWithSeries (t , 1 , storetestutil.HeadGenOptions {
1580
- TSDBDir : filepath .Join (tmpDir , "1" ),
1581
- SamplesPerSeries : 1 ,
1582
- Series : 2 ,
1583
- PrependLabels : extLset ,
1584
- Random : random ,
1585
- })
1586
- block2 := createBlockFromHead (t , bktDir , head2 )
1587
- testutil .Ok (t , head2 .Close ())
1588
-
1589
- for _ , blockID := range []ulid.ULID {block1 , block2 } {
1590
- _ , err := metadata .InjectThanos (logger , filepath .Join (bktDir , blockID .String ()), thanosMeta , nil )
1591
- testutil .Ok (t , err )
1592
- }
1593
-
1594
- // Instance a real bucket store we'll use to query back the series.
1595
- fetcher , err := block .NewMetaFetcher (logger , 10 , instrBkt , tmpDir , nil , nil , nil )
1596
- testutil .Ok (tb , err )
1597
-
1598
- indexCache , err := storecache .NewInMemoryIndexCacheWithConfig (logger , nil , storecache.InMemoryIndexCacheConfig {})
1599
- testutil .Ok (tb , err )
1600
-
1601
- store , err := NewBucketStore (
1602
- logger ,
1603
- nil ,
1604
- instrBkt ,
1605
- fetcher ,
1606
- tmpDir ,
1607
- indexCache ,
1608
- nil ,
1609
- 1000000 ,
1610
- NewChunksLimiterFactory (10000 / MaxSamplesPerChunk ),
1611
- false ,
1612
- 10 ,
1613
- nil ,
1614
- false ,
1615
- true ,
1616
- DefaultPostingOffsetInMemorySampling ,
1617
- true ,
1618
- false ,
1619
- 0 ,
1620
- )
1621
- testutil .Ok (tb , err )
1622
- defer func () { testutil .Ok (t , store .Close ()) }()
1623
-
1624
- testutil .Ok (tb , store .SyncBlocks (context .Background ()))
1544
+ tb , store , seriesSet1 , seriesSet2 , block1 , block2 , close := setupStoreForHintsTest (t )
1545
+ defer close ()
1625
1546
1626
1547
testCases := []* storetestutil.SeriesCase {
1627
1548
{
@@ -2051,17 +1972,19 @@ func createBlockWithOneSeriesWithStep(t testutil.TB, dir string, lbls labels.Lab
2051
1972
return createBlockFromHead (t , dir , h )
2052
1973
}
2053
1974
2054
- func TestLabelNamesAndValuesHints (t * testing.T ) {
1975
+ func setupStoreForHintsTest (t * testing.T ) (testutil. TB , * BucketStore , [] * storepb. Series , [] * storepb. Series , ulid. ULID , ulid. ULID , func () ) {
2055
1976
tb := testutil .NewTB (t )
2056
1977
2057
- tmpDir , err := ioutil .TempDir ("" , "test-labels-hints" )
1978
+ closers := []func (){}
1979
+
1980
+ tmpDir , err := ioutil .TempDir ("" , "test-hints" )
2058
1981
testutil .Ok (t , err )
2059
- defer func () { testutil .Ok (t , os .RemoveAll (tmpDir )) }( )
1982
+ closers = append ( closers , func () { testutil .Ok (t , os .RemoveAll (tmpDir )) })
2060
1983
2061
1984
bktDir := filepath .Join (tmpDir , "bkt" )
2062
1985
bkt , err := filesystem .NewBucket (bktDir )
2063
1986
testutil .Ok (t , err )
2064
- defer func () { testutil .Ok (t , bkt .Close ()) }( )
1987
+ closers = append ( closers , func () { testutil .Ok (t , bkt .Close ()) })
2065
1988
2066
1989
var (
2067
1990
logger = log .NewNopLogger ()
@@ -2126,10 +2049,25 @@ func TestLabelNamesAndValuesHints(t *testing.T) {
2126
2049
true ,
2127
2050
DefaultPostingOffsetInMemorySampling ,
2128
2051
true ,
2052
+ false ,
2053
+ 0 ,
2129
2054
)
2130
2055
testutil .Ok (tb , err )
2131
2056
testutil .Ok (tb , store .SyncBlocks (context .Background ()))
2132
2057
2058
+ closers = append (closers , func () { testutil .Ok (t , store .Close ()) })
2059
+
2060
+ return tb , store , seriesSet1 , seriesSet2 , block1 , block2 , func () {
2061
+ for _ , close := range closers {
2062
+ close ()
2063
+ }
2064
+ }
2065
+ }
2066
+
2067
+ func TestLabelNamesAndValuesHints (t * testing.T ) {
2068
+ _ , store , seriesSet1 , seriesSet2 , block1 , block2 , close := setupStoreForHintsTest (t )
2069
+ defer close ()
2070
+
2133
2071
type labelNamesValuesCase struct {
2134
2072
name string
2135
2073
@@ -2158,11 +2096,11 @@ func TestLabelNamesAndValuesHints(t *testing.T) {
2158
2096
},
2159
2097
2160
2098
labelValuesReq : & storepb.LabelValuesRequest {
2161
- Label : "__name__ " ,
2099
+ Label : "ext1 " ,
2162
2100
Start : 0 ,
2163
2101
End : 1 ,
2164
2102
},
2165
- expectedValues : []string {},
2103
+ expectedValues : []string {"1" },
2166
2104
expectedValuesHints : hintspb.LabelValuesResponseHints {
2167
2105
QueriedBlocks : []hintspb.Block {
2168
2106
{Id : block1 .String ()},
@@ -2187,11 +2125,11 @@ func TestLabelNamesAndValuesHints(t *testing.T) {
2187
2125
},
2188
2126
2189
2127
labelValuesReq : & storepb.LabelValuesRequest {
2190
- Label : "__name__ " ,
2128
+ Label : "ext1 " ,
2191
2129
Start : 0 ,
2192
2130
End : 3 ,
2193
2131
},
2194
- expectedValues : []string {},
2132
+ expectedValues : []string {"1" },
2195
2133
expectedValuesHints : hintspb.LabelValuesResponseHints {
2196
2134
QueriedBlocks : []hintspb.Block {
2197
2135
{Id : block1 .String ()},
@@ -2206,15 +2144,25 @@ func TestLabelNamesAndValuesHints(t *testing.T) {
2206
2144
namesResp , err := store .LabelNames (context .Background (), tc .labelNamesReq )
2207
2145
testutil .Ok (t , err )
2208
2146
testutil .Equals (t , tc .expectedNames , namesResp .Names )
2147
+
2209
2148
var namesHints hintspb.LabelNamesResponseHints
2210
2149
testutil .Ok (t , types .UnmarshalAny (namesResp .Hints , & namesHints ))
2150
+ // The order is not determinate, so we are sorting them.
2151
+ sort .Slice (namesHints .QueriedBlocks , func (i , j int ) bool {
2152
+ return namesHints .QueriedBlocks [i ].Id < namesHints .QueriedBlocks [j ].Id
2153
+ })
2211
2154
testutil .Equals (t , tc .expectedNamesHints , namesHints )
2212
2155
2213
2156
valuesResp , err := store .LabelValues (context .Background (), tc .labelValuesReq )
2214
2157
testutil .Ok (t , err )
2215
2158
testutil .Equals (t , tc .expectedValues , valuesResp .Values )
2159
+
2216
2160
var valuesHints hintspb.LabelValuesResponseHints
2217
2161
testutil .Ok (t , types .UnmarshalAny (valuesResp .Hints , & valuesHints ))
2162
+ // The order is not determinate, so we are sorting them.
2163
+ sort .Slice (valuesHints .QueriedBlocks , func (i , j int ) bool {
2164
+ return valuesHints .QueriedBlocks [i ].Id < valuesHints .QueriedBlocks [j ].Id
2165
+ })
2218
2166
testutil .Equals (t , tc .expectedValuesHints , valuesHints )
2219
2167
})
2220
2168
}
0 commit comments