Skip to content

Commit 767dba0

Browse files
committed
Add e2e test
Signed-off-by: SungJin1212 <[email protected]>
1 parent f12d297 commit 767dba0

File tree

2 files changed

+68
-8
lines changed

2 files changed

+68
-8
lines changed

integration/e2ecortex/client.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ func convertTimeseriesToMetrics(timeseries []prompb.TimeSeries, metadata []promp
270270
return metrics
271271
}
272272

273-
func otlpWriteRequest(name string, temporality pmetric.AggregationTemporality, labels ...prompb.Label) pmetricotlp.ExportRequest {
273+
func otlpWriteRequest(name, unit string, temporality pmetric.AggregationTemporality, labels ...prompb.Label) pmetricotlp.ExportRequest {
274274
d := pmetric.NewMetrics()
275275

276276
// Generate One Counter, One Gauge, One Histogram, One Exponential-Histogram
@@ -292,6 +292,7 @@ func otlpWriteRequest(name string, temporality pmetric.AggregationTemporality, l
292292
// Generate One Counter
293293
counterMetric := scopeMetric.Metrics().AppendEmpty()
294294
counterMetric.SetName(name)
295+
counterMetric.SetUnit(unit)
295296
counterMetric.SetDescription("test-counter-description")
296297

297298
counterMetric.SetEmptySum()
@@ -310,8 +311,8 @@ func otlpWriteRequest(name string, temporality pmetric.AggregationTemporality, l
310311
return pmetricotlp.NewExportRequestFromMetrics(d)
311312
}
312313

313-
func (c *Client) OTLPPushExemplar(name string, temporality pmetric.AggregationTemporality, labels ...prompb.Label) (*http.Response, error) {
314-
data, err := otlpWriteRequest(name, temporality, labels...).MarshalProto()
314+
func (c *Client) OTLPPushExemplar(name, unit string, temporality pmetric.AggregationTemporality, labels ...prompb.Label) (*http.Response, error) {
315+
data, err := otlpWriteRequest(name, unit, temporality, labels...).MarshalProto()
315316
if err != nil {
316317
return nil, err
317318
}

integration/otlp_test.go

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
270329
func 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

Comments
 (0)