Skip to content

Commit cb44046

Browse files
committed
test: add status mock functions && fix log typo
1 parent ba9fcfc commit cb44046

File tree

3 files changed

+178
-8
lines changed

3 files changed

+178
-8
lines changed

controllers/serviceconfig/controller.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ type Reconciler struct {
5252

5353
// Reconcile ...
5454
func (r *Reconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
55-
klog.Infof("Reconciling ConfiguredService: %s/%s", req.Namespace, req.Name)
55+
klog.Infof("Reconciling ServiceConfig: %s/%s", req.Namespace, req.Name)
5656
ctx := context.TODO()
5757

5858
// Fetch the MeshConfig
@@ -63,7 +63,7 @@ func (r *Reconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
6363
return ctrl.Result{}, err
6464
}
6565

66-
// Fetch the ConfiguredService instance
66+
// Fetch the ServiceConfig instance
6767
instance := &meshv1alpha1.ServiceConfig{}
6868
err = r.Get(ctx, req.NamespacedName, instance)
6969
if err != nil {
@@ -86,10 +86,10 @@ func (r *Reconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
8686
}
8787

8888
// Update Status
89-
klog.Infof("Update ConfiguredService[%s/%s] status...", req.Namespace, req.Name)
89+
klog.Infof("Update ServiceConfig[%s/%s] status...", req.Namespace, req.Name)
9090
err = r.updateStatus(ctx, req, instance)
9191
if err != nil {
92-
klog.Errorf("%s/%s update ConfiguredService failed, err: %+v", req.Namespace, req.Name, err)
92+
klog.Errorf("%s/%s update ServiceConfig status failed, err: %+v", req.Namespace, req.Name, err)
9393
return ctrl.Result{}, err
9494
}
9595

@@ -120,19 +120,19 @@ func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error {
120120
For(&meshv1alpha1.ServiceConfig{}).
121121
Watches(
122122
&source.Kind{Type: &networkingv1beta1.WorkloadEntry{}},
123-
&handler.EnqueueRequestForOwner{IsController: true, OwnerType: &meshv1alpha1.ConfiguredService{}},
123+
&handler.EnqueueRequestForOwner{IsController: true, OwnerType: &meshv1alpha1.ServiceConfig{}},
124124
).
125125
Watches(
126126
&source.Kind{Type: &networkingv1beta1.VirtualService{}},
127-
&handler.EnqueueRequestForOwner{IsController: true, OwnerType: &meshv1alpha1.ConfiguredService{}},
127+
&handler.EnqueueRequestForOwner{IsController: true, OwnerType: &meshv1alpha1.ServiceConfig{}},
128128
).
129129
Watches(
130130
&source.Kind{Type: &networkingv1beta1.DestinationRule{}},
131-
&handler.EnqueueRequestForOwner{IsController: true, OwnerType: &meshv1alpha1.ConfiguredService{}},
131+
&handler.EnqueueRequestForOwner{IsController: true, OwnerType: &meshv1alpha1.ServiceConfig{}},
132132
).
133133
Watches(
134134
&source.Kind{Type: &networkingv1beta1.ServiceEntry{}},
135-
&handler.EnqueueRequestForOwner{IsController: true, OwnerType: &meshv1alpha1.ConfiguredService{}},
135+
&handler.EnqueueRequestForOwner{IsController: true, OwnerType: &meshv1alpha1.ServiceConfig{}},
136136
).
137137
Complete(r)
138138
}

controllers/serviceconfig/controller_test.go

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
. "github.com/onsi/gomega"
99
meshv1alpha1 "github.com/symcn/mesh-operator/api/v1alpha1"
1010
. "github.com/symcn/mesh-operator/test"
11+
networkingv1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1"
1112
"k8s.io/apimachinery/pkg/apis/meta/v1"
1213
"k8s.io/apimachinery/pkg/types"
1314
ctrl "sigs.k8s.io/controller-runtime"
@@ -21,6 +22,7 @@ var _ = Describe("Controller", func() {
2122
var (
2223
mockCtrl *gomock.Controller
2324
mockClient *MockClient
25+
mockStatusWriter *MockStatusWriter
2426
errReq ctrl.Request
2527
normalReq ctrl.Request
2628
normalServiceConfig *meshv1alpha1.ServiceConfig
@@ -169,4 +171,98 @@ var _ = Describe("Controller", func() {
169171
Expect(err.Error()).To(Equal("get serviceconfig error"))
170172
})
171173
})
174+
175+
Describe("test reconcile used mock client - list destinationrules error", func() {
176+
BeforeEach(func() {
177+
mockCtrl = gomock.NewController(GinkgoT())
178+
mockClient = NewMockClient(mockCtrl)
179+
mockClient.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
180+
mockClient.EXPECT().
181+
List(gomock.Any(), gomock.Not(&networkingv1beta1.DestinationRuleList{}), gomock.Any()).
182+
Return(nil).AnyTimes()
183+
mockClient.EXPECT().
184+
List(gomock.Any(), gomock.Eq(&networkingv1beta1.DestinationRuleList{}), gomock.Any()).
185+
Return(errors.New("list destinationrules error")).AnyTimes()
186+
}, timeout)
187+
188+
AfterEach(func() {
189+
mockCtrl.Finish()
190+
}, timeout)
191+
192+
It("error occurred when list destinationrules", func() {
193+
r := Reconciler{
194+
Client: mockClient,
195+
Log: nil,
196+
Scheme: getFakeScheme(),
197+
Opt: testOpt,
198+
MeshConfig: getTestMeshConfig(),
199+
}
200+
result, err := r.Reconcile(errReq)
201+
Expect(result).To(Equal(reconcile.Result{}))
202+
Expect(err).To(HaveOccurred())
203+
Expect(err.Error()).To(Equal("list destinationrules error"))
204+
})
205+
})
206+
207+
Describe("test reconcile used mock client - list virtualservice error", func() {
208+
BeforeEach(func() {
209+
mockCtrl = gomock.NewController(GinkgoT())
210+
mockClient = NewMockClient(mockCtrl)
211+
mockClient.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
212+
mockClient.EXPECT().
213+
List(gomock.Any(), gomock.Not(&networkingv1beta1.VirtualServiceList{}), gomock.Any()).
214+
Return(nil).AnyTimes()
215+
mockClient.EXPECT().
216+
List(gomock.Any(), gomock.Eq(&networkingv1beta1.VirtualServiceList{}), gomock.Any()).
217+
Return(errors.New("list virtualservice error")).AnyTimes()
218+
}, timeout)
219+
220+
AfterEach(func() {
221+
mockCtrl.Finish()
222+
}, timeout)
223+
224+
It("error occurred when list virtualservice ", func() {
225+
r := Reconciler{
226+
Client: mockClient,
227+
Log: nil,
228+
Scheme: getFakeScheme(),
229+
Opt: testOpt,
230+
MeshConfig: getTestMeshConfig(),
231+
}
232+
result, err := r.Reconcile(errReq)
233+
Expect(result).To(Equal(reconcile.Result{}))
234+
Expect(err).To(HaveOccurred())
235+
Expect(err.Error()).To(Equal("list virtualservice error"))
236+
})
237+
})
238+
239+
Describe("test reconcile used mock client - update status error", func() {
240+
BeforeEach(func() {
241+
mockCtrl = gomock.NewController(GinkgoT())
242+
mockClient = NewMockClient(mockCtrl)
243+
mockStatusWriter = NewMockStatusWriter(mockCtrl)
244+
mockClient.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
245+
mockClient.EXPECT().List(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
246+
mockClient.EXPECT().Status().Return(mockStatusWriter).AnyTimes()
247+
mockStatusWriter.EXPECT().Update(gomock.Any(), gomock.Any()).Return(errors.New("update status error"))
248+
}, timeout)
249+
250+
AfterEach(func() {
251+
mockCtrl.Finish()
252+
}, timeout)
253+
254+
It("error occurred when update status", func() {
255+
r := Reconciler{
256+
Client: mockClient,
257+
Log: nil,
258+
Scheme: getFakeScheme(),
259+
Opt: testOpt,
260+
MeshConfig: getTestMeshConfig(),
261+
}
262+
result, err := r.Reconcile(errReq)
263+
Expect(result).To(Equal(reconcile.Result{}))
264+
Expect(err).To(HaveOccurred())
265+
Expect(err.Error()).To(Equal("update status error"))
266+
})
267+
})
172268
})

test/status_mock.go

Lines changed: 74 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)