Browse Source

Merge pull request #36606 from kolyshkin/t-36561

integration/TestExportContainerAfterDaemonRestart: add
Vincent Demeester 7 years ago
parent
commit
823de22db6
1 changed files with 31 additions and 0 deletions
  1. 31 0
      integration/container/export_test.go

+ 31 - 0
integration/container/export_test.go

@@ -7,7 +7,9 @@ import (
 	"time"
 
 	"github.com/docker/docker/api/types"
+	containerTypes "github.com/docker/docker/api/types/container"
 	"github.com/docker/docker/api/types/filters"
+	"github.com/docker/docker/integration-cli/daemon"
 	"github.com/docker/docker/integration/internal/container"
 	"github.com/docker/docker/integration/internal/request"
 	"github.com/docker/docker/pkg/jsonmessage"
@@ -51,3 +53,32 @@ func TestExportContainerAndImportImage(t *testing.T) {
 	require.NoError(t, err)
 	assert.Equal(t, jm.Status, images[0].ID)
 }
+
+// TestExportContainerAfterDaemonRestart checks that a container
+// created before start of the currently running dockerd
+// can be exported (as reported in #36561). To satisfy this
+// condition, daemon restart is needed after container creation.
+func TestExportContainerAfterDaemonRestart(t *testing.T) {
+	skip.If(t, testEnv.DaemonInfo.OSType != "linux")
+	skip.If(t, testEnv.IsRemoteDaemon())
+
+	d := daemon.New(t, "", "dockerd", daemon.Config{})
+	client, err := d.NewClient()
+	require.NoError(t, err)
+
+	d.StartWithBusybox(t)
+	defer d.Stop(t)
+
+	ctx := context.Background()
+	cfg := containerTypes.Config{
+		Image: "busybox",
+		Cmd:   []string{"top"},
+	}
+	ctr, err := client.ContainerCreate(ctx, &cfg, nil, nil, "")
+	require.NoError(t, err)
+
+	d.Restart(t)
+
+	_, err = client.ContainerExport(ctx, ctr.ID)
+	assert.NoError(t, err)
+}