@@ -17,6 +17,7 @@ limitations under the License.
17
17
package metrics
18
18
19
19
import (
20
+ "os"
20
21
"reflect"
21
22
"testing"
22
23
@@ -64,8 +65,8 @@ func TestDefaultStabilityLevel(t *testing.T) {
64
65
65
66
func TestConstrainToAllowedList (t * testing.T ) {
66
67
allowList := & MetricLabelAllowList {
67
- labelToAllowList : map [string ]sets.String {
68
- "label_a" : sets .NewString ("allow_value1" , "allow_value2" ),
68
+ labelToAllowList : map [string ]sets.Set [ string ] {
69
+ "label_a" : sets .New [ string ] ("allow_value1" , "allow_value2" ),
69
70
},
70
71
}
71
72
labelNameList := []string {"label_a" , "label_b" }
@@ -97,8 +98,8 @@ func TestConstrainToAllowedList(t *testing.T) {
97
98
98
99
func TestConstrainLabelMap (t * testing.T ) {
99
100
allowList := & MetricLabelAllowList {
100
- labelToAllowList : map [string ]sets.String {
101
- "label_a" : sets .NewString ("allow_value1" , "allow_value2" ),
101
+ labelToAllowList : map [string ]sets.Set [ string ] {
102
+ "label_a" : sets .New [ string ] ("allow_value1" , "allow_value2" ),
102
103
},
103
104
}
104
105
var tests = []struct {
@@ -138,3 +139,72 @@ func TestConstrainLabelMap(t *testing.T) {
138
139
})
139
140
}
140
141
}
142
+
143
+ func TestSetLabelAllowListFromManifest (t * testing.T ) {
144
+ tests := []struct {
145
+ name string
146
+ manifest string
147
+ manifestExist bool
148
+ expectlabelValueAllowLists map [string ]* MetricLabelAllowList
149
+ }{
150
+ {
151
+ name : "successfully parse manifest" ,
152
+ manifestExist : true ,
153
+ manifest : `metric1,label1: v1,v2
154
+ metric2,label2: v3` ,
155
+ expectlabelValueAllowLists : map [string ]* MetricLabelAllowList {
156
+ "metric1" : {
157
+ labelToAllowList : map [string ]sets.Set [string ]{
158
+ "label1" : sets .New [string ]("v1" , "v2" ),
159
+ },
160
+ },
161
+ "metric2" : {
162
+ labelToAllowList : map [string ]sets.Set [string ]{
163
+ "label2" : sets.New [string ]("v3" ),
164
+ },
165
+ },
166
+ },
167
+ },
168
+ {
169
+ name : "failed to read manifest file" ,
170
+ manifestExist : false ,
171
+ expectlabelValueAllowLists : map [string ]* MetricLabelAllowList {},
172
+ },
173
+ {
174
+ name : "failed to parse manifest" ,
175
+ manifestExist : true ,
176
+ manifest : `allow-list:
177
+ - metric1,label1:v1
178
+ - metric2,label2:v2,v3` ,
179
+ expectlabelValueAllowLists : map [string ]* MetricLabelAllowList {},
180
+ },
181
+ }
182
+
183
+ for _ , tc := range tests {
184
+ t .Run (tc .name , func (t * testing.T ) {
185
+ labelValueAllowLists = map [string ]* MetricLabelAllowList {}
186
+ manifestFilePath := "/non-existent-file.yaml"
187
+ if tc .manifestExist {
188
+ tempFile , err := os .CreateTemp ("" , "allow-list-test" )
189
+ if err != nil {
190
+ t .Fatalf ("failed to create temp file: %v" , err )
191
+ }
192
+ defer func () {
193
+ if err := os .Remove (tempFile .Name ()); err != nil {
194
+ t .Errorf ("failed to remove temp file: %v" , err )
195
+ }
196
+ }()
197
+
198
+ if _ , err := tempFile .WriteString (tc .manifest ); err != nil {
199
+ t .Fatalf ("failed to write to temp file: %v" , err )
200
+ }
201
+ manifestFilePath = tempFile .Name ()
202
+ }
203
+
204
+ SetLabelAllowListFromManifest (manifestFilePath )
205
+ if ! reflect .DeepEqual (labelValueAllowLists , tc .expectlabelValueAllowLists ) {
206
+ t .Errorf ("labelValueAllowLists = %+v, want %+v" , labelValueAllowLists , tc .expectlabelValueAllowLists )
207
+ }
208
+ })
209
+ }
210
+ }
0 commit comments