Skip to content

Commit 7061ddd

Browse files
authored
Merge pull request kubernetes#88521 from mattjmcnaughton/mattjmcnaughton/add-error-testing-image-service
Add error path testing to image handling by `kubeGenericRuntimeManager`
2 parents 6747678 + f215096 commit 7061ddd

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

pkg/kubelet/kuberuntime/kuberuntime_image_test.go

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package kuberuntime
1818

1919
import (
2020
"encoding/json"
21+
"fmt"
2122
"testing"
2223

2324
"github.com/stretchr/testify/assert"
@@ -44,6 +45,20 @@ func TestPullImage(t *testing.T) {
4445
assert.Equal(t, images[0].RepoTags, []string{"busybox"})
4546
}
4647

48+
func TestPullImageWithError(t *testing.T) {
49+
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
50+
assert.NoError(t, err)
51+
52+
fakeImageService.InjectError("PullImage", fmt.Errorf("test-error"))
53+
imageRef, err := fakeManager.PullImage(kubecontainer.ImageSpec{Image: "busybox"}, nil, nil)
54+
assert.Error(t, err)
55+
assert.Equal(t, "", imageRef)
56+
57+
images, err := fakeManager.ListImages()
58+
assert.NoError(t, err)
59+
assert.Equal(t, 0, len(images))
60+
}
61+
4762
func TestListImages(t *testing.T) {
4863
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
4964
assert.NoError(t, err)
@@ -62,6 +77,17 @@ func TestListImages(t *testing.T) {
6277
assert.Equal(t, expected.List(), actual.List())
6378
}
6479

80+
func TestListImagesWithError(t *testing.T) {
81+
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
82+
assert.NoError(t, err)
83+
84+
fakeImageService.InjectError("ListImages", fmt.Errorf("test-failure"))
85+
86+
actualImages, err := fakeManager.ListImages()
87+
assert.Error(t, err)
88+
assert.Nil(t, actualImages)
89+
}
90+
6591
func TestGetImageRef(t *testing.T) {
6692
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
6793
assert.NoError(t, err)
@@ -73,6 +99,32 @@ func TestGetImageRef(t *testing.T) {
7399
assert.Equal(t, image, imageRef)
74100
}
75101

102+
func TestGetImageRefImageNotAvailableLocally(t *testing.T) {
103+
_, _, fakeManager, err := createTestRuntimeManager()
104+
assert.NoError(t, err)
105+
106+
image := "busybox"
107+
108+
imageRef, err := fakeManager.GetImageRef(kubecontainer.ImageSpec{Image: image})
109+
assert.NoError(t, err)
110+
111+
imageNotAvailableLocallyRef := ""
112+
assert.Equal(t, imageNotAvailableLocallyRef, imageRef)
113+
}
114+
115+
func TestGetImageRefWithError(t *testing.T) {
116+
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
117+
assert.NoError(t, err)
118+
119+
image := "busybox"
120+
121+
fakeImageService.InjectError("ImageStatus", fmt.Errorf("test-error"))
122+
123+
imageRef, err := fakeManager.GetImageRef(kubecontainer.ImageSpec{Image: image})
124+
assert.Error(t, err)
125+
assert.Equal(t, "", imageRef)
126+
}
127+
76128
func TestRemoveImage(t *testing.T) {
77129
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
78130
assert.NoError(t, err)
@@ -86,6 +138,29 @@ func TestRemoveImage(t *testing.T) {
86138
assert.Equal(t, 0, len(fakeImageService.Images))
87139
}
88140

141+
func TestRemoveImageNoOpIfImageNotLocal(t *testing.T) {
142+
_, _, fakeManager, err := createTestRuntimeManager()
143+
assert.NoError(t, err)
144+
145+
err = fakeManager.RemoveImage(kubecontainer.ImageSpec{Image: "busybox"})
146+
assert.NoError(t, err)
147+
}
148+
149+
func TestRemoveImageWithError(t *testing.T) {
150+
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
151+
assert.NoError(t, err)
152+
153+
_, err = fakeManager.PullImage(kubecontainer.ImageSpec{Image: "busybox"}, nil, nil)
154+
assert.NoError(t, err)
155+
assert.Equal(t, 1, len(fakeImageService.Images))
156+
157+
fakeImageService.InjectError("RemoveImage", fmt.Errorf("test-failure"))
158+
159+
err = fakeManager.RemoveImage(kubecontainer.ImageSpec{Image: "busybox"})
160+
assert.Error(t, err)
161+
assert.Equal(t, 1, len(fakeImageService.Images))
162+
}
163+
89164
func TestImageStats(t *testing.T) {
90165
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
91166
assert.NoError(t, err)
@@ -101,6 +176,17 @@ func TestImageStats(t *testing.T) {
101176
assert.Equal(t, expectedStats, actualStats)
102177
}
103178

179+
func TestImageStatsWithError(t *testing.T) {
180+
_, fakeImageService, fakeManager, err := createTestRuntimeManager()
181+
assert.NoError(t, err)
182+
183+
fakeImageService.InjectError("ListImages", fmt.Errorf("test-failure"))
184+
185+
actualImageStats, err := fakeManager.ImageStats()
186+
assert.Error(t, err)
187+
assert.Nil(t, actualImageStats)
188+
}
189+
104190
func TestPullWithSecrets(t *testing.T) {
105191
// auth value is equivalent to: "username":"passed-user","password":"passed-password"
106192
dockerCfg := map[string]map[string]string{"index.docker.io/v1/": {"email": "passed-email", "auth": "cGFzc2VkLXVzZXI6cGFzc2VkLXBhc3N3b3Jk"}}

0 commit comments

Comments
 (0)