Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/prometheus/globalrefmap_test.go
4093 views
1
package prometheus
2
3
import (
4
"testing"
5
"time"
6
7
"github.com/prometheus/prometheus/model/labels"
8
"github.com/stretchr/testify/require"
9
)
10
11
func TestAddingMarker(t *testing.T) {
12
mapping := newGlobalRefMap()
13
l := labels.Labels{}
14
l = append(l, labels.Label{
15
Name: "__name__",
16
Value: "test",
17
})
18
globalID := mapping.GetOrAddGlobalRefID(l)
19
shouldBeSameGlobalID := mapping.GetOrAddGlobalRefID(l)
20
require.True(t, globalID == shouldBeSameGlobalID)
21
require.Len(t, mapping.labelsHashToGlobal, 1)
22
}
23
24
func TestAddingDifferentMarkers(t *testing.T) {
25
mapping := newGlobalRefMap()
26
l := labels.Labels{}
27
l = append(l, labels.Label{
28
Name: "__name__",
29
Value: "test",
30
})
31
l2 := labels.Labels{}
32
l2 = append(l2, labels.Label{
33
Name: "__name__",
34
Value: "roar",
35
})
36
globalID := mapping.GetOrAddGlobalRefID(l)
37
shouldBeDifferentID := mapping.GetOrAddGlobalRefID(l2)
38
require.True(t, globalID != shouldBeDifferentID)
39
require.Len(t, mapping.labelsHashToGlobal, 2)
40
}
41
42
func TestAddingLocalMapping(t *testing.T) {
43
mapping := newGlobalRefMap()
44
l := labels.Labels{}
45
l = append(l, labels.Label{
46
Name: "__name__",
47
Value: "test",
48
})
49
50
globalID := mapping.GetOrAddGlobalRefID(l)
51
shouldBeSameGlobalID := mapping.GetOrAddLink("1", 1, l)
52
require.True(t, globalID == shouldBeSameGlobalID)
53
require.Len(t, mapping.labelsHashToGlobal, 1)
54
require.Len(t, mapping.mappings, 1)
55
require.True(t, mapping.mappings["1"].RemoteWriteID == "1")
56
require.True(t, mapping.mappings["1"].globalToLocal[shouldBeSameGlobalID] == 1)
57
require.True(t, mapping.mappings["1"].localToGlobal[1] == shouldBeSameGlobalID)
58
}
59
60
func TestAddingLocalMappings(t *testing.T) {
61
mapping := newGlobalRefMap()
62
l := labels.Labels{}
63
l = append(l, labels.Label{
64
Name: "__name__",
65
Value: "test",
66
})
67
68
globalID := mapping.GetOrAddGlobalRefID(l)
69
shouldBeSameGlobalID := mapping.GetOrAddLink("1", 1, l)
70
shouldBeSameGlobalID2 := mapping.GetOrAddLink("2", 1, l)
71
require.True(t, globalID == shouldBeSameGlobalID)
72
require.True(t, globalID == shouldBeSameGlobalID2)
73
require.Len(t, mapping.labelsHashToGlobal, 1)
74
require.Len(t, mapping.mappings, 2)
75
76
require.True(t, mapping.mappings["1"].RemoteWriteID == "1")
77
require.True(t, mapping.mappings["1"].globalToLocal[shouldBeSameGlobalID] == 1)
78
require.True(t, mapping.mappings["1"].localToGlobal[1] == shouldBeSameGlobalID)
79
80
require.True(t, mapping.mappings["2"].RemoteWriteID == "2")
81
require.True(t, mapping.mappings["2"].globalToLocal[shouldBeSameGlobalID2] == 1)
82
require.True(t, mapping.mappings["2"].localToGlobal[1] == shouldBeSameGlobalID2)
83
}
84
85
func TestAddingLocalMappingsWithoutCreatingGlobalUpfront(t *testing.T) {
86
mapping := newGlobalRefMap()
87
l := labels.Labels{}
88
l = append(l, labels.Label{
89
Name: "__name__",
90
Value: "test",
91
})
92
93
shouldBeSameGlobalID := mapping.GetOrAddLink("1", 1, l)
94
shouldBeSameGlobalID2 := mapping.GetOrAddLink("2", 1, l)
95
require.True(t, shouldBeSameGlobalID2 == shouldBeSameGlobalID)
96
require.Len(t, mapping.labelsHashToGlobal, 1)
97
require.Len(t, mapping.mappings, 2)
98
99
require.True(t, mapping.mappings["1"].RemoteWriteID == "1")
100
require.True(t, mapping.mappings["1"].globalToLocal[shouldBeSameGlobalID] == 1)
101
require.True(t, mapping.mappings["1"].localToGlobal[1] == shouldBeSameGlobalID)
102
103
require.True(t, mapping.mappings["2"].RemoteWriteID == "2")
104
require.True(t, mapping.mappings["2"].globalToLocal[shouldBeSameGlobalID2] == 1)
105
require.True(t, mapping.mappings["2"].localToGlobal[1] == shouldBeSameGlobalID2)
106
}
107
108
func TestStaleness(t *testing.T) {
109
mapping := newGlobalRefMap()
110
l := labels.Labels{}
111
l = append(l, labels.Label{
112
Name: "__name__",
113
Value: "test",
114
})
115
l2 := labels.Labels{}
116
l2 = append(l2, labels.Label{
117
Name: "__name__",
118
Value: "test2",
119
})
120
121
global1 := mapping.GetOrAddLink("1", 1, l)
122
_ = mapping.GetOrAddLink("2", 1, l2)
123
mapping.AddStaleMarker(global1, l)
124
require.Len(t, mapping.staleGlobals, 1)
125
require.Len(t, mapping.labelsHashToGlobal, 2)
126
staleDuration = 1 * time.Millisecond
127
time.Sleep(10 * time.Millisecond)
128
mapping.CheckStaleMarkers()
129
require.Len(t, mapping.staleGlobals, 0)
130
require.Len(t, mapping.labelsHashToGlobal, 1)
131
}
132
133
func TestRemovingStaleness(t *testing.T) {
134
mapping := newGlobalRefMap()
135
l := labels.Labels{}
136
l = append(l, labels.Label{
137
Name: "__name__",
138
Value: "test",
139
})
140
141
global1 := mapping.GetOrAddLink("1", 1, l)
142
mapping.AddStaleMarker(global1, l)
143
require.Len(t, mapping.staleGlobals, 1)
144
mapping.RemoveStaleMarker(global1)
145
require.Len(t, mapping.staleGlobals, 0)
146
}
147
148