(t *testing.T)
| 195 | } |
| 196 | |
| 197 | func 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) |
nothing calls this directly
no test coverage detected
searching dependent graphs…