MCPcopy
hub / github.com/grafana/dskit / TestUpdateMetricsWithRemoval

Function TestUpdateMetricsWithRemoval

ring/ring_test.go:4276–4371  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

4274}
4275
4276func TestUpdateMetricsWithRemoval(t *testing.T) {
4277 cfg := Config{
4278 KVStore: kv.Config{},
4279 HeartbeatTimeout: time.Hour, // long timeout to get healthy stats
4280 ReplicationFactor: 3,
4281 ZoneAwarenessEnabled: true,
4282 }
4283
4284 registry := prometheus.NewRegistry()
4285
4286 // create the ring to set up metrics, but do not start
4287 ring, err := NewWithStoreClientAndStrategy(cfg, testRingName, testRingKey, nil, NewDefaultReplicationStrategy(), registry, log.NewNopLogger())
4288 require.NoError(t, err)
4289
4290 now := time.Now().Unix()
4291 ringDesc := Desc{
4292 Ingesters: map[string]InstanceDesc{
4293 "A": {Addr: "127.0.0.1", Zone: "a", Timestamp: now - 11, Tokens: []uint32{math.MaxUint32 / 4, (math.MaxUint32 / 4) * 3}},
4294 "B": {Addr: "127.0.0.2", Zone: "b", Timestamp: now - 22, Tokens: []uint32{(math.MaxUint32 / 4) * 2, math.MaxUint32}},
4295 },
4296 }
4297 ring.updateRingState(&ringDesc)
4298
4299 err = testutil.GatherAndCompare(registry, bytes.NewBufferString(fmt.Sprintf(`
4300 # HELP ring_members Number of members in the ring
4301 # TYPE ring_members gauge
4302 ring_members{name="test",state="ACTIVE"} 2
4303 ring_members{name="test",state="JOINING"} 0
4304 ring_members{name="test",state="LEAVING"} 0
4305 ring_members{name="test",state="PENDING"} 0
4306 ring_members{name="test",state="Unhealthy"} 0
4307 # HELP ring_oldest_member_timestamp Timestamp of the oldest member in the ring.
4308 # TYPE ring_oldest_member_timestamp gauge
4309 ring_oldest_member_timestamp{name="test",state="ACTIVE"} %d
4310 ring_oldest_member_timestamp{name="test",state="JOINING"} 0
4311 ring_oldest_member_timestamp{name="test",state="LEAVING"} 0
4312 ring_oldest_member_timestamp{name="test",state="PENDING"} 0
4313 ring_oldest_member_timestamp{name="test",state="Unhealthy"} 0
4314 # HELP ring_tokens_total Number of tokens in the ring
4315 # TYPE ring_tokens_total gauge
4316 ring_tokens_total{name="test"} 4
4317 # HELP ring_zone_members Number of ring members for each zone/state pair
4318 # TYPE ring_zone_members gauge
4319 ring_zone_members{name="test",state="ACTIVE",zone="a"} 1
4320 ring_zone_members{name="test",state="ACTIVE",zone="b"} 1
4321 ring_zone_members{name="test",state="JOINING",zone="a"} 0
4322 ring_zone_members{name="test",state="JOINING",zone="b"} 0
4323 ring_zone_members{name="test",state="LEAVING",zone="a"} 0
4324 ring_zone_members{name="test",state="LEAVING",zone="b"} 0
4325 ring_zone_members{name="test",state="PENDING",zone="a"} 0
4326 ring_zone_members{name="test",state="PENDING",zone="b"} 0
4327 ring_zone_members{name="test",state="Unhealthy",zone="a"} 0
4328 ring_zone_members{name="test",state="Unhealthy",zone="b"} 0
4329 `, now-22)))
4330 require.NoError(t, err)
4331
4332 ringDescNew := Desc{
4333 Ingesters: map[string]InstanceDesc{

Callers

nothing calls this directly

Calls 3

updateRingStateMethod · 0.80

Tested by

no test coverage detected