@@ -24,36 +24,26 @@ import (
2424 "k8s.io/apimachinery/pkg/runtime/schema"
2525)
2626
27- type mockRecordRecorder struct {
27+ // mockKubeRecorder satisfies events.EventRecorder.
28+ type mockKubeRecorder struct {
2829 events []mockEvent
2930}
3031
3132type mockEvent struct {
3233 obj runtime.Object
33- annots map [string ]string
3434 typeStr string
3535 reason string
3636 msg string
3737}
3838
39- func (m * mockRecordRecorder ) Event (obj runtime.Object , eventtype , reason , message string ) {
40- m .events = append (m .events , mockEvent {obj : obj , typeStr : eventtype , reason : reason , msg : message })
41- }
42-
43- func (m * mockRecordRecorder ) Eventf (obj runtime.Object , related runtime.Object , eventtype , reason , action , note string , args ... interface {}) {
44- m .events = append (m .events , mockEvent {obj : obj , typeStr : eventtype , reason : reason , msg : args [0 ].(string )})
45- }
46-
47- func (m * mockRecordRecorder ) AnnotatedEventf (obj runtime.Object , annots map [string ]string , typeStr , reason , msg string , args ... interface {}) {
48- m .events = append (m .events , mockEvent {obj : obj , annots : annots , typeStr : typeStr , reason : reason , msg : args [0 ].(string )})
49- }
50-
51- type mockEventsRecorder struct {
52- events []mockEvent
53- }
54-
55- func (m * mockEventsRecorder ) Eventf (obj runtime.Object , related runtime.Object , eventtype , reason , action , note string , args ... interface {}) {
56- m .events = append (m .events , mockEvent {obj : obj , typeStr : eventtype , reason : reason , msg : args [0 ].(string )})
39+ func (m * mockKubeRecorder ) Eventf (obj runtime.Object , _ runtime.Object , eventtype , reason , _ , note string , args ... interface {}) {
40+ msg := note
41+ if len (args ) > 0 {
42+ if s , ok := args [0 ].(string ); ok {
43+ msg = s
44+ }
45+ }
46+ m .events = append (m .events , mockEvent {obj : obj , typeStr : eventtype , reason : reason , msg : msg })
5747}
5848
5949type mockObj struct {}
@@ -128,52 +118,15 @@ func TestSliceMap(t *testing.T) {
128118 }
129119}
130120
131- func TestAPIRecorderWithAnnotationsFilterFns (t * testing.T ) {
132- filterCalled := false
133- filter := func (obj runtime.Object , e Event ) bool {
134- filterCalled = true
135- return false
136- }
137-
138- mr := & mockRecordRecorder {}
139- rec := NewAPIRecorder (mr , filter )
140- _ = rec .WithAnnotations ("key" , "val" )
141-
142- rec .Event (& mockObj {}, Normal ("test" , "msg" ))
143-
144- if ! filterCalled {
145- t .Error ("filter function was not preserved after WithAnnotations" )
146- }
147- }
148-
149- func TestEventsRecorderWithAnnotationsFilterFns (t * testing.T ) {
150- filterCalled := false
151- filter := func (obj runtime.Object , e Event ) bool {
152- filterCalled = true
153- return false
154- }
155-
156- mr := & mockEventsRecorder {}
157- rec := NewEventsRecorder (mr , filter )
158- _ = rec .WithAnnotations ("key" , "val" )
159-
160- rec .Event (& mockObj {}, Normal ("test" , "msg" ))
161-
162- if ! filterCalled {
163- t .Error ("filter function was not preserved after WithAnnotations" )
164- }
165- }
166-
167- func TestEventsRecorderEvent (t * testing.T ) {
168- mr := & mockEventsRecorder {}
169- rec := NewEventsRecorder (mr )
121+ func TestAPIRecorderEvent (t * testing.T ) {
122+ mr := & mockKubeRecorder {}
123+ rec := NewAPIRecorder (mr )
170124
171125 rec .Event (& mockObj {}, Normal ("testReason" , "test message" ))
172126
173127 if len (mr .events ) != 1 {
174128 t .Fatalf ("expected 1 event, got %d" , len (mr .events ))
175129 }
176-
177130 if mr .events [0 ].reason != "testReason" {
178131 t .Errorf ("expected reason 'testReason', got %q" , mr .events [0 ].reason )
179132 }
@@ -185,16 +138,46 @@ func TestEventsRecorderEvent(t *testing.T) {
185138 }
186139}
187140
188- func TestEventsRecorderFilter (t * testing.T ) {
189- mr := & mockEventsRecorder {}
190- filter := func (obj runtime.Object , e Event ) bool {
191- return true
192- }
193- rec := NewEventsRecorder (mr , filter )
141+ func TestAPIRecorderFilter (t * testing.T ) {
142+ mr := & mockKubeRecorder {}
143+ filter := func (_ runtime.Object , _ Event ) bool { return true }
144+ rec := NewAPIRecorder (mr , filter )
194145
195146 rec .Event (& mockObj {}, Normal ("testReason" , "test message" ))
196147
197148 if len (mr .events ) != 0 {
198149 t .Errorf ("expected event to be filtered, got %d events" , len (mr .events ))
199150 }
200151}
152+
153+ func TestAPIRecorderWithAnnotationsPreservesFilterFns (t * testing.T ) {
154+ filterCalled := false
155+ filter := func (_ runtime.Object , _ Event ) bool {
156+ filterCalled = true
157+ return false
158+ }
159+
160+ mr := & mockKubeRecorder {}
161+ rec := NewAPIRecorder (mr , filter )
162+ derived := rec .WithAnnotations ("key" , "val" )
163+
164+ derived .Event (& mockObj {}, Normal ("test" , "msg" ))
165+
166+ if ! filterCalled {
167+ t .Error ("filter function was not preserved after WithAnnotations" )
168+ }
169+ }
170+
171+ func TestAPIRecorderWithAnnotationsPreservesExistingAnnotations (t * testing.T ) {
172+ mr := & mockKubeRecorder {}
173+ rec := NewAPIRecorder (mr )
174+ r1 := rec .WithAnnotations ("k1" , "v1" ).(* APIRecorder )
175+ r2 := r1 .WithAnnotations ("k2" , "v2" ).(* APIRecorder )
176+
177+ if r2 .annotations ["k1" ] != "v1" {
178+ t .Errorf ("expected k1=v1 to be preserved, got %q" , r2 .annotations ["k1" ])
179+ }
180+ if r2 .annotations ["k2" ] != "v2" {
181+ t .Errorf ("expected k2=v2 to be set, got %q" , r2 .annotations ["k2" ])
182+ }
183+ }
0 commit comments