Skip to content

Commit b29e543

Browse files
committed
Add e2e test
Signed-off-by: SungJin1212 <tjdwls1201@gmail.com>
1 parent 28a3145 commit b29e543

File tree

2 files changed

+76
-1
lines changed

2 files changed

+76
-1
lines changed

integration/e2e/util.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,18 +465,22 @@ func GenerateSeriesV2(name string, ts time.Time, additionalLabels ...prompb.Labe
465465
st := writev2.NewSymbolTable()
466466
lb := labels.NewScratchBuilder(0)
467467
lb.Add("__name__", name)
468+
lb.Add("help", "unit")
468469

469470
for _, label := range additionalLabels {
470471
lb.Add(label.Name, label.Value)
471472
}
473+
472474
series = append(series, writev2.TimeSeries{
473475
// Generate the series
474476
LabelsRefs: st.SymbolizeLabels(lb.Labels(), nil),
475477
Samples: []writev2.Sample{
476478
{Value: value, Timestamp: tsMillis},
477479
},
478480
Metadata: writev2.Metadata{
479-
Type: writev2.Metadata_METRIC_TYPE_GAUGE,
481+
Type: writev2.Metadata_METRIC_TYPE_GAUGE,
482+
HelpRef: 3,
483+
UnitRef: 4,
480484
},
481485
})
482486
symbols = st.Symbols()

integration/remote_write_v2_test.go

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
208279
func TestIngest(t *testing.T) {
209280
const blockRangePeriod = 5 * time.Second
210281

0 commit comments

Comments
 (0)