@@ -6,12 +6,13 @@ import (
66 "testing"
77
88 v1 "k8s.io/api/core/v1"
9+ kubeerrors "k8s.io/apimachinery/pkg/api/errors"
910 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10- "k8s.io/client-go/kubernetes/fake"
11+ fakekubeclientset "k8s.io/client-go/kubernetes/fake"
1112 "k8s.io/client-go/tools/record"
12-
13+ "sigs.k8s.io/container-object-storage-interface-api/apis/objectstorage/v1alpha1"
1314 types "sigs.k8s.io/container-object-storage-interface-api/apis/objectstorage/v1alpha1"
14- bucketclientset "sigs.k8s.io/container-object-storage-interface-api/client/clientset/versioned/fake"
15+ fakebucketclientset "sigs.k8s.io/container-object-storage-interface-api/client/clientset/versioned/fake"
1516 "sigs.k8s.io/container-object-storage-interface-api/controller/events"
1617 "sigs.k8s.io/container-object-storage-interface-controller/pkg/util"
1718)
@@ -81,64 +82,12 @@ func TestAddBRIdempotency(t *testing.T) {
8182 runCreateBucketIdempotency (t , "addWithMultipleBR" )
8283}
8384
84- // Test recording events
85- func TestRecordEvents (t * testing.T ) {
86- t .Parallel ()
87-
88- ctx := context .TODO ()
89-
90- for _ , tc := range []struct {
91- name string
92- expectedEvent string
93- eventTrigger func (context.Context , * BucketClaimListener )
94- }{
95- {
96- name : "" ,
97- expectedEvent : newEvent (
98- v1 .EventTypeWarning ,
99- events .FailedCreateBucket ,
100- "" ),
101- eventTrigger : func (ctx context.Context , bcl * BucketClaimListener ) {
102- panic ("unimplemented" )
103- },
104- },
105- {
106- name : "" ,
107- expectedEvent : newEvent (
108- v1 .EventTypeWarning ,
109- events .FailedCreateBucket ,
110- "" ),
111- eventTrigger : func (ctx context.Context , bcl * BucketClaimListener ) {
112- panic ("unimplemented" )
113- },
114- },
115- } {
116- tc := tc
117-
118- t .Run (tc .name , func (t * testing.T ) {
119- t .Parallel ()
120-
121- recorder := record .NewFakeRecorder (1 )
122-
123- bcl := & BucketClaimListener {}
124- bcl .InitializeEventRecorder (recorder )
125-
126- tc .eventTrigger (ctx , bcl )
127-
128- event := <- recorder .Events
129- if event != tc .expectedEvent {
130- t .Errorf ("Expected %s \n got %s" , tc .expectedEvent , event )
131- }
132- })
133- }
134- }
135-
13685func runCreateBucket (t * testing.T , name string ) {
13786 ctx , cancel := context .WithCancel (context .Background ())
13887 defer cancel ()
13988
140- client := bucketclientset .NewSimpleClientset ()
141- kubeClient := fake .NewSimpleClientset ()
89+ client := fakebucketclientset .NewSimpleClientset ()
90+ kubeClient := fakekubeclientset .NewSimpleClientset ()
14291 eventRecorder := record .NewFakeRecorder (3 )
14392
14493 listener := NewBucketClaimListener ()
@@ -182,8 +131,8 @@ func runCreateBucketWithMultipleBR(t *testing.T, name string) {
182131 ctx , cancel := context .WithCancel (context .Background ())
183132 defer cancel ()
184133
185- client := bucketclientset .NewSimpleClientset ()
186- kubeClient := fake .NewSimpleClientset ()
134+ client := fakebucketclientset .NewSimpleClientset ()
135+ kubeClient := fakekubeclientset .NewSimpleClientset ()
187136 eventRecorder := record .NewFakeRecorder (3 )
188137
189138 listener := NewBucketClaimListener ()
@@ -238,8 +187,8 @@ func runCreateBucketIdempotency(t *testing.T, name string) {
238187 ctx , cancel := context .WithCancel (context .Background ())
239188 defer cancel ()
240189
241- client := bucketclientset .NewSimpleClientset ()
242- kubeClient := fake .NewSimpleClientset ()
190+ client := fakebucketclientset .NewSimpleClientset ()
191+ kubeClient := fakekubeclientset .NewSimpleClientset ()
243192 eventRecorder := record .NewFakeRecorder (3 )
244193
245194 listener := NewBucketClaimListener ()
@@ -287,6 +236,92 @@ func runCreateBucketIdempotency(t *testing.T, name string) {
287236 }
288237}
289238
239+ // Test recording events
240+ func TestRecordEvents (t * testing.T ) {
241+ t .Parallel ()
242+
243+ defaultBucketClaim := & v1alpha1.BucketClaim {
244+ ObjectMeta : metav1.ObjectMeta {
245+ Name : "test-bucketClaim" ,
246+ Namespace : "test-ns" ,
247+ },
248+ Spec : v1alpha1.BucketClaimSpec {
249+ BucketClassName : "test-bucketClass" ,
250+ },
251+ }
252+
253+ for _ , tc := range []struct {
254+ name string
255+ expectedEvent string
256+ eventTrigger func (* testing.T , * BucketClaimListener )
257+ }{
258+ {
259+ name : "ExistingBucketNotFound" ,
260+ expectedEvent : newEvent (
261+ v1 .EventTypeWarning ,
262+ events .FailedCreateBucket ,
263+ "buckets.objectstorage.k8s.io \" existing-bucket\" not found" ),
264+ eventTrigger : func (t * testing.T , bcl * BucketClaimListener ) {
265+ ctx := context .TODO ()
266+
267+ bucketClaim := defaultBucketClaim .DeepCopy ()
268+ bucketClaim .Spec .ExistingBucketName = "existing-bucket"
269+
270+ err := bcl .Add (ctx , bucketClaim )
271+ if ! kubeerrors .IsNotFound (err ) {
272+ t .Errorf ("expected Not Found error got %v" , err )
273+ }
274+ },
275+ },
276+ {
277+ name : "BucketClassNotFound" ,
278+ expectedEvent : newEvent (
279+ v1 .EventTypeWarning ,
280+ events .FailedCreateBucket ,
281+ "bucketclasses.objectstorage.k8s.io \" test-bucketClass\" not found" ),
282+ eventTrigger : func (t * testing.T , listener * BucketClaimListener ) {
283+ ctx := context .TODO ()
284+ bucketClaim := defaultBucketClaim .DeepCopy ()
285+
286+ err := listener .Add (ctx , bucketClaim )
287+ if ! kubeerrors .IsNotFound (err ) {
288+ t .Errorf ("expected Not Found error got %v" , err )
289+ }
290+ },
291+ },
292+ } {
293+ tc := tc
294+
295+ t .Run (tc .name , func (t * testing.T ) {
296+ t .Parallel ()
297+
298+ client := fakebucketclientset .NewSimpleClientset ()
299+ kubeClient := fakekubeclientset .NewSimpleClientset ()
300+ eventRecorder := record .NewFakeRecorder (1 )
301+
302+ listener := NewBucketClaimListener ()
303+ listener .InitializeKubeClient (kubeClient )
304+ listener .InitializeBucketClient (client )
305+ listener .InitializeEventRecorder (eventRecorder )
306+
307+ tc .eventTrigger (t , listener )
308+
309+ select {
310+ case event , ok := <- eventRecorder .Events :
311+ if ok {
312+ if event != tc .expectedEvent {
313+ t .Errorf ("Expected %s \n got %s" , tc .expectedEvent , event )
314+ }
315+ } else {
316+ t .Error ("channel closed, no event" )
317+ }
318+ default :
319+ t .Errorf ("no event after trigger" )
320+ }
321+ })
322+ }
323+ }
324+
290325func newEvent (eventType , reason , message string ) string {
291326 return fmt .Sprintf ("%s %s %s" , eventType , reason , message )
292327}
0 commit comments