mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #88372 from mattjmcnaughton/mattjmcnaughton/support-injecting-errors-fake-image-manager
Support injecting errors for `FakeImageService`
This commit is contained in:
commit
8d7a8f647a
@ -30,6 +30,7 @@ type FakeImageService struct {
|
|||||||
|
|
||||||
FakeImageSize uint64
|
FakeImageSize uint64
|
||||||
Called []string
|
Called []string
|
||||||
|
Errors map[string][]error
|
||||||
Images map[string]*runtimeapi.Image
|
Images map[string]*runtimeapi.Image
|
||||||
|
|
||||||
pulledImages []*pulledImage
|
pulledImages []*pulledImage
|
||||||
@ -87,11 +88,34 @@ func stringInSlice(s string, list []string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *FakeImageService) InjectError(f string, err error) {
|
||||||
|
r.Lock()
|
||||||
|
defer r.Unlock()
|
||||||
|
r.Errors[f] = append(r.Errors[f], err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// caller of popError must grab a lock.
|
||||||
|
func (r *FakeImageService) popError(f string) error {
|
||||||
|
if r.Errors == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
errs := r.Errors[f]
|
||||||
|
if len(errs) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
err, errs := errs[0], errs[1:]
|
||||||
|
r.Errors[f] = errs
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (r *FakeImageService) ListImages(filter *runtimeapi.ImageFilter) ([]*runtimeapi.Image, error) {
|
func (r *FakeImageService) ListImages(filter *runtimeapi.ImageFilter) ([]*runtimeapi.Image, error) {
|
||||||
r.Lock()
|
r.Lock()
|
||||||
defer r.Unlock()
|
defer r.Unlock()
|
||||||
|
|
||||||
r.Called = append(r.Called, "ListImages")
|
r.Called = append(r.Called, "ListImages")
|
||||||
|
if err := r.popError("ListImages"); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
images := make([]*runtimeapi.Image, 0)
|
images := make([]*runtimeapi.Image, 0)
|
||||||
for _, img := range r.Images {
|
for _, img := range r.Images {
|
||||||
@ -111,6 +135,9 @@ func (r *FakeImageService) ImageStatus(image *runtimeapi.ImageSpec) (*runtimeapi
|
|||||||
defer r.Unlock()
|
defer r.Unlock()
|
||||||
|
|
||||||
r.Called = append(r.Called, "ImageStatus")
|
r.Called = append(r.Called, "ImageStatus")
|
||||||
|
if err := r.popError("ImageStatus"); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return r.Images[image.Image], nil
|
return r.Images[image.Image], nil
|
||||||
}
|
}
|
||||||
@ -120,6 +147,9 @@ func (r *FakeImageService) PullImage(image *runtimeapi.ImageSpec, auth *runtimea
|
|||||||
defer r.Unlock()
|
defer r.Unlock()
|
||||||
|
|
||||||
r.Called = append(r.Called, "PullImage")
|
r.Called = append(r.Called, "PullImage")
|
||||||
|
if err := r.popError("PullImage"); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
r.pulledImages = append(r.pulledImages, &pulledImage{imageSpec: image, authConfig: auth})
|
r.pulledImages = append(r.pulledImages, &pulledImage{imageSpec: image, authConfig: auth})
|
||||||
// ImageID should be randomized for real container runtime, but here just use
|
// ImageID should be randomized for real container runtime, but here just use
|
||||||
@ -137,6 +167,9 @@ func (r *FakeImageService) RemoveImage(image *runtimeapi.ImageSpec) error {
|
|||||||
defer r.Unlock()
|
defer r.Unlock()
|
||||||
|
|
||||||
r.Called = append(r.Called, "RemoveImage")
|
r.Called = append(r.Called, "RemoveImage")
|
||||||
|
if err := r.popError("RemoveImage"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// Remove the image
|
// Remove the image
|
||||||
delete(r.Images, image.Image)
|
delete(r.Images, image.Image)
|
||||||
@ -150,6 +183,9 @@ func (r *FakeImageService) ImageFsInfo() ([]*runtimeapi.FilesystemUsage, error)
|
|||||||
defer r.Unlock()
|
defer r.Unlock()
|
||||||
|
|
||||||
r.Called = append(r.Called, "ImageFsInfo")
|
r.Called = append(r.Called, "ImageFsInfo")
|
||||||
|
if err := r.popError("ImageFsInfo"); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return r.FakeFilesystemUsage, nil
|
return r.FakeFilesystemUsage, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user