Skip to content
This repository was archived by the owner on Feb 8, 2021. It is now read-only.

Commit 310acf6

Browse files
authored
Merge pull request #136 from bergwolf/volume-init-tests-rebased
Add hyper run volume init tests
2 parents 696a9fe + 63515d5 commit 310acf6

File tree

2 files changed

+217
-0
lines changed

2 files changed

+217
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package main
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/docker/engine-api/types"
7+
"github.com/go-check/check"
8+
)
9+
10+
func (s *DockerSuite) TestApiVolumeInit(c *check.C) {
11+
source := "https://raw.githubusercontent.com/hyperhq/hypercli/master/README.md"
12+
volName := "hyperclitestvol"
13+
dockerCmd(c, "volume", "create", "--name="+volName)
14+
options := types.VolumesInitializeRequest{
15+
Reload: false,
16+
Volume: make([]types.VolumeInitDesc, 0),
17+
}
18+
options.Volume = append(options.Volume, types.VolumeInitDesc{Name: volName, Source: source})
19+
status, b, err := sockRequest("POST", "/volumes/initialize", options)
20+
c.Assert(err, check.IsNil)
21+
c.Assert(status, check.Equals, http.StatusOK, check.Commentf(string(b)))
22+
dockerCmd(c, "volume", "rm", volName)
23+
}
24+
25+
func (s *DockerSuite) TestApiVolumeReload(c *check.C) {
26+
source := "https://raw.githubusercontent.com/hyperhq/hypercli/master/README.md"
27+
volName := "hyperclitestvol"
28+
dockerCmd(c, "volume", "create", "--name="+volName)
29+
dockerCmd(c, "volume", "init", source+":"+volName)
30+
options := types.VolumesInitializeRequest{
31+
Reload: true,
32+
Volume: make([]types.VolumeInitDesc, 0),
33+
}
34+
options.Volume = append(options.Volume, types.VolumeInitDesc{Name: volName, Source: source})
35+
status, b, err := sockRequest("POST", "/volumes/initialize", options)
36+
c.Assert(err, check.IsNil)
37+
c.Assert(status, check.Equals, http.StatusOK, check.Commentf(string(b)))
38+
dockerCmd(c, "volume", "rm", volName)
39+
}
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
package main
2+
3+
import (
4+
"io/ioutil"
5+
"os/exec"
6+
"time"
7+
8+
"github.com/docker/docker/pkg/integration/checker"
9+
"github.com/go-check/check"
10+
)
11+
12+
func (s *DockerSuite) TestRunGitVolumeBinding(c *check.C) {
13+
printTestCaseName()
14+
defer printTestDuration(time.Now())
15+
source := "git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
16+
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
17+
c.Assert(err, checker.Equals, 0)
18+
out, err := dockerCmd(c, "exec", "voltest", "cat", "/data/README")
19+
c.Assert(err, checker.Equals, 0)
20+
c.Assert(out, checker.Contains, "util-linux")
21+
dockerCmd(c, "rm", "-fv", "voltest")
22+
23+
source = "git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git:stable/v2.13.0"
24+
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
25+
c.Assert(err, checker.Equals, 0)
26+
out, err = dockerCmd(c, "exec", "voltest", "cat", "/data/configure.ac")
27+
c.Assert(err, checker.Equals, 0)
28+
c.Assert(out, checker.Contains, "2.13.0")
29+
dockerCmd(c, "rm", "-fv", "voltest")
30+
}
31+
32+
func (s *DockerSuite) TestRunHttpGitVolumeBinding(c *check.C) {
33+
printTestCaseName()
34+
defer printTestDuration(time.Now())
35+
source := "http://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
36+
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
37+
c.Assert(err, checker.Equals, 0)
38+
out, err := dockerCmd(c, "exec", "voltest", "cat", "/data/README")
39+
c.Assert(err, checker.Equals, 0)
40+
c.Assert(out, checker.Contains, "util-linux")
41+
dockerCmd(c, "rm", "-fv", "voltest")
42+
43+
source = "http://git.kernel.org/pub/scm/utils/util-linux/util-linux.git:stable/v2.13.0"
44+
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
45+
c.Assert(err, checker.Equals, 0)
46+
out, err = dockerCmd(c, "exec", "voltest", "cat", "/data/configure.ac")
47+
c.Assert(err, checker.Equals, 0)
48+
c.Assert(out, checker.Contains, "2.13.0")
49+
dockerCmd(c, "rm", "-fv", "voltest")
50+
}
51+
52+
func (s *DockerSuite) TestRunHttpsGitVolumeBinding(c *check.C) {
53+
printTestCaseName()
54+
defer printTestDuration(time.Now())
55+
source := "https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
56+
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
57+
c.Assert(err, checker.Equals, 0)
58+
out, err := dockerCmd(c, "exec", "voltest", "cat", "/data/README")
59+
c.Assert(err, checker.Equals, 0)
60+
c.Assert(out, checker.Contains, "util-linux")
61+
dockerCmd(c, "rm", "-fv", "voltest")
62+
63+
source = "http://git.kernel.org/pub/scm/utils/util-linux/util-linux.git:stable/v2.13.0"
64+
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
65+
c.Assert(err, checker.Equals, 0)
66+
out, err = dockerCmd(c, "exec", "voltest", "cat", "/data/README")
67+
c.Assert(err, checker.Equals, 0)
68+
c.Assert(out, checker.Contains, "util-linux")
69+
dockerCmd(c, "rm", "-fv", "voltest")
70+
}
71+
72+
func (s *DockerSuite) TestRunHttpFileVolumeBinding(c *check.C) {
73+
printTestCaseName()
74+
defer printTestDuration(time.Now())
75+
source := "https://raw.githubusercontent.com/hyperhq/hypercli/master/README.md"
76+
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
77+
c.Assert(err, checker.Equals, 0)
78+
out, err := dockerCmd(c, "exec", "voltest", "stat", "/data")
79+
c.Assert(err, checker.Equals, 0)
80+
c.Assert(out, checker.Contains, "regular file")
81+
dockerCmd(c, "rm", "-fv", "voltest")
82+
83+
source = "https://raw.githubusercontent.com/hyperhq/hypercli/master/README.md"
84+
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
85+
c.Assert(err, checker.Equals, 0)
86+
out, err = dockerCmd(c, "exec", "voltest", "stat", "/data")
87+
c.Assert(err, checker.Equals, 0)
88+
c.Assert(out, checker.Contains, "regular file")
89+
dockerCmd(c, "rm", "-fv", "voltest")
90+
91+
source = "https://raw.githubusercontent.com/nosuchuser/nosuchrepo/masterbeta/README.md"
92+
_, _, cmdErr := dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
93+
c.Assert(cmdErr, checker.NotNil)
94+
}
95+
96+
func (s *DockerSuite) TestRunLocalFileVolumeBinding(c *check.C) {
97+
printTestCaseName()
98+
defer printTestDuration(time.Now())
99+
source := "/tmp/hyper_integration_test_local_file_volume_file"
100+
ioutil.WriteFile(source, []byte("foo"), 0644)
101+
102+
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/volume/data", "busybox")
103+
c.Assert(err, checker.Equals, 0)
104+
out, err := dockerCmd(c, "exec", "voltest", "cat", "/volume/data")
105+
c.Assert(err, checker.Equals, 0)
106+
c.Assert(out, checker.Equals, "foo")
107+
dockerCmd(c, "rm", "-fv", "voltest")
108+
109+
// Dir destination as a file
110+
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", source+":/volume/data/", "busybox")
111+
c.Assert(err, checker.Equals, 0)
112+
out, err = dockerCmd(c, "exec", "voltest", "cat", "/volume/data")
113+
c.Assert(err, checker.Equals, 0)
114+
c.Assert(out, checker.Equals, "foo")
115+
dockerCmd(c, "rm", "-fv", "voltest")
116+
exec.Command("rm", "-f", source).CombinedOutput()
117+
118+
// NonexistingVolumeBinding
119+
dir := "/tmp/nosuchfile"
120+
_, _, realErr := dockerCmdWithError("run", "-d", "--name=voltest", "-v", dir+":/data", "busybox")
121+
c.Assert(realErr, checker.NotNil)
122+
}
123+
124+
func (s *DockerSuite) TestRunLocalDirVolumeBinding(c *check.C) {
125+
printTestCaseName()
126+
defer printTestDuration(time.Now())
127+
dir := "/tmp/hyper_integration_test_local_dir_volume_dir"
128+
file := "datafile"
129+
exec.Command("mkdir", "-p", dir).CombinedOutput()
130+
ioutil.WriteFile(dir+"/"+file, []byte("foo"), 0644)
131+
132+
_, err := dockerCmd(c, "run", "-d", "--name=voltest", "-v", dir+":/data", "busybox")
133+
c.Assert(err, checker.Equals, 0)
134+
out, err := dockerCmd(c, "exec", "voltest", "cat", "/data/"+file)
135+
c.Assert(err, checker.Equals, 0)
136+
c.Assert(out, checker.Equals, "foo")
137+
dockerCmd(c, "rm", "-fv", "voltest")
138+
139+
exec.Command("rm", "-r", dir).CombinedOutput()
140+
141+
// Deep dir binding
142+
dir = "/tmp/hyper_integration_test_local_dir_volume_dir"
143+
middle_dir := "/dir1/dir2/dir3/dir4/dir5"
144+
file = "datafile"
145+
exec.Command("mkdir", "-p", dir+"/"+middle_dir).CombinedOutput()
146+
ioutil.WriteFile(dir+"/"+middle_dir+"/"+file, []byte("foo"), 0644)
147+
148+
_, err = dockerCmd(c, "run", "-d", "--name=voltest", "-v", dir+":/data", "busybox")
149+
c.Assert(err, checker.Equals, 0)
150+
out, err = dockerCmd(c, "exec", "voltest", "cat", "/data/"+middle_dir+"/"+file)
151+
c.Assert(err, checker.Equals, 0)
152+
c.Assert(out, checker.Equals, "foo")
153+
dockerCmd(c, "rm", "-fv", "voltest")
154+
155+
exec.Command("rm", "-r", dir).CombinedOutput()
156+
}
157+
158+
func (s *DockerSuite) TestRunExceptionVolumeBinding(c *check.C) {
159+
printTestCaseName()
160+
defer printTestDuration(time.Now())
161+
162+
// NonexistingVolumeBinding
163+
source := "/tmp/nosuchfile"
164+
_, _, err := dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
165+
c.Assert(err, checker.NotNil)
166+
167+
source = "http://nosuchdomain"
168+
_, _, err = dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
169+
c.Assert(err, checker.NotNil)
170+
171+
source = "git://nosuchdomain.git"
172+
_, _, err = dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
173+
c.Assert(err, checker.NotNil)
174+
175+
source = "git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git:nosuchbranch"
176+
_, _, err = dockerCmdWithError("run", "-d", "--name=voltest", "-v", source+":/data", "busybox")
177+
c.Assert(err, checker.NotNil)
178+
}

0 commit comments

Comments
 (0)