MCPcopy Index your code
hub / github.com/cortexproject/cortex / TestAlertmanagerSharding

Function TestAlertmanagerSharding

integration/alertmanager_test.go:229–539  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

227}
228
229func TestAlertmanagerSharding(t *testing.T) {
230 tests := map[string]struct {
231 replicationFactor int
232 }{
233 "RF = 2": {replicationFactor: 2},
234 "RF = 3": {replicationFactor: 3},
235 }
236
237 for testName, testCfg := range tests {
238 t.Run(testName, func(t *testing.T) {
239 s, err := e2e.NewScenario(networkName)
240 require.NoError(t, err)
241 defer s.Close()
242
243 flags := mergeFlags(AlertmanagerFlags(), AlertmanagerS3Flags())
244
245 // Start dependencies.
246 consul := e2edb.NewConsul()
247 minio := e2edb.NewMinio(9000, alertsBucketName)
248 require.NoError(t, s.StartAndWaitReady(consul, minio))
249
250 client, err := s3.NewBucketWithConfig(nil, s3.Config{
251 Endpoint: minio.HTTPEndpoint(),
252 Insecure: true,
253 Bucket: alertsBucketName,
254 AccessKey: e2edb.MinioAccessKey,
255 SecretKey: e2edb.MinioSecretKey,
256 }, "alertmanager-test", nil)
257 require.NoError(t, err)
258
259 // Create and upload Alertmanager configurations.
260 for i := 1; i <= 30; i++ {
261 user := fmt.Sprintf("user-%d", i)
262 desc := alertspb.AlertConfigDesc{
263 RawConfig: simpleAlertmanagerConfig,
264 User: user,
265 Templates: []*alertspb.TemplateDesc{},
266 }
267
268 d, err := desc.Marshal()
269 require.NoError(t, err)
270 err = client.Upload(context.Background(), fmt.Sprintf("/alerts/%s", user), bytes.NewReader(d))
271 require.NoError(t, err)
272 }
273
274 // 3 instances, 30 configurations and a replication factor of 2 or 3.
275 flags = mergeFlags(flags, AlertmanagerShardingFlags(consul.NetworkHTTPEndpoint(), testCfg.replicationFactor))
276
277 // Wait for the Alertmanagers to start.
278 alertmanager1 := e2ecortex.NewAlertmanager("alertmanager-1", flags, "")
279 alertmanager2 := e2ecortex.NewAlertmanager("alertmanager-2", flags, "")
280 alertmanager3 := e2ecortex.NewAlertmanager("alertmanager-3", flags, "")
281
282 alertmanagers := e2ecortex.NewCompositeCortexService(alertmanager1, alertmanager2, alertmanager3)
283
284 // Start Alertmanager instances.
285 for _, am := range alertmanagers.Instances() {
286 require.NoError(t, s.StartAndWaitReady(am))

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
StartAndWaitReadyMethod · 0.95
MarshalMethod · 0.95
CreateSilenceMethod · 0.95
DeleteSilenceMethod · 0.95
NewScenarioFunction · 0.92
NewAlertmanagerFunction · 0.92
EqualsFunction · 0.92
WithLabelMatchersFunction · 0.92
NewClientFunction · 0.92

Tested by

no test coverage detected