MCPcopy
hub / github.com/prometheus/prometheus / TestSampleDelivery

Function TestSampleDelivery

storage/remote/queue_manager_test.go:197–297  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

195}
196
197func TestSampleDelivery(t *testing.T) {
198 t.Parallel()
199 n := 3
200
201 queueConfig := config.DefaultQueueConfig
202 queueConfig.BatchSendDeadline = model.Duration(100 * time.Millisecond)
203 queueConfig.MaxShards = 1
204
205 // We need to set URL's so that metric creation doesn't panic.
206 writeConfig := baseRemoteWriteConfig("http://test-storage.com")
207 writeConfig.QueueConfig = queueConfig
208 writeConfig.SendExemplars = true
209 writeConfig.SendNativeHistograms = true
210
211 conf := &config.Config{
212 GlobalConfig: config.DefaultGlobalConfig,
213 RemoteWriteConfigs: []*config.RemoteWriteConfig{
214 writeConfig,
215 },
216 }
217
218 for _, protoMsg := range []remoteapi.WriteMessageType{remoteapi.WriteV1MessageType, remoteapi.WriteV2MessageType} {
219 for _, rc := range []recCase{
220 {Series: n, SamplesPerSeries: n, HistogramsPerSeries: 0, FloatHistogramsPerSeries: 0, ExemplarsPerSeries: 0, Name: "samples only"},
221 {Series: n, SamplesPerSeries: 0, HistogramsPerSeries: n, FloatHistogramsPerSeries: 0, ExemplarsPerSeries: 0, Name: "histograms only"},
222 {Series: n, SamplesPerSeries: 0, HistogramsPerSeries: 0, FloatHistogramsPerSeries: n, ExemplarsPerSeries: 0, Name: "float histograms only"},
223 {Series: n, SamplesPerSeries: 0, HistogramsPerSeries: 0, FloatHistogramsPerSeries: 0, ExemplarsPerSeries: n, Name: "exemplars only"},
224 {Series: n, SamplesPerSeries: n, HistogramsPerSeries: n, FloatHistogramsPerSeries: n, ExemplarsPerSeries: n, Name: "all"},
225 } {
226 t.Run(fmt.Sprintf("proto=%s/case=%s", protoMsg, rc.Name), func(t *testing.T) {
227 dir := t.TempDir()
228 s := NewStorage(nil, nil, nil, dir, defaultFlushDeadline, nil, false)
229 defer s.Close()
230
231 rc.NoST = protoMsg == remoteapi.WriteV1MessageType // RW1 does not support ST.
232 recs := testwal.GenerateRecords(rc)
233
234 var (
235 series = recs.Series
236 metadata = recs.Metadata
237 samples = recs.Samples
238 exemplars = recs.Exemplars
239 histograms = recs.Histograms
240 floatHistograms = recs.FloatHistograms
241 )
242
243 // Apply new config.
244 queueConfig.Capacity = n
245 queueConfig.MaxSamplesPerSend = n / 2
246 conf.RemoteWriteConfigs[0].ProtobufMessage = protoMsg
247 require.NoError(t, s.ApplyConfig(conf))
248 hash, err := toHash(writeConfig)
249 require.NoError(t, err)
250 qm := s.rws.queues[hash]
251
252 c := NewTestWriteClient(protoMsg)
253 c.SetStoreWait(10 * time.Millisecond)
254 qm.SetClient(c)

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
ApplyConfigMethod · 0.95
SetStoreWaitMethod · 0.95
expectSamplesMethod · 0.95
expectExemplarsMethod · 0.95
expectHistogramsMethod · 0.95
expectFloatHistogramsMethod · 0.95
waitForExpectedDataMethod · 0.95
GenerateRecordsFunction · 0.92
baseRemoteWriteConfigFunction · 0.85
NewStorageFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…