master
go 108 lines 3.36 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package metrix
4
5 import (
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 "github.com/stretchr/testify/require"
10 )
11
12 func TestFlattenSeriesMetaCarriesOriginType(t *testing.T) {
13 tests := map[string]struct {
14 run func(t *testing.T)
15 }{
16 "histogram flatten series carry source kind and role": {
17 run: func(t *testing.T) {
18 s := NewCollectorStore()
19 cc := cycleController(t, s)
20
21 h := s.Write().SnapshotMeter("svc").Histogram("latency", WithHistogramBounds(1, 2))
22 cc.BeginCycle()
23 h.ObservePoint(HistogramPoint{
24 Count: 2,
25 Sum: 3,
26 Buckets: []BucketPoint{
27 {UpperBound: 1, CumulativeCount: 1},
28 {UpperBound: 2, CumulativeCount: 2},
29 },
30 })
31 cc.CommitCycleSuccess()
32
33 flat := s.Read(ReadFlatten())
34 metaBucket, ok := flat.SeriesMeta("svc.latency_bucket", Labels{"le": "1"})
35 require.True(t, ok)
36 assert.Equal(t, MetricKindCounter, metaBucket.Kind)
37 assert.Equal(t, MetricKindHistogram, metaBucket.SourceKind)
38 assert.Equal(t, FlattenRoleHistogramBucket, metaBucket.FlattenRole)
39
40 metaCount, ok := flat.SeriesMeta("svc.latency_count", nil)
41 require.True(t, ok)
42 assert.Equal(t, MetricKindCounter, metaCount.Kind)
43 assert.Equal(t, MetricKindHistogram, metaCount.SourceKind)
44 assert.Equal(t, FlattenRoleHistogramCount, metaCount.FlattenRole)
45 },
46 },
47 "stateset flatten series carry source kind and role": {
48 run: func(t *testing.T) {
49 s := NewCollectorStore()
50 cc := cycleController(t, s)
51
52 ss := s.Write().SnapshotMeter("svc").StateSet(
53 "mode",
54 WithStateSetStates("maintenance", "operational"),
55 WithStateSetMode(ModeEnum),
56 )
57 cc.BeginCycle()
58 ss.Enable("operational")
59 cc.CommitCycleSuccess()
60
61 rawMeta, ok := s.Read().SeriesMeta("svc.mode", nil)
62 require.True(t, ok)
63 assert.Equal(t, MetricKindStateSet, rawMeta.Kind)
64 assert.Equal(t, MetricKindStateSet, rawMeta.SourceKind)
65 assert.Equal(t, FlattenRoleNone, rawMeta.FlattenRole)
66
67 flatMeta, ok := s.Read(ReadFlatten()).SeriesMeta("svc.mode", Labels{"svc.mode": "operational"})
68 require.True(t, ok)
69 assert.Equal(t, MetricKindGauge, flatMeta.Kind)
70 assert.Equal(t, MetricKindStateSet, flatMeta.SourceKind)
71 assert.Equal(t, FlattenRoleStateSetState, flatMeta.FlattenRole)
72 },
73 },
74 "measureset flatten series carry source kind and role": {
75 run: func(t *testing.T) {
76 s := NewCollectorStore()
77 cc := cycleController(t, s)
78
79 ms := s.Write().SnapshotMeter("svc").MeasureSetGauge(
80 "latency",
81 WithMeasureSetFields(
82 MeasureFieldSpec{Name: "value"},
83 MeasureFieldSpec{Name: "limit"},
84 ),
85 )
86 cc.BeginCycle()
87 ms.ObservePoint(MeasureSetPoint{Values: []SampleValue{1, 2}})
88 cc.CommitCycleSuccess()
89
90 rawMeta, ok := s.Read().SeriesMeta("svc.latency", nil)
91 require.True(t, ok)
92 assert.Equal(t, MetricKindMeasureSet, rawMeta.Kind)
93 assert.Equal(t, MetricKindMeasureSet, rawMeta.SourceKind)
94 assert.Equal(t, FlattenRoleNone, rawMeta.FlattenRole)
95
96 flatMeta, ok := s.Read(ReadFlatten()).SeriesMeta("svc.latency_value", measureSetFieldLabels("value"))
97 require.True(t, ok)
98 assert.Equal(t, MetricKindGauge, flatMeta.Kind)
99 assert.Equal(t, MetricKindMeasureSet, flatMeta.SourceKind)
100 assert.Equal(t, FlattenRoleMeasureSetField, flatMeta.FlattenRole)
101 },
102 },
103 }
104
105 for name, tc := range tests {
106 t.Run(name, tc.run)
107 }
108 }