From 85e8221f10df7896a32d2aace6464f487dce3c2d Mon Sep 17 00:00:00 2001 From: Phil Estes Date: Fri, 14 Sep 2018 14:36:01 -0400 Subject: [PATCH] Tests should set up snapshot prior to any use of fs These tests would have failed if any image had a USER declaration in it, but because the test image never has, these were never caught. Adding supplemental GIDs on any image revealed the issue. Signed-off-by: Phil Estes --- benchmark_test.go | 4 +-- container_checkpoint_test.go | 10 ++++---- container_linux_test.go | 29 +++++++++++----------- container_test.go | 48 +++++++++++++++++------------------- daemon_config_linux_test.go | 2 +- 5 files changed, 45 insertions(+), 48 deletions(-) diff --git a/benchmark_test.go b/benchmark_test.go index 6e8b049d5..7a0904c55 100644 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -57,7 +57,7 @@ func BenchmarkContainerCreate(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { id := fmt.Sprintf("%s-%d", b.Name(), i) - container, err := client.NewContainer(ctx, id, WithSpec(spec), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithSpec(spec)) if err != nil { b.Error(err) return @@ -98,7 +98,7 @@ func BenchmarkContainerStart(b *testing.B) { for i := 0; i < b.N; i++ { id := fmt.Sprintf("%s-%d", b.Name(), i) - container, err := client.NewContainer(ctx, id, WithSpec(spec), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithSpec(spec)) if err != nil { b.Error(err) return diff --git a/container_checkpoint_test.go b/container_checkpoint_test.go index 1bde56286..695cfdac8 100644 --- a/container_checkpoint_test.go +++ b/container_checkpoint_test.go @@ -53,10 +53,10 @@ func TestCheckpointRestorePTY(t *testing.T) { t.Fatal(err) } container, err := client.NewContainer(ctx, id, + WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sh", "-c", "read A; echo z${A}z"), - oci.WithTTY), - WithNewSnapshot(id, image)) + oci.WithTTY)) if err != nil { t.Fatal(err) } @@ -157,7 +157,7 @@ func TestCheckpointRestore(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -226,7 +226,7 @@ func TestCheckpointRestoreNewContainer(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -306,7 +306,7 @@ func TestCheckpointLeaveRunning(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } diff --git a/container_linux_test.go b/container_linux_test.go index 2026b1928..60b03362d 100644 --- a/container_linux_test.go +++ b/container_linux_test.go @@ -70,9 +70,8 @@ func TestTaskUpdate(t *testing.T) { } return nil } - container, err := client.NewContainer(ctx, id, - WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "30"), memory), - WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), + WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "30"), memory)) if err != nil { t.Fatal(err) } @@ -145,7 +144,7 @@ func TestShimInCgroup(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "30")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "30"))) if err != nil { t.Fatal(err) } @@ -208,7 +207,7 @@ func TestDaemonRestart(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "30")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "30"))) if err != nil { t.Fatal(err) } @@ -280,7 +279,7 @@ func TestContainerPTY(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), oci.WithTTY, withProcessArgs("echo", "hello")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), oci.WithTTY, withProcessArgs("echo", "hello"))) if err != nil { t.Fatal(err) } @@ -357,7 +356,7 @@ func TestContainerAttach(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withCat()), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withCat())) if err != nil { t.Fatal(err) } @@ -652,7 +651,7 @@ func TestContainerAttachProcess(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -894,7 +893,7 @@ func TestDaemonRestartWithRunningShim(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -978,8 +977,8 @@ func TestContainerRuntimeOptionsv1(t *testing.T) { container, err := client.NewContainer( ctx, id, - WithNewSpec(oci.WithImageConfig(image), withExitStatus(7)), WithNewSnapshot(id, image), + WithNewSpec(oci.WithImageConfig(image), withExitStatus(7)), WithRuntime("io.containerd.runtime.v1.linux", &runctypes.RuncOptions{Runtime: "no-runc"}), ) if err != nil { @@ -1021,8 +1020,8 @@ func TestContainerRuntimeOptionsv2(t *testing.T) { container, err := client.NewContainer( ctx, id, - WithNewSpec(oci.WithImageConfig(image), withExitStatus(7)), WithNewSnapshot(id, image), + WithNewSpec(oci.WithImageConfig(image), withExitStatus(7)), WithRuntime("io.containerd.runc.v1", &options.Options{BinaryName: "no-runc"}), ) if err != nil { @@ -1164,9 +1163,9 @@ func testUserNamespaces(t *testing.T, readonlyRootFS bool) { oci.WithUserNamespace(0, 1000, 10000), )} if readonlyRootFS { - opts = append(opts, WithRemappedSnapshotView(id, image, 1000, 1000)) + opts = append([]NewContainerOpts{WithRemappedSnapshotView(id, image, 1000, 1000)}, opts...) } else { - opts = append(opts, WithRemappedSnapshot(id, image, 1000, 1000)) + opts = append([]NewContainerOpts{WithRemappedSnapshot(id, image, 1000, 1000)}, opts...) } container, err := client.NewContainer(ctx, id, opts...) @@ -1247,7 +1246,7 @@ func TestTaskResize(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withExitStatus(7)), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withExitStatus(7))) if err != nil { t.Fatal(err) } @@ -1503,7 +1502,7 @@ func TestContainerNoSTDIN(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withExitStatus(0)), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withExitStatus(0))) if err != nil { t.Fatal(err) } diff --git a/container_test.go b/container_test.go index d4f6ccdbb..927646da6 100644 --- a/container_test.go +++ b/container_test.go @@ -119,7 +119,7 @@ func TestContainerStart(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withExitStatus(7)), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withExitStatus(7))) if err != nil { t.Fatal(err) } @@ -183,7 +183,7 @@ func TestContainerOutput(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("echo", expected)), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("echo", expected))) if err != nil { t.Fatal(err) } @@ -252,7 +252,7 @@ func TestContainerExec(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -337,7 +337,7 @@ func TestContainerLargeExecArgs(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -413,7 +413,7 @@ func TestContainerPids(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -490,7 +490,7 @@ func TestContainerCloseIO(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withCat()), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withCat())) if err != nil { t.Fatal(err) } @@ -546,7 +546,7 @@ func TestDeleteRunningContainer(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -601,7 +601,7 @@ func TestContainerKill(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "10")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "10"))) if err != nil { t.Fatal(err) } @@ -657,8 +657,8 @@ func TestContainerNoBinaryExists(t *testing.T) { } container, err := client.NewContainer(ctx, id, - WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("nothing")), - WithNewSnapshot(id, image)) + WithNewSnapshot(id, image), + WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("nothing"))) if err != nil { t.Fatal(err) } @@ -703,7 +703,7 @@ func TestContainerExecNoBinaryExists(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -768,7 +768,7 @@ func TestWaitStoppedTask(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withExitStatus(7)), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withExitStatus(7))) if err != nil { t.Fatal(err) } @@ -831,7 +831,7 @@ func TestWaitStoppedProcess(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -918,7 +918,7 @@ func TestTaskForceDelete(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "30")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "30"))) if err != nil { t.Fatal(err) } @@ -959,7 +959,7 @@ func TestProcessForceDelete(t *testing.T) { if err != nil { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "30")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "30"))) if err != nil { t.Fatal(err) } @@ -1029,11 +1029,10 @@ func TestContainerHostname(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("hostname"), oci.WithHostname(expected), - ), - WithNewSnapshot(id, image)) + )) if err != nil { t.Fatal(err) } @@ -1098,7 +1097,7 @@ func TestContainerExitedAtSet(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withTrue()), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withTrue())) if err != nil { t.Fatal(err) } @@ -1158,7 +1157,7 @@ func TestDeleteContainerExecCreated(t *testing.T) { t.Fatal(err) } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100")), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("sleep", "100"))) if err != nil { t.Fatal(err) } @@ -1228,8 +1227,8 @@ func TestContainerMetrics(t *testing.T) { t.Fatal(err) } container, err := client.NewContainer(ctx, id, - WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "30")), - WithNewSnapshot(id, image)) + WithNewSnapshot(id, image), + WithNewSpec(oci.WithImageConfig(image), oci.WithProcessArgs("sleep", "30"))) if err != nil { t.Fatal(err) } @@ -1285,9 +1284,8 @@ func TestDeletedContainerMetrics(t *testing.T) { t.Fatal(err) } container, err := client.NewContainer(ctx, id, - WithNewSpec(oci.WithImageConfig(image), withExitStatus(0)), WithNewSnapshot(id, image), - ) + WithNewSpec(oci.WithImageConfig(image), withExitStatus(0))) if err != nil { t.Fatal(err) } @@ -1518,7 +1516,7 @@ func TestContainerHook(t *testing.T) { } return nil } - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), hook), WithNewSnapshot(id, image)) + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), hook)) if err != nil { t.Fatal(err) } diff --git a/daemon_config_linux_test.go b/daemon_config_linux_test.go index 40cfe891d..40d9bb0a9 100644 --- a/daemon_config_linux_test.go +++ b/daemon_config_linux_test.go @@ -140,7 +140,7 @@ func TestDaemonRuntimeRoot(t *testing.T) { } id := t.Name() - container, err := client.NewContainer(ctx, id, WithNewSpec(oci.WithImageConfig(image), withProcessArgs("top")), WithNewSnapshot(id, image), WithRuntime("io.containerd.runc.v1", &options.Options{ + container, err := client.NewContainer(ctx, id, WithNewSnapshot(id, image), WithNewSpec(oci.WithImageConfig(image), withProcessArgs("top")), WithRuntime("io.containerd.runc.v1", &options.Options{ Root: runtimeRoot, })) if err != nil {