Skip to content

Commit 14f317c

Browse files
milantracygvisor-bot
authored andcommitted
Fix docker tests in image_test.
The former test didn't catch the failur since docker outputs the `[image_name]:latest` in error message. PiperOrigin-RevId: 794749861
1 parent 3cc1182 commit 14f317c

File tree

1 file changed

+39
-13
lines changed

1 file changed

+39
-13
lines changed

test/image/image_test.go

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,35 @@ func startDockerdInGvisor(ctx context.Context, t *testing.T, overlay bool) *dock
526526
return d
527527
}
528528

529+
// checkDockerImage list available images and checks if the given image is
530+
// present.
531+
func checkDockerImage(ctx context.Context, imageName string, d *dockerutil.Container) error {
532+
listImages, err := d.ExecProcess(ctx, dockerutil.ExecOpts{}, "/bin/sh", "-c", "docker images")
533+
if err != nil {
534+
return fmt.Errorf("docker exec failed: %v", err)
535+
}
536+
got, err := listImages.Logs()
537+
if err != nil {
538+
return fmt.Errorf("docker logs failed: %v", err)
539+
}
540+
if !strings.Contains(got, imageName) {
541+
return fmt.Errorf("docker didn't get expected image: %q, got: %q", imageName, got)
542+
}
543+
return nil
544+
}
545+
546+
func removeDockerImage(ctx context.Context, imageName string, d *dockerutil.Container) error {
547+
cmd := []string{"docker", "image", "rm", imageName}
548+
_, err := d.ExecProcess(
549+
ctx,
550+
dockerutil.ExecOpts{},
551+
"/bin/sh", "-c", strings.Join(cmd, " "))
552+
if err != nil {
553+
return fmt.Errorf("docker exec failed: %v", err)
554+
}
555+
return nil
556+
}
557+
529558
func testDockerRun(ctx context.Context, t *testing.T, d *dockerutil.Container, opts dockerCommandOptions) {
530559
cmd := []string{"docker", "run", "--rm"}
531560
if opts.hostNetwork {
@@ -550,27 +579,24 @@ func testDockerRun(ctx context.Context, t *testing.T, d *dockerutil.Container, o
550579
}
551580

552581
func testDockerBuild(ctx context.Context, t *testing.T, d *dockerutil.Container, opts dockerCommandOptions) {
553-
cmd := []string{"echo", "-e", fmt.Sprintf("FROM %s\nRUN apk add git", testAlpineImage), "|", "docker", "build"}
582+
parts := []string{"echo", fmt.Sprintf("\"FROM %s\nRUN apk add git\"", testAlpineImage), "|", "docker", "build"}
554583
if opts.hostNetwork {
555-
cmd = append(cmd, "--network", "host")
556-
}
557-
imageName := "test_docker_build_in_gvisor"
558-
cmd = append(cmd, "-t", imageName, "-f", "-", ".")
559-
_, err := d.ExecProcess(ctx, dockerutil.ExecOpts{}, cmd...)
560-
if err != nil {
561-
t.Fatalf("docker exec failed: %v", err)
584+
parts = append(parts, "--network", "host")
562585
}
563-
inspectImage, err := d.ExecProcess(ctx, dockerutil.ExecOpts{}, []string{"docker", "image", "inspect", imageName}...)
586+
imageName := strings.ToLower(strings.ReplaceAll(testutil.RandomID("test_docker_build"), "/", "-"))
587+
parts = append(parts, "-t", imageName, "-f", "-", ".")
588+
cmd := strings.Join(parts, " ")
589+
dockerBuildProc, err := d.ExecProcess(ctx, dockerutil.ExecOpts{}, "/bin/sh", "-c", cmd)
564590
if err != nil {
565591
t.Fatalf("docker exec failed: %v", err)
566592
}
567-
got, err := inspectImage.Logs()
593+
_, err = dockerBuildProc.Logs()
568594
if err != nil {
569595
t.Fatalf("docker logs failed: %v", err)
570596
}
571-
output := imageName + ":latest"
572-
if !strings.Contains(got, output) {
573-
t.Fatalf("docker didn't get output expected: %q, got: %q", output, got)
597+
defer removeDockerImage(ctx, imageName, d)
598+
if err := checkDockerImage(ctx, imageName, d); err != nil {
599+
t.Fatalf("failed to find docker image: %v", err)
574600
}
575601
}
576602

0 commit comments

Comments
 (0)