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

Function TestAlertmanagerClustering

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

Source from the content-addressed store, hash-verified

174}
175
176func TestAlertmanagerClustering(t *testing.T) {
177 s, err := e2e.NewScenario(networkName)
178 require.NoError(t, err)
179 defer s.Close()
180
181 flags := mergeFlags(AlertmanagerFlags(), AlertmanagerS3Flags())
182
183 // Start dependencies.
184 minio := e2edb.NewMinio(9000, alertsBucketName)
185 require.NoError(t, s.StartAndWaitReady(minio))
186
187 client, err := s3.NewBucketWithConfig(nil, s3.Config{
188 Endpoint: minio.HTTPEndpoint(),
189 Insecure: true,
190 Bucket: alertsBucketName,
191 AccessKey: e2edb.MinioAccessKey,
192 SecretKey: e2edb.MinioSecretKey,
193 }, "alertmanager-test", nil)
194 require.NoError(t, err)
195
196 // Create and upload an Alertmanager configuration.
197 user := "user-1"
198 desc := alertspb.AlertConfigDesc{RawConfig: simpleAlertmanagerConfig, User: user, Templates: []*alertspb.TemplateDesc{}}
199
200 d, err := desc.Marshal()
201 require.NoError(t, err)
202 err = client.Upload(context.Background(), fmt.Sprintf("/alerts/%s", user), bytes.NewReader(d))
203 require.NoError(t, err)
204
205 peers := strings.Join([]string{
206 e2e.NetworkContainerHostPort(networkName, "alertmanager-1", e2ecortex.GossipPort),
207 e2e.NetworkContainerHostPort(networkName, "alertmanager-2", e2ecortex.GossipPort),
208 }, ",")
209 flags = mergeFlags(flags, AlertmanagerClusterFlags(peers))
210
211 // Wait for the Alertmanagers to start.
212 alertmanager1 := e2ecortex.NewAlertmanager("alertmanager-1", flags, "")
213 alertmanager2 := e2ecortex.NewAlertmanager("alertmanager-2", flags, "")
214
215 alertmanagers := e2ecortex.NewCompositeCortexService(alertmanager1, alertmanager2)
216
217 // Start Alertmanager instances.
218 for _, am := range alertmanagers.Instances() {
219 require.NoError(t, s.StartAndWaitReady(am))
220 }
221
222 for _, am := range alertmanagers.Instances() {
223 require.NoError(t, am.WaitSumMetrics(e2e.Equals(float64(0)), "alertmanager_cluster_health_score")) // Lower means healthier, 0 being totally healthy.
224 require.NoError(t, am.WaitSumMetrics(e2e.Equals(float64(0)), "alertmanager_cluster_failed_peers"))
225 require.NoError(t, am.WaitSumMetrics(e2e.Equals(float64(2)), "alertmanager_cluster_members"))
226 }
227}
228
229func TestAlertmanagerSharding(t *testing.T) {
230 tests := map[string]struct {

Callers

nothing calls this directly

Calls 13

CloseMethod · 0.95
StartAndWaitReadyMethod · 0.95
MarshalMethod · 0.95
NewScenarioFunction · 0.92
NetworkContainerHostPortFunction · 0.92
NewAlertmanagerFunction · 0.92
EqualsFunction · 0.92
HTTPEndpointMethod · 0.80
JoinMethod · 0.80
InstancesMethod · 0.80
UploadMethod · 0.45

Tested by

no test coverage detected