MCPcopy Create free account
hub / github.com/cortexproject/cortex / TestUpdateMetricsWithRemoval

Function TestUpdateMetricsWithRemoval

pkg/ring/ring_test.go:3270–3359  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

3268}
3269
3270func TestUpdateMetricsWithRemoval(t *testing.T) {
3271 cfg := Config{
3272 KVStore: kv.Config{},
3273 HeartbeatTimeout: 0, // get healthy stats
3274 ReplicationFactor: 3,
3275 ZoneAwarenessEnabled: true,
3276 DetailedMetricsEnabled: true,
3277 }
3278
3279 registry := prometheus.NewRegistry()
3280
3281 // create the ring to set up metrics, but do not start
3282 ring, err := NewWithStoreClientAndStrategy(cfg, testRingName, testRingKey, &MockClient{}, NewDefaultReplicationStrategy(), registry, log.NewNopLogger())
3283 require.NoError(t, err)
3284
3285 ringDesc := Desc{
3286 Ingesters: map[string]InstanceDesc{
3287 "A": {Addr: "127.0.0.1", Timestamp: 22, Tokens: []uint32{math.MaxUint32 / 4, (math.MaxUint32 / 4) * 3}},
3288 "B": {Addr: "127.0.0.2", Timestamp: 11, Tokens: []uint32{(math.MaxUint32 / 4) * 2, math.MaxUint32}},
3289 },
3290 }
3291 ring.updateRingState(&ringDesc)
3292
3293 err = testutil.GatherAndCompare(registry, bytes.NewBufferString(`
3294 # HELP ring_member_ownership_percent The percent ownership of the ring by member
3295 # TYPE ring_member_ownership_percent gauge
3296 ring_member_ownership_percent{member="A",name="test"} 0.49999999976716936
3297 ring_member_ownership_percent{member="B",name="test"} 0.5000000002328306
3298 # HELP ring_members Number of members in the ring
3299 # TYPE ring_members gauge
3300 ring_members{name="test",state="ACTIVE",zone=""} 2
3301 ring_members{name="test",state="JOINING",zone=""} 0
3302 ring_members{name="test",state="LEAVING",zone=""} 0
3303 ring_members{name="test",state="PENDING",zone=""} 0
3304 ring_members{name="test",state="READONLY",zone=""} 0
3305 ring_members{name="test",state="Unhealthy",zone=""} 0
3306 # HELP ring_oldest_member_timestamp Timestamp of the oldest member in the ring.
3307 # TYPE ring_oldest_member_timestamp gauge
3308 ring_oldest_member_timestamp{name="test",state="ACTIVE"} 11
3309 ring_oldest_member_timestamp{name="test",state="JOINING"} 0
3310 ring_oldest_member_timestamp{name="test",state="LEAVING"} 0
3311 ring_oldest_member_timestamp{name="test",state="PENDING"} 0
3312 ring_oldest_member_timestamp{name="test",state="READONLY"} 0
3313 ring_oldest_member_timestamp{name="test",state="Unhealthy"} 0
3314 # HELP ring_tokens_owned The number of tokens in the ring owned by the member
3315 # TYPE ring_tokens_owned gauge
3316 ring_tokens_owned{member="A",name="test"} 2
3317 ring_tokens_owned{member="B",name="test"} 2
3318 # HELP ring_tokens_total Number of tokens in the ring
3319 # TYPE ring_tokens_total gauge
3320 ring_tokens_total{name="test"} 4
3321 `))
3322 require.NoError(t, err)
3323
3324 ringDescNew := Desc{
3325 Ingesters: map[string]InstanceDesc{
3326 "A": {Addr: "127.0.0.1", Timestamp: 22, Tokens: []uint32{math.MaxUint32 / 4, (math.MaxUint32 / 4) * 3}},
3327 },

Callers

nothing calls this directly

Calls 3

updateRingStateMethod · 0.80

Tested by

no test coverage detected