@@ -150,7 +150,7 @@ func TestOTLPIngestExemplar(t *testing.T) {
150150 c , err := e2ecortex .NewClient (cortex .HTTPEndpoint (), cortex .HTTPEndpoint (), "" , "" , "user-1" )
151151 require .NoError (t , err )
152152
153- res , err := c .OTLPPushExemplar ("exemplar_1" , pmetric .AggregationTemporalityCumulative )
153+ res , err := c .OTLPPushExemplar ("exemplar_1" , "" , pmetric .AggregationTemporalityCumulative )
154154 require .NoError (t , err )
155155 require .Equal (t , 200 , res .StatusCode )
156156
@@ -242,15 +242,15 @@ func TestOTLPPromoteResourceAttributesPerTenant(t *testing.T) {
242242 {Name : "attr3" , Value : "value" },
243243 }
244244
245- res , err := c1 .OTLPPushExemplar ("series_1" , pmetric .AggregationTemporalityCumulative , labels ... )
245+ res , err := c1 .OTLPPushExemplar ("series_1" , "" , pmetric .AggregationTemporalityCumulative , labels ... )
246246 require .NoError (t , err )
247247 require .Equal (t , 200 , res .StatusCode )
248248
249- res , err = c2 .OTLPPushExemplar ("series_1" , pmetric .AggregationTemporalityCumulative , labels ... )
249+ res , err = c2 .OTLPPushExemplar ("series_1" , "" , pmetric .AggregationTemporalityCumulative , labels ... )
250250 require .NoError (t , err )
251251 require .Equal (t , 200 , res .StatusCode )
252252
253- res , err = c3 .OTLPPushExemplar ("series_1" , pmetric .AggregationTemporalityCumulative , labels ... )
253+ res , err = c3 .OTLPPushExemplar ("series_1" , "" , pmetric .AggregationTemporalityCumulative , labels ... )
254254 require .NoError (t , err )
255255 require .Equal (t , 200 , res .StatusCode )
256256
@@ -267,6 +267,65 @@ func TestOTLPPromoteResourceAttributesPerTenant(t *testing.T) {
267267 require .Equal (t , labelSet3 , []string {"__name__" , "attr1" , "attr2" , "attr3" , "instance" , "job" })
268268}
269269
270+ func TestOTLPEnableTypeAndUnitLabels (t * testing.T ) {
271+ s , err := e2e .NewScenario (networkName )
272+ require .NoError (t , err )
273+ defer s .Close ()
274+
275+ // Start dependencies.
276+ minio := e2edb .NewMinio (9000 , bucketName )
277+ require .NoError (t , s .StartAndWaitReady (minio ))
278+
279+ // Configure the blocks storage to frequently compact TSDB head
280+ // and ship blocks to the storage.
281+ flags := mergeFlags (BlocksStorageFlags (), map [string ]string {
282+ "-auth.enabled" : "true" ,
283+
284+ // OTLP
285+ "-distributor.otlp.enable-type-and-unit-labels" : "true" ,
286+
287+ // alert manager
288+ "-alertmanager.web.external-url" : "http://localhost/alertmanager" ,
289+ "-alertmanager-storage.backend" : "local" ,
290+ "-alertmanager-storage.local.path" : filepath .Join (e2e .ContainerSharedDir , "alertmanager_configs" ),
291+ })
292+
293+ // make alert manager config dir
294+ require .NoError (t , writeFileToSharedDir (s , "alertmanager_configs" , []byte {}))
295+
296+ require .NoError (t , copyFileToSharedDir (s , "docs/configuration/single-process-config-blocks-local.yaml" , cortexConfigFile ))
297+
298+ // start cortex and assert runtime-config is loaded correctly
299+ cortex := e2ecortex .NewSingleBinaryWithConfigFile ("cortex" , cortexConfigFile , flags , "" , 9009 , 9095 )
300+ require .NoError (t , s .StartAndWaitReady (cortex ))
301+
302+ c , err := e2ecortex .NewClient (cortex .HTTPEndpoint (), cortex .HTTPEndpoint (), "" , "" , "user-1" )
303+ require .NoError (t , err )
304+
305+ // Push some series to Cortex.
306+ now := time .Now ()
307+
308+ labels := []prompb.Label {
309+ {Name : "service.name" , Value : "test-service" },
310+ {Name : "attr1" , Value : "value" },
311+ }
312+
313+ res , err := c .OTLPPushExemplar ("series_1" , "seconds" , pmetric .AggregationTemporalityCumulative , labels ... )
314+ require .NoError (t , err )
315+ require .Equal (t , 200 , res .StatusCode )
316+
317+ value , err := c .Query ("series_1_seconds" , now )
318+ require .NoError (t , err )
319+ vector , ok := value .(model.Vector )
320+ fmt .Println ("vector" , vector )
321+ require .True (t , ok )
322+ require .Equal (t , 1 , len (vector ))
323+
324+ metric := vector [0 ].Metric
325+ require .Equal (t , model .LabelValue ("seconds" ), metric ["__unit__" ])
326+ require .Equal (t , model .LabelValue ("gauge" ), metric ["__type__" ])
327+ }
328+
270329func TestOTLPPushDeltaTemporality (t * testing.T ) {
271330 s , err := e2e .NewScenario (networkName )
272331 require .NoError (t , err )
@@ -310,7 +369,7 @@ func TestOTLPPushDeltaTemporality(t *testing.T) {
310369 {Name : "attr1" , Value : "value" },
311370 }
312371
313- res , err := c .OTLPPushExemplar ("series_1" , pmetric .AggregationTemporalityDelta , labels ... )
372+ res , err := c .OTLPPushExemplar ("series_1" , "" , pmetric .AggregationTemporalityDelta , labels ... )
314373 require .NoError (t , err )
315374 require .Equal (t , 200 , res .StatusCode )
316375
0 commit comments