Skip to content

Commit 6ff6536

Browse files
committed
test(telemetrygen): add tests for delta/cumulative temporality
1 parent c736320 commit 6ff6536

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

cmd/telemetrygen/pkg/metrics/worker_test.go

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,21 @@ func (m *mockExporter) Shutdown(_ context.Context) error {
5050
return nil
5151
}
5252

53+
func checkMetricTemporality(t *testing.T, ms metricdata.Metrics, metricType MetricType, expectedTemporality metricdata.Temporality) {
54+
switch metricType {
55+
case MetricTypeSum:
56+
sumData, ok := ms.Data.(metricdata.Sum[int64])
57+
require.True(t, ok, "expected Sum data type")
58+
assert.Equal(t, expectedTemporality, sumData.Temporality)
59+
case MetricTypeHistogram:
60+
histogramData, ok := ms.Data.(metricdata.Histogram[int64])
61+
require.True(t, ok, "expected Histogram data type")
62+
assert.Equal(t, expectedTemporality, histogramData.Temporality)
63+
default:
64+
t.Fatalf("unsupported metric type: %v", metricType)
65+
}
66+
}
67+
5368
func TestFixedNumberOfMetrics(t *testing.T) {
5469
// arrange
5570
cfg := &Config{
@@ -98,6 +113,73 @@ func TestRateOfMetrics(t *testing.T) {
98113
assert.LessOrEqual(t, len(m.rms), 20, "there should have been less than 20 metrics, had %d", len(m.rms))
99114
}
100115

116+
func TestMetricsWithTemporality(t *testing.T) {
117+
tests := []struct {
118+
name string
119+
metricType MetricType
120+
temporalityType TemporalityType
121+
expectedTemporality metricdata.Temporality
122+
}{
123+
{
124+
name: "Sum: delta temporality",
125+
metricType: MetricTypeSum,
126+
temporalityType: TemporalityType(metricdata.DeltaTemporality),
127+
expectedTemporality: metricdata.DeltaTemporality,
128+
},
129+
{
130+
name: "Sum: cumulative temporality",
131+
metricType: MetricTypeSum,
132+
temporalityType: TemporalityType(metricdata.CumulativeTemporality),
133+
expectedTemporality: metricdata.CumulativeTemporality,
134+
},
135+
{
136+
name: "Histogram: delta temporality",
137+
metricType: MetricTypeHistogram,
138+
temporalityType: TemporalityType(metricdata.DeltaTemporality),
139+
expectedTemporality: metricdata.DeltaTemporality,
140+
},
141+
{
142+
name: "Histogram: cumulative temporality",
143+
metricType: MetricTypeHistogram,
144+
temporalityType: TemporalityType(metricdata.CumulativeTemporality),
145+
expectedTemporality: metricdata.CumulativeTemporality,
146+
},
147+
}
148+
149+
for _, tt := range tests {
150+
t.Run(tt.name, func(t *testing.T) {
151+
// arrange
152+
cfg := &Config{
153+
Config: common.Config{
154+
WorkerCount: 1,
155+
},
156+
NumMetrics: 1,
157+
MetricName: "test",
158+
MetricType: tt.metricType,
159+
TemporalityType: tt.temporalityType,
160+
}
161+
m := &mockExporter{}
162+
expFunc := func() (sdkmetric.Exporter, error) {
163+
return m, nil
164+
}
165+
166+
// act
167+
logger, _ := zap.NewDevelopment()
168+
require.NoError(t, run(cfg, expFunc, logger))
169+
170+
// wait for the metrics to be exported.
171+
time.Sleep(1 * time.Second)
172+
173+
// assert
174+
require.Len(t, m.rms, 1)
175+
ms := m.rms[0].ScopeMetrics[0].Metrics[0]
176+
assert.Equal(t, "test", ms.Name)
177+
178+
checkMetricTemporality(t, ms, tt.metricType, tt.expectedTemporality)
179+
})
180+
}
181+
}
182+
101183
func TestUnthrottled(t *testing.T) {
102184
// arrange
103185
cfg := &Config{

0 commit comments

Comments
 (0)