Improve testing of never pull and always pull scenarios

Signed-off-by: Zander Mackie <zmackie@gmail.com>
This commit is contained in:
Zander Mackie 2019-03-01 07:00:25 -05:00 committed by Brian Goff
parent ec56136d61
commit ffba7659cc
1 changed files with 25 additions and 13 deletions

View File

@ -128,6 +128,7 @@ func TestCreateContainerPullsImageIfMissing(t *testing.T) {
func TestCreateContainerNeverPullsImage(t *testing.T) { func TestCreateContainerNeverPullsImage(t *testing.T) {
imageName := "does-not-exist-locally" imageName := "does-not-exist-locally"
responseCounter := 0 responseCounter := 0
pullCounter := 0
client := &fakeClient{ client := &fakeClient{
createContainerFunc: func( createContainerFunc: func(
@ -145,7 +146,13 @@ func TestCreateContainerNeverPullsImage(t *testing.T) {
} }
}, },
imageCreateFunc: func(parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) { imageCreateFunc: func(parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) {
return ioutil.NopCloser(strings.NewReader("")), nil defer func() { pullCounter++ }()
switch pullCounter {
case 0:
return ioutil.NopCloser(strings.NewReader("")), nil
default:
return nil, errors.New("unexpected pull")
}
}, },
infoFunc: func() (types.Info, error) { infoFunc: func() (types.Info, error) {
return types.Info{IndexServerAddress: "http://indexserver"}, nil return types.Info{IndexServerAddress: "http://indexserver"}, nil
@ -169,7 +176,9 @@ func TestCreateContainerNeverPullsImage(t *testing.T) {
func TestCreateContainerAlwaysPullsImage(t *testing.T) { func TestCreateContainerAlwaysPullsImage(t *testing.T) {
imageName := "does-not-exist-locally" imageName := "does-not-exist-locally"
pullTries := 7
responseCounter := 0 responseCounter := 0
pullCounter := 0
containerID := "abcdef" containerID := "abcdef"
client := &fakeClient{ client := &fakeClient{
@ -181,13 +190,12 @@ func TestCreateContainerAlwaysPullsImage(t *testing.T) {
) (container.ContainerCreateCreatedBody, error) { ) (container.ContainerCreateCreatedBody, error) {
defer func() { responseCounter++ }() defer func() { responseCounter++ }()
switch responseCounter { switch responseCounter {
case 0:
return container.ContainerCreateCreatedBody{ID: containerID}, nil
default: default:
return container.ContainerCreateCreatedBody{}, errors.New("unexpected") return container.ContainerCreateCreatedBody{ID: containerID}, nil
} }
}, },
imageCreateFunc: func(parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) { imageCreateFunc: func(parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) {
defer func() { pullCounter++ }()
return ioutil.NopCloser(strings.NewReader("")), nil return ioutil.NopCloser(strings.NewReader("")), nil
}, },
infoFunc: func() (types.Info, error) { infoFunc: func() (types.Info, error) {
@ -201,15 +209,19 @@ func TestCreateContainerAlwaysPullsImage(t *testing.T) {
}, },
HostConfig: &container.HostConfig{}, HostConfig: &container.HostConfig{},
} }
body, err := createContainer(context.Background(), cli, config, &createOptions{ for i := 0; i < pullTries; i++ {
name: "name", body, err := createContainer(context.Background(), cli, config, &createOptions{
platform: runtime.GOOS, name: "name",
untrusted: true, platform: runtime.GOOS,
pull: PullImageAlways, untrusted: true,
}) pull: PullImageAlways,
assert.NilError(t, err) })
expected := container.ContainerCreateCreatedBody{ID: containerID} assert.NilError(t, err)
assert.Check(t, is.DeepEqual(expected, *body)) expected := container.ContainerCreateCreatedBody{ID: containerID}
assert.Check(t, is.DeepEqual(expected, *body))
}
assert.Check(t, is.Equal(responseCounter, pullCounter))
} }
func TestNewCreateCommandWithContentTrustErrors(t *testing.T) { func TestNewCreateCommandWithContentTrustErrors(t *testing.T) {