@@ -20,264 +20,84 @@ import (
2020 "testing"
2121 "time"
2222
23- dto "github.com/prometheus/client_model/go"
24- v1 "k8s.io/api/core/v1"
25- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26- )
27-
28- const (
29- eventsTotal = "kube_events_total"
23+ "github.com/rhobs/kube-events-exporter/test/framework"
3024)
3125
3226func TestEventCreation (t * testing.T ) {
33- exporter := framework .CreateKubeEventsExporter (t )
34-
35- event := & v1.Event {
36- ObjectMeta : metav1.ObjectMeta {
37- Name : "test" ,
38- },
39- InvolvedObject : v1.ObjectReference {
40- Kind : "Pod" ,
41- Namespace : "default" ,
42- },
43- Count : 1 ,
44- Reason : "test-creation" ,
45- Type : v1 .EventTypeNormal ,
46- }
47- event = framework .CreateEvent (t , event , event .InvolvedObject .Namespace )
27+ exporter := f .CreateKubeEventsExporter (t )
28+ event := f .CreateBasicEvent (t )
4829
49- expectedMetric := & dto.Metric {
50- Label : []* dto.LabelPair {
51- {Name : stringPtr ("involved_object_kind" ), Value : & event .InvolvedObject .Kind },
52- {Name : stringPtr ("involved_object_namespace" ), Value : & event .InvolvedObject .Namespace },
53- {Name : stringPtr ("reason" ), Value : & event .Reason },
54- {Name : stringPtr ("type" ), Value : & event .Type },
55- },
56- Counter : & dto.Counter {Value : float64Ptr (1 )},
57- }
58-
59- err := framework .PollMetric (exporter .GetEventMetricFamilies , eventsTotal , expectedMetric )
60- if err != nil {
61- t .Fatal (err )
62- }
30+ f .AssertEventsTotalPresent (t , exporter , event , 1 )
6331}
6432
6533func TestEventUpdate (t * testing.T ) {
66- exporter := framework .CreateKubeEventsExporter (t )
67-
68- event := & v1.Event {
69- ObjectMeta : metav1.ObjectMeta {
70- Name : "test" ,
71- },
72- InvolvedObject : v1.ObjectReference {
73- Kind : "Pod" ,
74- Namespace : "default" ,
75- },
76- Count : 1 ,
77- Reason : "test-update" ,
78- Type : v1 .EventTypeNormal ,
79- }
80- event = framework .CreateEvent (t , event , event .InvolvedObject .Namespace )
34+ exporter := f .CreateKubeEventsExporter (t )
35+ event := f .CreateBasicEvent (t )
8136
82- event .Count ++
83- event .LastTimestamp = metav1 .Now ()
84- event , err := framework .UpdateEvent (event , event .InvolvedObject .Namespace )
37+ event , err := f .UpdateEvent (event , event .InvolvedObject .Namespace )
8538 if err != nil {
8639 t .Fatal (err )
8740 }
8841
89- expectedMetric := & dto.Metric {
90- Label : []* dto.LabelPair {
91- {Name : stringPtr ("involved_object_kind" ), Value : & event .InvolvedObject .Kind },
92- {Name : stringPtr ("involved_object_namespace" ), Value : & event .InvolvedObject .Namespace },
93- {Name : stringPtr ("reason" ), Value : & event .Reason },
94- {Name : stringPtr ("type" ), Value : & event .Type },
95- },
96- Counter : & dto.Counter {Value : float64Ptr (2 )},
97- }
98-
99- err = framework .PollMetric (exporter .GetEventMetricFamilies , eventsTotal , expectedMetric )
100- if err != nil {
101- t .Fatal (err )
102- }
42+ f .AssertEventsTotalPresent (t , exporter , event , 2 )
10343}
10444
10545func TestUpdateExistingEvent (t * testing.T ) {
106- event := & v1.Event {
107- ObjectMeta : metav1.ObjectMeta {
108- Name : "test" ,
109- },
110- InvolvedObject : v1.ObjectReference {
111- Kind : "Pod" ,
112- Namespace : "default" ,
113- },
114- Count : 1 ,
115- Reason : "test-update-existing" ,
116- Type : v1 .EventTypeNormal ,
117- }
118- event = framework .CreateEvent (t , event , event .InvolvedObject .Namespace )
119- // The exporter reconciles Events created during the same second as itself.
46+ event := f .CreateBasicEvent (t )
47+ // The exporter reconcile Events created during the same second as itself.
12048 // Thus, to ensure that this Event is not reconciled, we sleep one second.
12149 time .Sleep (time .Second )
12250
123- exporter := framework .CreateKubeEventsExporter (t )
51+ exporter := f .CreateKubeEventsExporter (t )
12452
125- event .Count ++
126- event .LastTimestamp = metav1 .Now ()
127- event , err := framework .UpdateEvent (event , event .Namespace )
53+ event , err := f .UpdateEvent (event , event .Namespace )
12854 if err != nil {
12955 t .Fatal (err )
13056 }
13157
132- expectedMetric := & dto.Metric {
133- Label : []* dto.LabelPair {
134- {Name : stringPtr ("involved_object_kind" ), Value : & event .InvolvedObject .Kind },
135- {Name : stringPtr ("involved_object_namespace" ), Value : & event .InvolvedObject .Namespace },
136- {Name : stringPtr ("reason" ), Value : & event .Reason },
137- {Name : stringPtr ("type" ), Value : & event .Type },
138- },
139- Counter : & dto.Counter {Value : float64Ptr (1 )},
140- }
141-
142- err = framework .PollMetric (exporter .GetEventMetricFamilies , eventsTotal , expectedMetric )
143- if err != nil {
144- t .Fatal (err )
145- }
58+ f .AssertEventsTotalPresent (t , exporter , event , 1 )
14659}
14760
14861func TestNotReconciling (t * testing.T ) {
149- event := & v1.Event {
150- ObjectMeta : metav1.ObjectMeta {
151- Name : "test" ,
152- },
153- InvolvedObject : v1.ObjectReference {
154- Kind : "Pod" ,
155- Namespace : "default" ,
156- },
157- Count : 1 ,
158- Reason : "test" ,
159- Type : v1 .EventTypeNormal ,
160- }
161- event = framework .CreateEvent (t , event , event .InvolvedObject .Namespace )
162- // The exporter reconciles Events created during the same second as itself.
62+ event := f .CreateBasicEvent (t )
63+ // The exporter reconcile Events created during the same second as itself.
16364 // Thus, to ensure that this Event is not reconciled, we sleep one second.
16465 time .Sleep (time .Second )
16566
166- exporter := framework .CreateKubeEventsExporter (t )
67+ exporter := f .CreateKubeEventsExporter (t )
16768
168- unexpectedMetric := & dto.Metric {
169- Label : []* dto.LabelPair {
170- {Name : stringPtr ("involved_object_kind" ), Value : & event .InvolvedObject .Kind },
171- {Name : stringPtr ("involved_object_namespace" ), Value : & event .InvolvedObject .Namespace },
172- {Name : stringPtr ("reason" ), Value : & event .Reason },
173- {Name : stringPtr ("type" ), Value : & event .Type },
174- },
175- Counter : & dto.Counter {Value : float64Ptr (1 )},
176- }
177-
178- err := framework .PollMetric (exporter .GetEventMetricFamilies , eventsTotal , unexpectedMetric )
179- if err == nil {
180- t .Fatal ("kube-events-exporter should not reconcile existing Events" )
181- }
69+ f .AssertEventsTotalAbsent (t , exporter , event , 1 )
18270}
18371
18472func TestRecordEventRecorderCreate (t * testing.T ) {
185- exporter := framework .CreateKubeEventsExporter (t )
186- recorder := framework .NewRecordEventRecorder ()
73+ exporter := f .CreateKubeEventsExporter (t )
74+ recorder := f .NewRecordEventRecorder ()
18775
188- involvedObject := & v1.ObjectReference {
189- Kind : "Pod" ,
190- Namespace : "default" ,
191- Name : "foo" ,
192- }
193- eventType := v1 .EventTypeNormal
194- reason := "test-recorder-create"
195-
196- recorder .Eventf (involvedObject , eventType , reason , "" )
197-
198- expectedMetric := & dto.Metric {
199- Label : []* dto.LabelPair {
200- {Name : stringPtr ("involved_object_kind" ), Value : & involvedObject .Kind },
201- {Name : stringPtr ("involved_object_namespace" ), Value : & involvedObject .Namespace },
202- {Name : stringPtr ("reason" ), Value : & reason },
203- {Name : stringPtr ("type" ), Value : & eventType },
204- },
205- Counter : & dto.Counter {Value : float64Ptr (1 )},
206- }
76+ event := framework .NewBasicEvent ()
77+ recorder .Eventf (& event .InvolvedObject , event .Type , event .Reason , event .Message )
20778
208- err := framework .PollMetric (exporter .GetEventMetricFamilies , eventsTotal , expectedMetric )
209- if err != nil {
210- t .Fatal (err )
211- }
79+ f .AssertEventsTotalPresent (t , exporter , event , 1 )
21280}
21381
21482func TestRecordEventRecorderUpdate (t * testing.T ) {
215- exporter := framework .CreateKubeEventsExporter (t )
216- recorder := framework .NewRecordEventRecorder ()
83+ exporter := f .CreateKubeEventsExporter (t )
84+ recorder := f .NewRecordEventRecorder ()
21785
218- involvedObject := & v1.ObjectReference {
219- Kind : "Pod" ,
220- Namespace : "default" ,
221- Name : "foo" ,
222- }
223- eventType := v1 .EventTypeNormal
224- reason := "test-recorder-update"
225-
226- recorder .Eventf (involvedObject , eventType , reason , "" )
227- recorder .Eventf (involvedObject , eventType , reason , "" )
228-
229- expectedMetric := & dto.Metric {
230- Label : []* dto.LabelPair {
231- {Name : stringPtr ("involved_object_kind" ), Value : & involvedObject .Kind },
232- {Name : stringPtr ("involved_object_namespace" ), Value : & involvedObject .Namespace },
233- {Name : stringPtr ("reason" ), Value : & reason },
234- {Name : stringPtr ("type" ), Value : & eventType },
235- },
236- Counter : & dto.Counter {Value : float64Ptr (2 )},
237- }
86+ event := framework .NewBasicEvent ()
87+ recorder .Eventf (& event .InvolvedObject , event .Type , event .Reason , event .Message )
88+ recorder .Eventf (& event .InvolvedObject , event .Type , event .Reason , event .Message )
23889
239- err := framework .PollMetric (exporter .GetEventMetricFamilies , eventsTotal , expectedMetric )
240- if err != nil {
241- t .Fatal (err )
242- }
90+ f .AssertEventsTotalPresent (t , exporter , event , 2 )
24391}
24492
24593func TestEventsEventRecorderCreate (t * testing.T ) {
246- exporter := framework .CreateKubeEventsExporter (t )
94+ exporter := f .CreateKubeEventsExporter (t )
24795
24896 stopCh := make (chan struct {})
249- recorder := framework .NewEventsEventRecorder (stopCh )
250-
251- involvedObject := & v1.ObjectReference {
252- Kind : "Pod" ,
253- Namespace : "default" ,
254- Name : "foo" ,
255- }
256- eventType := v1 .EventTypeNormal
257- reason := "test-recorder-create"
258-
259- recorder .Eventf (involvedObject , nil , eventType , reason , "action" , "" )
260-
261- expectedMetric := & dto.Metric {
262- Label : []* dto.LabelPair {
263- {Name : stringPtr ("involved_object_kind" ), Value : & involvedObject .Kind },
264- {Name : stringPtr ("involved_object_namespace" ), Value : & involvedObject .Namespace },
265- {Name : stringPtr ("reason" ), Value : & reason },
266- {Name : stringPtr ("type" ), Value : & eventType },
267- },
268- Counter : & dto.Counter {Value : float64Ptr (1 )},
269- }
97+ recorder := f .NewEventsEventRecorder (stopCh )
27098
271- err := framework .PollMetric (exporter .GetEventMetricFamilies , eventsTotal , expectedMetric )
272- if err != nil {
273- t .Fatal (err )
274- }
275- }
276-
277- func stringPtr (s string ) * string {
278- return & s
279- }
99+ event := framework .NewBasicEvent ()
100+ recorder .Eventf (& event .InvolvedObject , nil , event .Type , event .Reason , event .Action , event .Message )
280101
281- func float64Ptr (f float64 ) * float64 {
282- return & f
102+ f .AssertEventsTotalPresent (t , exporter , event , 1 )
283103}
0 commit comments