@@ -17,43 +17,30 @@ limitations under the License.
1717package event
1818
1919import (
20+ "fmt"
2021 "testing"
2122
2223 "github.com/google/go-cmp/cmp"
24+ "github.com/google/go-cmp/cmp/cmpopts"
2325 "k8s.io/apimachinery/pkg/runtime"
2426 "k8s.io/apimachinery/pkg/runtime/schema"
2527)
2628
27- type mockRecordRecorder struct {
29+ // mockKubeRecorder satisfies events.EventRecorder.
30+ type mockKubeRecorder struct {
2831 events []mockEvent
2932}
3033
3134type mockEvent struct {
3235 obj runtime.Object
33- annots map [string ]string
3436 typeStr string
3537 reason string
3638 msg string
3739}
3840
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 )})
41+ func (m * mockKubeRecorder ) Eventf (obj runtime.Object , _ runtime.Object , eventtype , reason , _ , note string , args ... interface {}) {
42+ msg := fmt .Sprintf (note , args ... )
43+ m .events = append (m .events , mockEvent {obj : obj , typeStr : eventtype , reason : reason , msg : msg })
5744}
5845
5946type mockObj struct {}
@@ -128,73 +115,56 @@ func TestSliceMap(t *testing.T) {
128115 }
129116}
130117
131- func TestAPIRecorderWithAnnotationsFilterFns (t * testing.T ) {
132- filterCalled := false
133- filter := func (obj runtime.Object , e Event ) bool {
134- filterCalled = true
135- return false
118+ func TestAPIRecorderEvent (t * testing.T ) {
119+ mr := & mockKubeRecorder {}
120+ rec := NewAPIRecorder (mr )
121+
122+ rec .Event (& mockObj {}, Normal ("testReason" , "test message" ))
123+
124+ want := mockEvent {typeStr : "Normal" , reason : "testReason" , msg : "test message" }
125+ if diff := cmp .Diff (want , mr .events [0 ], cmp .AllowUnexported (mockEvent {}), cmpopts .IgnoreFields (mockEvent {}, "obj" )); diff != "" {
126+ t .Errorf ("unexpected event: -want, +got:\n %s" , diff )
136127 }
128+ }
137129
138- mr := & mockRecordRecorder {}
130+ func TestAPIRecorderFilter (t * testing.T ) {
131+ mr := & mockKubeRecorder {}
132+ filter := func (_ runtime.Object , _ Event ) bool { return true }
139133 rec := NewAPIRecorder (mr , filter )
140- _ = rec .WithAnnotations ("key" , "val" )
141134
142- rec .Event (& mockObj {}, Normal ("test " , "msg " ))
135+ rec .Event (& mockObj {}, Normal ("testReason " , "test message " ))
143136
144- if ! filterCalled {
145- t .Error ( "filter function was not preserved after WithAnnotations" )
137+ if diff := cmp . Diff ( 0 , len ( mr . events )); diff != "" {
138+ t .Errorf ( "expected no events, got %d: %s" , len ( mr . events ), diff )
146139 }
147140}
148141
149- func TestEventsRecorderWithAnnotationsFilterFns (t * testing.T ) {
142+ func TestAPIRecorderWithAnnotationsPreservesFilterFns (t * testing.T ) {
150143 filterCalled := false
151- filter := func (obj runtime.Object , e Event ) bool {
144+ filter := func (_ runtime.Object , _ Event ) bool {
152145 filterCalled = true
153146 return false
154147 }
155148
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 )
170-
171- rec .Event (& mockObj {}, Normal ("testReason" , "test message" ))
149+ mr := & mockKubeRecorder {}
150+ rec := NewAPIRecorder (mr , filter )
151+ derived := rec .WithAnnotations ("key" , "val" )
172152
173- if len (mr .events ) != 1 {
174- t .Fatalf ("expected 1 event, got %d" , len (mr .events ))
175- }
153+ derived .Event (& mockObj {}, Normal ("test" , "msg" ))
176154
177- if mr .events [0 ].reason != "testReason" {
178- t .Errorf ("expected reason 'testReason', got %q" , mr .events [0 ].reason )
179- }
180- if mr .events [0 ].msg != "test message" {
181- t .Errorf ("expected message 'test message', got %q" , mr .events [0 ].msg )
182- }
183- if mr .events [0 ].typeStr != "Normal" {
184- t .Errorf ("expected type 'Normal', got %q" , mr .events [0 ].typeStr )
155+ if diff := cmp .Diff (true , filterCalled ); diff != "" {
156+ t .Errorf ("filter function was not preserved after WithAnnotations: %s" , diff )
185157 }
186158}
187159
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 )
194-
195- rec .Event (& mockObj {}, Normal ("testReason" , "test message" ))
160+ func TestAPIRecorderWithAnnotationsPreservesExistingAnnotations (t * testing.T ) {
161+ mr := & mockKubeRecorder {}
162+ rec := NewAPIRecorder (mr )
163+ r1 := rec .WithAnnotations ("k1" , "v1" ).(* APIRecorder )
164+ r2 := r1 .WithAnnotations ("k2" , "v2" ).(* APIRecorder )
196165
197- if len (mr .events ) != 0 {
198- t .Errorf ("expected event to be filtered, got %d events" , len (mr .events ))
166+ want := map [string ]string {"k1" : "v1" , "k2" : "v2" }
167+ if diff := cmp .Diff (want , r2 .annotations ); diff != "" {
168+ t .Errorf ("annotations not preserved correctly: -want, +got:\n %s" , diff )
199169 }
200170}
0 commit comments