1
16
17 package metrics
18
19 import (
20 "reflect"
21 "strings"
22 "testing"
23
24 "k8s.io/apimachinery/pkg/version"
25 )
26
27 func TestDescCreate(t *testing.T) {
28 currentVersion := parseVersion(version.Info{
29 Major: "1",
30 Minor: "17",
31 GitVersion: "v1.17.0-alpha-1.12345",
32 })
33
34 var tests = []struct {
35 name string
36 fqName string
37 help string
38 stabilityLevel StabilityLevel
39 deprecatedVersion string
40
41 shouldCreate bool
42 expectedAnnotatedHelp string
43 }{
44 {
45 name: "alpha descriptor should be created",
46 fqName: "normal_alpha_descriptor",
47 help: "this is an alpha descriptor",
48 stabilityLevel: ALPHA,
49 deprecatedVersion: "",
50 shouldCreate: true,
51 expectedAnnotatedHelp: "[ALPHA] this is an alpha descriptor",
52 },
53 {
54 name: "stable descriptor should be created",
55 fqName: "normal_stable_descriptor",
56 help: "this is a stable descriptor",
57 stabilityLevel: STABLE,
58 deprecatedVersion: "",
59 shouldCreate: true,
60 expectedAnnotatedHelp: "[STABLE] this is a stable descriptor",
61 },
62 {
63 name: "deprecated descriptor should be created",
64 fqName: "deprecated_stable_descriptor",
65 help: "this is a deprecated descriptor",
66 stabilityLevel: STABLE,
67 deprecatedVersion: "1.17.0",
68 shouldCreate: true,
69 expectedAnnotatedHelp: "[STABLE] (Deprecated since 1.17.0) this is a deprecated descriptor",
70 },
71 {
72 name: "hidden descriptor should not be created",
73 fqName: "hidden_stable_descriptor",
74 help: "this is a hidden descriptor",
75 stabilityLevel: STABLE,
76 deprecatedVersion: "1.16.0",
77 shouldCreate: false,
78 expectedAnnotatedHelp: "this is a hidden descriptor",
79 },
80 }
81
82 for _, test := range tests {
83 tc := test
84 t.Run(tc.name, func(t *testing.T) {
85 desc := NewDesc(tc.fqName, tc.help, nil, nil, tc.stabilityLevel, tc.deprecatedVersion)
86
87 if desc.IsCreated() {
88 t.Fatal("Descriptor should not be created by default.")
89 }
90
91 desc.create(¤tVersion)
92 desc.create(¤tVersion)
93
94 if desc.IsCreated() != tc.shouldCreate {
95 t.Fatalf("expected create state: %v, but got: %v", tc.shouldCreate, desc.IsCreated())
96 }
97
98 if !strings.Contains(desc.String(), tc.expectedAnnotatedHelp) {
99 t.Fatalf("expected annotated help: %s, but not in descriptor: %s", tc.expectedAnnotatedHelp, desc.String())
100 }
101 })
102 }
103 }
104
105 func TestDescClearState(t *testing.T) {
106 currentVersion := parseVersion(version.Info{
107 Major: "1",
108 Minor: "17",
109 GitVersion: "v1.17.0-alpha-1.12345",
110 })
111
112 var tests = []struct {
113 name string
114 fqName string
115 help string
116 stabilityLevel StabilityLevel
117 deprecatedVersion string
118 }{
119 {
120 name: "alpha descriptor",
121 fqName: "normal_alpha_descriptor",
122 help: "this is an alpha descriptor",
123 stabilityLevel: ALPHA,
124 deprecatedVersion: "",
125 },
126 {
127 name: "stable descriptor",
128 fqName: "normal_stable_descriptor",
129 help: "this is a stable descriptor",
130 stabilityLevel: STABLE,
131 deprecatedVersion: "",
132 },
133 {
134 name: "deprecated descriptor",
135 fqName: "deprecated_stable_descriptor",
136 help: "this is a deprecated descriptor",
137 stabilityLevel: STABLE,
138 deprecatedVersion: "1.17.0",
139 },
140 {
141 name: "hidden descriptor",
142 fqName: "hidden_stable_descriptor",
143 help: "this is a hidden descriptor",
144 stabilityLevel: STABLE,
145 deprecatedVersion: "1.16.0",
146 },
147 }
148
149 for _, test := range tests {
150 tc := test
151 t.Run(tc.name, func(t *testing.T) {
152 descA := NewDesc(tc.fqName, tc.help, nil, nil, tc.stabilityLevel, tc.deprecatedVersion)
153 descB := NewDesc(tc.fqName, tc.help, nil, nil, tc.stabilityLevel, tc.deprecatedVersion)
154
155 descA.create(¤tVersion)
156 descA.ClearState()
157
158
159
160 if !reflect.DeepEqual(*descA, *descB) {
161 t.Fatal("descriptor state hasn't be cleaned up")
162 }
163 })
164 }
165 }
166
View as plain text