(t *testing.T)
| 3359 | } |
| 3360 | |
| 3361 | func TestUpdateMetricsWithZone(t *testing.T) { |
| 3362 | cfg := Config{ |
| 3363 | KVStore: kv.Config{}, |
| 3364 | HeartbeatTimeout: 0, // get healthy stats |
| 3365 | ReplicationFactor: 3, |
| 3366 | ZoneAwarenessEnabled: true, |
| 3367 | DetailedMetricsEnabled: true, |
| 3368 | } |
| 3369 | |
| 3370 | registry := prometheus.NewRegistry() |
| 3371 | |
| 3372 | // create the ring to set up metrics, but do not start |
| 3373 | ring, err := NewWithStoreClientAndStrategy(cfg, testRingName, testRingKey, &MockClient{}, NewDefaultReplicationStrategy(), registry, log.NewNopLogger()) |
| 3374 | require.NoError(t, err) |
| 3375 | |
| 3376 | ringDesc := Desc{ |
| 3377 | Ingesters: map[string]InstanceDesc{ |
| 3378 | "A": {Addr: "127.0.0.1", Timestamp: 22, Zone: "zone1", Tokens: []uint32{math.MaxUint32 / 6, (math.MaxUint32 / 6) * 4}}, |
| 3379 | "B": {Addr: "127.0.0.2", Timestamp: 11, Zone: "zone2", Tokens: []uint32{(math.MaxUint32 / 6) * 2, (math.MaxUint32 / 6) * 5}}, |
| 3380 | "C": {Addr: "127.0.0.3", Timestamp: 33, Zone: "zone3", Tokens: []uint32{(math.MaxUint32 / 6) * 3, math.MaxUint32}}, |
| 3381 | }, |
| 3382 | } |
| 3383 | ring.updateRingState(&ringDesc) |
| 3384 | |
| 3385 | err = testutil.GatherAndCompare(registry, bytes.NewBufferString(` |
| 3386 | # HELP ring_member_ownership_percent The percent ownership of the ring by member |
| 3387 | # TYPE ring_member_ownership_percent gauge |
| 3388 | ring_member_ownership_percent{member="A",name="test"} 0.3333333332557231 |
| 3389 | ring_member_ownership_percent{member="B",name="test"} 0.3333333330228925 |
| 3390 | ring_member_ownership_percent{member="C",name="test"} 0.3333333337213844 |
| 3391 | # HELP ring_members Number of members in the ring |
| 3392 | # TYPE ring_members gauge |
| 3393 | ring_members{name="test",state="ACTIVE",zone="zone1"} 1 |
| 3394 | ring_members{name="test",state="ACTIVE",zone="zone2"} 1 |
| 3395 | ring_members{name="test",state="ACTIVE",zone="zone3"} 1 |
| 3396 | ring_members{name="test",state="JOINING",zone="zone1"} 0 |
| 3397 | ring_members{name="test",state="JOINING",zone="zone2"} 0 |
| 3398 | ring_members{name="test",state="JOINING",zone="zone3"} 0 |
| 3399 | ring_members{name="test",state="LEAVING",zone="zone1"} 0 |
| 3400 | ring_members{name="test",state="LEAVING",zone="zone2"} 0 |
| 3401 | ring_members{name="test",state="LEAVING",zone="zone3"} 0 |
| 3402 | ring_members{name="test",state="PENDING",zone="zone1"} 0 |
| 3403 | ring_members{name="test",state="PENDING",zone="zone2"} 0 |
| 3404 | ring_members{name="test",state="PENDING",zone="zone3"} 0 |
| 3405 | ring_members{name="test",state="READONLY",zone="zone1"} 0 |
| 3406 | ring_members{name="test",state="READONLY",zone="zone2"} 0 |
| 3407 | ring_members{name="test",state="READONLY",zone="zone3"} 0 |
| 3408 | ring_members{name="test",state="Unhealthy",zone="zone1"} 0 |
| 3409 | ring_members{name="test",state="Unhealthy",zone="zone2"} 0 |
| 3410 | ring_members{name="test",state="Unhealthy",zone="zone3"} 0 |
| 3411 | # HELP ring_oldest_member_timestamp Timestamp of the oldest member in the ring. |
| 3412 | # TYPE ring_oldest_member_timestamp gauge |
| 3413 | ring_oldest_member_timestamp{name="test",state="ACTIVE"} 11 |
| 3414 | ring_oldest_member_timestamp{name="test",state="JOINING"} 0 |
| 3415 | ring_oldest_member_timestamp{name="test",state="LEAVING"} 0 |
| 3416 | ring_oldest_member_timestamp{name="test",state="PENDING"} 0 |
| 3417 | ring_oldest_member_timestamp{name="test",state="READONLY"} 0 |
| 3418 | ring_oldest_member_timestamp{name="test",state="Unhealthy"} 0 |
nothing calls this directly
no test coverage detected