Skip to content
This repository was archived by the owner on Dec 6, 2024. It is now read-only.

Commit b749a81

Browse files
committed
test: implemented tests for Events
Signed-off-by: Mateusz Urbanek <[email protected]>
1 parent 7f5fd16 commit b749a81

File tree

2 files changed

+99
-64
lines changed

2 files changed

+99
-64
lines changed

Diff for: container-object-storage-interface-controller/pkg/bucketclaim/bucketclaim.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func (b *BucketClaimListener) provisionBucketClaimOperation(ctx context.Context,
126126
bucketName = bucketClaim.Spec.ExistingBucketName
127127
bucket, err := b.buckets().Get(ctx, bucketName, metav1.GetOptions{})
128128
if kubeerrors.IsNotFound(err) {
129-
b.recordEvent(inputBucketClaim, v1.EventTypeWarning, events.FailedCreateBucket, "Bucket %v provided in the BucketClaim does not exist.", bucketName)
129+
b.recordEvent(inputBucketClaim, v1.EventTypeWarning, events.FailedCreateBucket, err.Error())
130130
return err
131131
} else if err != nil {
132132
klog.V(3).ErrorS(err, "Get Bucket with ExistingBucketName error", "name", bucketClaim.Spec.ExistingBucketName)
@@ -161,8 +161,8 @@ func (b *BucketClaimListener) provisionBucketClaimOperation(ctx context.Context,
161161

162162
bucketClass, err := b.bucketClasses().Get(ctx, bucketClassName, metav1.GetOptions{})
163163
if kubeerrors.IsNotFound(err) {
164-
b.recordEvent(inputBucketClaim, v1.EventTypeWarning, events.FailedCreateBucket, "BucketClass %v provided in the BucketClaim does not exist.", bucketClassName)
165-
return util.ErrInvalidBucketClass
164+
b.recordEvent(inputBucketClaim, v1.EventTypeWarning, events.FailedCreateBucket, err.Error())
165+
return err
166166
} else if err != nil {
167167
klog.V(3).ErrorS(err, "Get Bucketclass Error", "name", bucketClassName)
168168
return err

Diff for: container-object-storage-interface-controller/pkg/bucketclaim/bucketclaim_test.go

+96-61
Original file line numberDiff line numberDiff line change
@@ -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-
13685
func 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+
290325
func newEvent(eventType, reason, message string) string {
291326
return fmt.Sprintf("%s %s %s", eventType, reason, message)
292327
}

0 commit comments

Comments
 (0)