Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/integrations/v2/app_agent_receiver/receiver_metrics_test.go
5403 views
1
package app_agent_receiver
2
3
import (
4
"context"
5
"fmt"
6
"testing"
7
8
"github.com/prometheus/client_golang/prometheus"
9
10
"github.com/stretchr/testify/require"
11
)
12
13
type metricAssertion struct {
14
name string
15
value float64
16
}
17
18
func testcase(t *testing.T, payload Payload, assertions []metricAssertion) {
19
ctx := context.Background()
20
21
reg := prometheus.NewRegistry()
22
23
exporter := NewReceiverMetricsExporter(reg)
24
25
err := exporter.Export(ctx, payload)
26
require.NoError(t, err)
27
28
metrics, err := reg.Gather()
29
require.NoError(t, err)
30
31
for _, assertion := range assertions {
32
found := false
33
for _, metric := range metrics {
34
if *metric.Name == assertion.name {
35
found = true
36
require.Len(t, metric.Metric, 1)
37
val := metric.Metric[0].Counter.Value
38
require.Equal(t, assertion.value, *val)
39
break
40
}
41
}
42
if !found {
43
require.Fail(t, fmt.Sprintf("metric [%s] not found", assertion.name))
44
}
45
}
46
}
47
48
func TestReceiverMetricsExport(t *testing.T) {
49
var payload Payload
50
payload.Logs = make([]Log, 2)
51
payload.Measurements = make([]Measurement, 3)
52
payload.Exceptions = make([]Exception, 4)
53
payload.Events = make([]Event, 5)
54
testcase(t, payload, []metricAssertion{
55
{
56
name: "app_agent_receiver_logs_total",
57
value: 2,
58
},
59
{
60
name: "app_agent_receiver_measurements_total",
61
value: 3,
62
},
63
{
64
name: "app_agent_receiver_exceptions_total",
65
value: 4,
66
},
67
{
68
name: "app_agent_receiver_events_total",
69
value: 5,
70
},
71
})
72
}
73
74
func TestReceiverMetricsExportLogsOnly(t *testing.T) {
75
var payload Payload
76
payload.Logs = []Log{
77
{},
78
{},
79
}
80
testcase(t, payload, []metricAssertion{
81
{
82
name: "app_agent_receiver_logs_total",
83
value: 2,
84
},
85
{
86
name: "app_agent_receiver_measurements_total",
87
value: 0,
88
},
89
{
90
name: "app_agent_receiver_exceptions_total",
91
value: 0,
92
},
93
})
94
}
95
96
func TestReceiverMetricsExportExceptionsOnly(t *testing.T) {
97
var payload Payload
98
payload.Exceptions = []Exception{
99
{},
100
{},
101
{},
102
{},
103
}
104
testcase(t, payload, []metricAssertion{
105
{
106
name: "app_agent_receiver_logs_total",
107
value: 0,
108
},
109
{
110
name: "app_agent_receiver_measurements_total",
111
value: 0,
112
},
113
{
114
name: "app_agent_receiver_exceptions_total",
115
value: 4,
116
},
117
})
118
}
119
120
func TestReceiverMetricsExportMeasurementsOnly(t *testing.T) {
121
var payload Payload
122
payload.Measurements = []Measurement{
123
{},
124
{},
125
{},
126
}
127
testcase(t, payload, []metricAssertion{
128
{
129
name: "app_agent_receiver_logs_total",
130
value: 0,
131
},
132
{
133
name: "app_agent_receiver_measurements_total",
134
value: 3,
135
},
136
{
137
name: "app_agent_receiver_exceptions_total",
138
value: 0,
139
},
140
})
141
}
142
143