summaryrefslogtreecommitdiff
path: root/integration-cli/docker_cli_save_load_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'integration-cli/docker_cli_save_load_test.go')
-rw-r--r--integration-cli/docker_cli_save_load_test.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/integration-cli/docker_cli_save_load_test.go b/integration-cli/docker_cli_save_load_test.go
new file mode 100644
index 0000000000..d728c7de95
--- /dev/null
+++ b/integration-cli/docker_cli_save_load_test.go
@@ -0,0 +1,52 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "os/exec"
+ "testing"
+)
+
+// save a repo and try to load it
+func TestSaveAndLoadRepo(t *testing.T) {
+ runCmd := exec.Command(dockerBinary, "run", "-d", "busybox", "true")
+ out, _, err := runCommandWithOutput(runCmd)
+ errorOut(err, t, fmt.Sprintf("failed to create a container: %v %v", out, err))
+
+ cleanedContainerID := stripTrailingCharacters(out)
+
+ repoName := "foobar-save-load-test"
+
+ inspectCmd := exec.Command(dockerBinary, "inspect", cleanedContainerID)
+ out, _, err = runCommandWithOutput(inspectCmd)
+ errorOut(err, t, fmt.Sprintf("output should've been a container id: %v %v", cleanedContainerID, err))
+
+ commitCmd := exec.Command(dockerBinary, "commit", cleanedContainerID, repoName)
+ out, _, err = runCommandWithOutput(commitCmd)
+ errorOut(err, t, fmt.Sprintf("failed to commit container: %v %v", out, err))
+
+ saveCmdTemplate := `%v save %v > /tmp/foobar-save-load-test.tar`
+ saveCmdFinal := fmt.Sprintf(saveCmdTemplate, dockerBinary, repoName)
+ saveCmd := exec.Command("bash", "-c", saveCmdFinal)
+ out, _, err = runCommandWithOutput(saveCmd)
+ errorOut(err, t, fmt.Sprintf("failed to save repo: %v %v", out, err))
+
+ deleteImages(repoName)
+
+ loadCmdFinal := `cat /tmp/foobar-save-load-test.tar | docker load`
+ loadCmd := exec.Command("bash", "-c", loadCmdFinal)
+ out, _, err = runCommandWithOutput(loadCmd)
+ errorOut(err, t, fmt.Sprintf("failed to load repo: %v %v", out, err))
+
+ inspectCmd = exec.Command(dockerBinary, "inspect", repoName)
+ out, _, err = runCommandWithOutput(inspectCmd)
+ errorOut(err, t, fmt.Sprintf("the repo should exist after loading it: %v %v", out, err))
+
+ deleteContainer(cleanedContainerID)
+ deleteImages(repoName)
+
+ os.Remove("/tmp/foobar-save-load-test.tar")
+
+ logDone("save - save a repo")
+ logDone("load - load a repo")
+}