Skip to content
This repository was archived by the owner on Feb 8, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions integration-cli/future/api/hyper_api_volume_init_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package main

import (
"net/http"

"github.com/docker/engine-api/types"
"github.com/go-check/check"
)

func (s *DockerSuite) TestApiVolumeInit(c *check.C) {
source := "https://raw.githubusercontent.com/hyperhq/hypercli/master/README.md"
volName := "hyperclitestvol"
dockerCmd(c, "volume", "create", "--name="+volName)
options := types.VolumesInitializeRequest{
Reload: false,
Volume: make([]types.VolumeInitDesc, 0),
}
options.Volume = append(options.Volume, types.VolumeInitDesc{Name: volName, Source: source})
status, b, err := sockRequest("POST", "/volumes/initialize", options)
c.Assert(err, check.IsNil)
c.Assert(status, check.Equals, http.StatusOK, check.Commentf(string(b)))
dockerCmd(c, "volume", "rm", volName)
}

func (s *DockerSuite) TestApiVolumeReload(c *check.C) {
source := "https://raw.githubusercontent.com/hyperhq/hypercli/master/README.md"
volName := "hyperclitestvol"
dockerCmd(c, "volume", "create", "--name="+volName)
dockerCmd(c, "volume", "init", source+":"+volName)
options := types.VolumesInitializeRequest{
Reload: true,
Volume: make([]types.VolumeInitDesc, 0),
}
options.Volume = append(options.Volume, types.VolumeInitDesc{Name: volName, Source: source})
status, b, err := sockRequest("POST", "/volumes/initialize", options)
c.Assert(err, check.IsNil)
c.Assert(status, check.Equals, http.StatusOK, check.Commentf(string(b)))
dockerCmd(c, "volume", "rm", volName)
}
178 changes: 178 additions & 0 deletions integration-cli/future/cli/hyper_cli_run_volume_init_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
package main

import (
"io/ioutil"
"os/exec"
"time"

"github.com/docker/docker/pkg/integration/checker"
"github.com/go-check/check"
)

func (s *DockerSuite) TestRunGitVolumeBinding(c *check.C) {
printTestCaseName()
defer printTestDuration(time.Now())
source := "git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err := dockerCmd(c, "exec", "voltest", "cat", "/data/README")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Contains, "util-linux")
dockerCmd(c, "rm", "-fv", "voltest")

source = "git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git:stable/v2.13.0"
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err = dockerCmd(c, "exec", "voltest", "cat", "/data/configure.ac")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Contains, "2.13.0")
dockerCmd(c, "rm", "-fv", "voltest")
}

func (s *DockerSuite) TestRunHttpGitVolumeBinding(c *check.C) {
printTestCaseName()
defer printTestDuration(time.Now())
source := "http://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err := dockerCmd(c, "exec", "voltest", "cat", "/data/README")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Contains, "util-linux")
dockerCmd(c, "rm", "-fv", "voltest")

source = "http://git.kernel.org/pub/scm/utils/util-linux/util-linux.git:stable/v2.13.0"
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err = dockerCmd(c, "exec", "voltest", "cat", "/data/configure.ac")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Contains, "2.13.0")
dockerCmd(c, "rm", "-fv", "voltest")
}

func (s *DockerSuite) TestRunHttpsGitVolumeBinding(c *check.C) {
printTestCaseName()
defer printTestDuration(time.Now())
source := "https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err := dockerCmd(c, "exec", "voltest", "cat", "/data/README")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Contains, "util-linux")
dockerCmd(c, "rm", "-fv", "voltest")

source = "http://git.kernel.org/pub/scm/utils/util-linux/util-linux.git:stable/v2.13.0"
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err = dockerCmd(c, "exec", "voltest", "cat", "/data/README")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Contains, "util-linux")
dockerCmd(c, "rm", "-fv", "voltest")
}

func (s *DockerSuite) TestRunHttpFileVolumeBinding(c *check.C) {
printTestCaseName()
defer printTestDuration(time.Now())
source := "https://raw.githubusercontent.com/hyperhq/hypercli/master/README.md"
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err := dockerCmd(c, "exec", "voltest", "stat", "/data")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Contains, "regular file")
dockerCmd(c, "rm", "-fv", "voltest")

source = "https://raw.githubusercontent.com/hyperhq/hypercli/master/README.md"
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err = dockerCmd(c, "exec", "voltest", "stat", "/data")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Contains, "regular file")
dockerCmd(c, "rm", "-fv", "voltest")

source = "https://raw.githubusercontent.com/nosuchuser/nosuchrepo/masterbeta/README.md"
_, _, cmdErr := dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(cmdErr, checker.NotNil)
}

func (s *DockerSuite) TestRunLocalFileVolumeBinding(c *check.C) {
printTestCaseName()
defer printTestDuration(time.Now())
source := "/tmp/hyper_integration_test_local_file_volume_file"
ioutil.WriteFile(source, []byte("foo"), 0644)

_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/volume/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err := dockerCmd(c, "exec", "voltest", "cat", "/volume/data")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Equals, "foo")
dockerCmd(c, "rm", "-fv", "voltest")

// Dir destination as a file
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/volume/data/", "busybox")
c.Assert(err, checker.Equals, 0)
out, err = dockerCmd(c, "exec", "voltest", "cat", "/volume/data")
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Equals, "foo")
dockerCmd(c, "rm", "-fv", "voltest")
exec.Command("rm", "-f", source).CombinedOutput()

// NonexistingVolumeBinding
dir := "/tmp/nosuchfile"
_, _, realErr := dockerCmdWithError("run", "-d", "--name=voltest", "-v", dir+":/data", "busybox")
c.Assert(realErr, checker.NotNil)
}

func (s *DockerSuite) TestRunLocalDirVolumeBinding(c *check.C) {
printTestCaseName()
defer printTestDuration(time.Now())
dir := "/tmp/hyper_integration_test_local_dir_volume_dir"
file := "datafile"
exec.Command("mkdir", "-p", dir).CombinedOutput()
ioutil.WriteFile(dir+"/"+file, []byte("foo"), 0644)

_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", dir+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err := dockerCmd(c, "exec", "voltest", "cat", "/data/"+file)
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Equals, "foo")
dockerCmd(c, "rm", "-fv", "voltest")

exec.Command("rm", "-r", dir).CombinedOutput()

// Deep dir binding
dir = "/tmp/hyper_integration_test_local_dir_volume_dir"
middle_dir := "/dir1/dir2/dir3/dir4/dir5"
file = "datafile"
exec.Command("mkdir", "-p", dir+"/"+middle_dir).CombinedOutput()
ioutil.WriteFile(dir+"/"+middle_dir+"/"+file, []byte("foo"), 0644)

_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", dir+":/data", "busybox")
c.Assert(err, checker.Equals, 0)
out, err = dockerCmd(c, "exec", "voltest", "cat", "/data/"+middle_dir+"/"+file)
c.Assert(err, checker.Equals, 0)
c.Assert(out, checker.Equals, "foo")
dockerCmd(c, "rm", "-fv", "voltest")

exec.Command("rm", "-r", dir).CombinedOutput()
}

func (s *DockerSuite) TestRunExceptionVolumeBinding(c *check.C) {
printTestCaseName()
defer printTestDuration(time.Now())

// NonexistingVolumeBinding
source := "/tmp/nosuchfile"
_, _, err := dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.NotNil)

source = "http://nosuchdomain"
_, _, err = dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.NotNil)

source = "git://nosuchdomain.git"
_, _, err = dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.NotNil)

source = "git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git:nosuchbranch"
_, _, err = dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
c.Assert(err, checker.NotNil)
}