Skip to content

Commit

Permalink
Showing 2 changed files with 37 additions and 2 deletions.
3 changes: 2 additions & 1 deletion agent/engine/docker_image_manager.go
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@ import (
"context"
"fmt"
"sort"
"strings"
"sync"
"time"

@@ -537,7 +538,7 @@ func (imageManager *dockerImageManager) deleteImage(ctx context.Context, imageID
seelog.Infof("Removing Image: %s", imageID)
err := imageManager.client.RemoveImage(ctx, imageID, dockerclient.RemoveImageTimeout)
if err != nil {
if err.Error() == imageNotFoundForDeletionError {
if strings.Contains(err.Error(), imageNotFoundForDeletionError) {
seelog.Errorf("Image already removed from the instance: %v", err)
} else {
seelog.Errorf("Error removing Image %v - %v", imageID, err)
36 changes: 35 additions & 1 deletion agent/engine/docker_image_manager_test.go
Original file line number Diff line number Diff line change
@@ -1064,7 +1064,9 @@ func TestDeleteImage(t *testing.T) {
}
}

func TestDeleteImageNotFoundError(t *testing.T) {
// This test tests that we detect correctly in agent when the agent is trying to delete image that
// does not exist for older version of docker.
func TestDeleteImageNotFoundOldDockerMessageError(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
client := mock_dockerapi.NewMockDockerClient(ctrl)
@@ -1096,6 +1098,38 @@ func TestDeleteImageNotFoundError(t *testing.T) {
}
}

func TestDeleteImageNotFoundError(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
client := mock_dockerapi.NewMockDockerClient(ctrl)
imageManager := &dockerImageManager{client: client, state: dockerstate.NewTaskEngineState()}
imageManager.SetSaver(statemanager.NewNoopStateManager())
container := &apicontainer.Container{
Name: "testContainer",
Image: "testContainerImage",
}
imageInspected := &types.ImageInspect{
ID: "sha256:qwerty",
}
client.EXPECT().InspectImage(container.Image).Return(imageInspected, nil).AnyTimes()
err := imageManager.RecordContainerReference(container)
if err != nil {
t.Error("Error in adding container to an existing image state")
}
imageState, _ := imageManager.getImageState(imageInspected.ID)
client.EXPECT().RemoveImage(gomock.Any(), container.Image, dockerclient.RemoveImageTimeout).Return(
errors.New("no such image: " + container.Image))
ctx, cancel := context.WithCancel(context.TODO())
defer cancel()
imageManager.deleteImage(ctx, container.Image, imageState)
if len(imageState.Image.Names) != 0 {
t.Error("Error removing Image name from image state")
}
if len(imageManager.getAllImageStates()) != 0 {
t.Error("Error removing image state from image manager")
}
}

func TestDeleteImageOtherRemoveImageErrors(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()

0 comments on commit 243ddda

Please sign in to comment.