Skip to content

Commit 40225a7

Browse files
authored
Merge pull request kubernetes#125887 from fxierh/fakediscovery-fix
[client-go] Enable FakeDiscovery client to simulate errors by fixing error handling
2 parents 08e1cea + 33557a2 commit 40225a7

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

staging/src/k8s.io/client-go/discovery/fake/discovery.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*me
4747
Verb: "get",
4848
Resource: schema.GroupVersionResource{Resource: "resource"},
4949
}
50-
c.Invokes(action, nil)
50+
if _, err := c.Invokes(action, nil); err != nil {
51+
return nil, err
52+
}
5153
for _, resourceList := range c.Resources {
5254
if resourceList.GroupVersion == groupVersion {
5355
return resourceList, nil
@@ -77,7 +79,9 @@ func (c *FakeDiscovery) ServerGroupsAndResources() ([]*metav1.APIGroup, []*metav
7779
Verb: "get",
7880
Resource: schema.GroupVersionResource{Resource: "resource"},
7981
}
80-
c.Invokes(action, nil)
82+
if _, err = c.Invokes(action, nil); err != nil {
83+
return resultGroups, c.Resources, err
84+
}
8185
return resultGroups, c.Resources, nil
8286
}
8387

@@ -100,7 +104,9 @@ func (c *FakeDiscovery) ServerGroups() (*metav1.APIGroupList, error) {
100104
Verb: "get",
101105
Resource: schema.GroupVersionResource{Resource: "group"},
102106
}
103-
c.Invokes(action, nil)
107+
if _, err := c.Invokes(action, nil); err != nil {
108+
return nil, err
109+
}
104110

105111
groups := map[string]*metav1.APIGroup{}
106112

staging/src/k8s.io/client-go/discovery/fake/discovery_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,48 @@ func TestFakingServerVersionWithError(t *testing.T) {
6363
t.Fatal("ServerVersion should return expected error, returned different error instead")
6464
}
6565
}
66+
67+
func TestFakingServerResourcesForGroupVersionWithError(t *testing.T) {
68+
expectedError := errors.New("an error occurred")
69+
fakeClient := fakeclientset.NewClientset()
70+
fakeClient.Discovery().(*fakediscovery.FakeDiscovery).PrependReactor("*", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) {
71+
return true, nil, expectedError
72+
})
73+
74+
result, err := fakeClient.Discovery().ServerResourcesForGroupVersion("dummy.group.io/v1beta2")
75+
if result != nil {
76+
t.Errorf(`expect result to be nil but got "%v" instead`, result)
77+
}
78+
if !errors.Is(err, expectedError) {
79+
t.Errorf(`expect error to be "%v" but got "%v" instead`, expectedError, err)
80+
}
81+
}
82+
83+
func TestFakingServerGroupsWithError(t *testing.T) {
84+
expectedError := errors.New("an error occurred")
85+
fakeClient := fakeclientset.NewClientset()
86+
fakeClient.Discovery().(*fakediscovery.FakeDiscovery).PrependReactor("*", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) {
87+
return true, nil, expectedError
88+
})
89+
90+
result, err := fakeClient.Discovery().ServerGroups()
91+
if result != nil {
92+
t.Errorf(`expect result to be nil but got "%v" instead`, result)
93+
}
94+
if !errors.Is(err, expectedError) {
95+
t.Errorf(`expect error to be "%v" but got "%v" instead`, expectedError, err)
96+
}
97+
}
98+
99+
func TestFakingServerGroupsAndResourcesWithError(t *testing.T) {
100+
expectedError := errors.New("an error occurred")
101+
fakeClient := fakeclientset.NewClientset()
102+
fakeClient.Discovery().(*fakediscovery.FakeDiscovery).PrependReactor("get", "resource", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) {
103+
return true, nil, expectedError
104+
})
105+
106+
_, _, err := fakeClient.Discovery().ServerGroupsAndResources()
107+
if !errors.Is(err, expectedError) {
108+
t.Errorf(`expect error to be "%v" but got "%v" instead`, expectedError, err)
109+
}
110+
}

0 commit comments

Comments
 (0)