From 81e049b5205a382e72eb2bfabf7cad9e99d0f029 Mon Sep 17 00:00:00 2001 From: Jesus Vazquez Date: Fri, 26 Jul 2024 19:21:06 +0200 Subject: [PATCH] Failing test to be fixed once metadata is written somewhere else --- tsdb/metadata.go | 1 + tsdb/metadata_test.go | 63 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 tsdb/metadata.go create mode 100644 tsdb/metadata_test.go diff --git a/tsdb/metadata.go b/tsdb/metadata.go new file mode 100644 index 0000000000..35178ff493 --- /dev/null +++ b/tsdb/metadata.go @@ -0,0 +1 @@ +package tsdb diff --git a/tsdb/metadata_test.go b/tsdb/metadata_test.go new file mode 100644 index 0000000000..3a47d19a98 --- /dev/null +++ b/tsdb/metadata_test.go @@ -0,0 +1,63 @@ +package tsdb + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/prometheus/prometheus/model/labels" + "github.com/prometheus/prometheus/tsdb/chunks" +) + +func TestDBAppenderSeriesWithMetadata(t *testing.T) { + db := openTestDB(t, nil, nil) + defer func() { + require.NoError(t, db.Close()) + }() + + ctx := context.Background() + app1 := db.Appender(ctx) + + // Add a sample with metadata. + _, err := app1.Append(0, labels.FromStrings( + "__name__", "http_requests_total", + "job", "ingester", + "metadata.foo.service", "ingester", + "metadata.foo.request_type", "outbound", + "metadata.node.ip", "192.168.1.1", + ), 0, 0) + require.NoError(t, err) + + // Add a sample with the same metadata but different value. + _, err = app1.Append(0, labels.FromStrings( + "__name__", "http_requests_total", + "job", "ingester", + "metadata.foo.service", "ingester", + "metadata.foo.request_type", "outbound", + "metadata.node.ip", "192.168.1.2", + ), 1, 1) + require.NoError(t, err) + + err = app1.Commit() + require.NoError(t, err) + + q, err := db.Querier(0, 200) + require.NoError(t, err) + + res := query(t, q, labels.MustNewMatcher(labels.MatchEqual, "__name__", "http_requests_total")) + + // TODO(jesusvazquez) There should be a single series http_requests_total{job="ingester"} with two samples since the metadata does not form part of the series. + require.Equal(t, map[string][]chunks.Sample{ + labels.FromStrings( + "__name__", "http_requests_total", + "job", "ingester", + ).String(): { + sample{t: 0, f: 0}, + sample{t: 1, f: 1}, + }, + }, res) + + // TODO(jesusvazquez) Add a test to verify that the metadata is stored in the metadata store. + // TODO(jesusvazquez) Add a test to make sure metadata changes between timestamps. +}