@@ -205,6 +205,77 @@ func TestIngest_SenderSendPRW2_DistributorNotAllowPRW2(t *testing.T) {
205205 require .Empty (t , result )
206206}
207207
208+ func TestIngest_EnableTypeAndUnitLabels (t * testing.T ) {
209+ const blockRangePeriod = 5 * time .Second
210+
211+ s , err := e2e .NewScenario (networkName )
212+ require .NoError (t , err )
213+ defer s .Close ()
214+
215+ // Start dependencies.
216+ consul := e2edb .NewConsulWithName ("consul" )
217+ require .NoError (t , s .StartAndWaitReady (consul ))
218+
219+ flags := mergeFlags (
220+ AlertmanagerLocalFlags (),
221+ map [string ]string {
222+ "-store.engine" : blocksStorageEngine ,
223+ "-blocks-storage.backend" : "filesystem" ,
224+ "-blocks-storage.tsdb.head-compaction-interval" : "4m" ,
225+ "-blocks-storage.bucket-store.sync-interval" : "15m" ,
226+ "-blocks-storage.bucket-store.index-cache.backend" : tsdb .IndexCacheBackendInMemory ,
227+ "-blocks-storage.bucket-store.bucket-index.enabled" : "true" ,
228+ "-querier.query-store-for-labels-enabled" : "true" ,
229+ "-blocks-storage.tsdb.block-ranges-period" : blockRangePeriod .String (),
230+ "-blocks-storage.tsdb.ship-interval" : "1s" ,
231+ "-blocks-storage.tsdb.retention-period" : ((blockRangePeriod * 2 ) - 1 ).String (),
232+ "-blocks-storage.tsdb.enable-native-histograms" : "true" ,
233+ // Ingester.
234+ "-ring.store" : "consul" ,
235+ "-consul.hostname" : consul .NetworkHTTPEndpoint (),
236+ // Distributor.
237+ "-distributor.replication-factor" : "1" ,
238+ "-distributor.remote-writev2-enabled" : "true" ,
239+ "-distributor.rw2-enable-type-and-unit-labels" : "true" ,
240+ // Store-gateway.
241+ "-store-gateway.sharding-enabled" : "false" ,
242+ // alert manager
243+ "-alertmanager.web.external-url" : "http://localhost/alertmanager" ,
244+ },
245+ )
246+
247+ // make alert manager config dir
248+ require .NoError (t , writeFileToSharedDir (s , "alertmanager_configs" , []byte {}))
249+
250+ path := path .Join (s .SharedDir (), "cortex-1" )
251+
252+ flags = mergeFlags (flags , map [string ]string {"-blocks-storage.filesystem.dir" : path })
253+ // Start Cortex replicas.
254+ cortex := e2ecortex .NewSingleBinary ("cortex" , flags , "" )
255+ require .NoError (t , s .StartAndWaitReady (cortex ))
256+
257+ // Wait until Cortex replicas have updated the ring state.
258+ require .NoError (t , cortex .WaitSumMetrics (e2e .Equals (float64 (512 )), "cortex_ring_tokens_total" ))
259+
260+ c , err := e2ecortex .NewClient (cortex .HTTPEndpoint (), cortex .HTTPEndpoint (), "" , "" , "user-1" )
261+ require .NoError (t , err )
262+
263+ now := time .Now ()
264+
265+ // series push
266+ symbols1 , series , _ := e2e .GenerateSeriesV2 ("test_series" , now , prompb.Label {Name : "job" , Value : "test" }, prompb.Label {Name : "foo" , Value : "bar" })
267+ writeStats , err := c .PushV2 (symbols1 , series )
268+ require .NoError (t , err )
269+ testPushHeader (t , writeStats , 1 , 0 , 0 )
270+
271+ value , err := c .Query ("test_series" , now )
272+ require .NoError (t , err )
273+ require .Equal (t , model .ValVector , value .Type ())
274+ vec := value .(model.Vector )
275+ require .True (t , vec [0 ].Metric ["__unit__" ] != "" )
276+ require .True (t , vec [0 ].Metric ["__type__" ] != "" )
277+ }
278+
208279func TestIngest (t * testing.T ) {
209280 const blockRangePeriod = 5 * time .Second
210281
0 commit comments