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

Commit 150f979

Browse files
committed
[markup-basic-test-case] add test case for commit/push
1 parent 8cd0b04 commit 150f979

File tree

8 files changed

+172
-5
lines changed

8 files changed

+172
-5
lines changed

Dockerfile.dev

100755100644
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ RUN yum install -y\
1313

1414

1515
## Install Go
16-
ENV GO_VERSION 1.7.4
16+
ENV GO_VERSION 1.8.3
1717
RUN wget http://golangtc.com/static/go/${GO_VERSION}/go${GO_VERSION}.linux-amd64.tar.gz
1818
#RUN wget http://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz
1919
RUN tar -xzf go${GO_VERSION}.linux-amd64.tar.gz -C /usr/local

Dockerfile.qa

100755100644
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ RUN yum install -y\
1313

1414

1515
## Install Go
16-
ENV GO_VERSION 1.7.4
16+
ENV GO_VERSION 1.8.3
1717
RUN wget http://golangtc.com/static/go/${GO_VERSION}/go${GO_VERSION}.linux-amd64.tar.gz
1818
#RUN wget http://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz
1919
RUN tar -xzf go${GO_VERSION}.linux-amd64.tar.gz -C /usr/local

integration-cli/README.md

100755100644
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ Functional test for hyper cli.
4343
- [ ] cli_attach_unix_test
4444
- [x] cli_config_test
4545
- [x] cli_create_test
46+
- [x] cli_commit_test
4647
- [x] cli_exec_test
4748
- [x] cli_exec_unix_test
4849
- [x] cli_fip_test
@@ -64,6 +65,7 @@ Functional test for hyper cli.
6465
- [x] cli_port_test
6566
- [x] cli_ps_test
6667
- [x] cli_pull_test
68+
- [x] cli_push_test
6769
- [x] cli_rename_test
6870
- [x] cli_restart_test
6971
- [x] cli_rm_test
@@ -103,13 +105,12 @@ Functional test for hyper cli.
103105

104106
## skip
105107

106-
> not support build, commit, push, tag
108+
> not support build, tag
107109
108110
- [ ] cli_authz_unix_test
109111
- [ ] cli_build_test
110112
- [ ] cli_build_unix_test
111113
- [ ] cli_by_digest_test
112-
- [ ] cli_commit_test
113114
- [ ] cli_cp_from_container_test
114115
- [ ] cli_cp_test
115116
- [ ] cli_cp_to_container_test
@@ -130,7 +131,6 @@ Functional test for hyper cli.
130131
- [ ] cli_proxy_test
131132
- [ ] cli_pull_local_test
132133
- [ ] cli_pull_trusted_test
133-
- [ ] cli_push_test
134134
- [ ] cli_save_load_test
135135
- [ ] cli_save_load_unix_test
136136
- [ ] cli_sni_test
@@ -147,6 +147,7 @@ Functional test for hyper cli.
147147

148148
- TestCliConfig
149149
- TestCliCreate
150+
- TestCliCommit
150151
- TestCliExec
151152
- TestCliFip
152153
- TestCliHelp
@@ -162,6 +163,7 @@ Functional test for hyper cli.
162163
- TestCliPort
163164
- TestCliPs
164165
- TestCliPull
166+
- TestCliPush
165167
- TestCliRename
166168
- TestCliRestart
167169
- TestCliRmi
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"strings"
7+
"time"
8+
9+
"github.com/go-check/check"
10+
"github.com/hyperhq/hypercli/pkg/integration/checker"
11+
)
12+
13+
func (s *DockerSuite) TestCliPush(c *check.C) {
14+
printTestCaseName()
15+
defer printTestDuration(time.Now())
16+
testRequires(c, DaemonIsLinux)
17+
18+
var (
19+
out string
20+
err error
21+
newImage = fmt.Sprintf("%v/busybox:latest", os.Getenv("DOCKERHUB_USERNAME"))
22+
)
23+
pullImageIfNotExist("busybox")
24+
out, _ = dockerCmd(c, "run", "-d", "busybox", "bash", "-c", "touch", "test")
25+
cleanedContainerID := strings.TrimSpace(out)
26+
27+
_, _, err = dockerCmdWithError("commit", cleanedContainerID, newImage)
28+
c.Assert(err, checker.IsNil)
29+
30+
//login dockerhub
31+
out, _ = dockerCmd(c, "login", "-e", os.Getenv("DOCKERHUB_EMAIL"), "-u", os.Getenv("DOCKERHUB_USERNAME"), "-p", os.Getenv("DOCKERHUB_PASSWD"))
32+
c.Assert(out, checker.Contains, "Login Succeeded")
33+
34+
//push to dockerhub
35+
out, _, err = dockerCmdWithError("push", newImage)
36+
c.Assert(out, checker.Contains, "digest:")
37+
c.Assert(err, checker.IsNil)
38+
}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package main
2+
3+
import (
4+
"strings"
5+
"time"
6+
7+
"github.com/docker/docker/pkg/integration/checker"
8+
"github.com/go-check/check"
9+
)
10+
11+
func (s *DockerSuite) TestCliCommitAfterContainerIsDone(c *check.C) {
12+
printTestCaseName()
13+
defer printTestDuration(time.Now())
14+
testRequires(c, DaemonIsLinux)
15+
16+
pullImageIfNotExist("busybox")
17+
out, _ := dockerCmd(c, "run", "-i", "-a", "stdin", "busybox", "echo", "foo")
18+
19+
cleanedContainerID := strings.TrimSpace(out)
20+
21+
dockerCmd(c, "wait", cleanedContainerID)
22+
23+
out, _ = dockerCmd(c, "commit", cleanedContainerID)
24+
25+
cleanedImageID := strings.TrimSpace(out)
26+
27+
dockerCmd(c, "inspect", cleanedImageID)
28+
}
29+
30+
func (s *DockerSuite) TestCliCommitRunningContainer(c *check.C) {
31+
printTestCaseName()
32+
defer printTestDuration(time.Now())
33+
testRequires(c, DaemonIsLinux)
34+
35+
pullImageIfNotExist("busybox")
36+
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
37+
cleanedContainerID := strings.TrimSpace(out)
38+
39+
out, _, err := dockerCmdWithError("commit", cleanedContainerID)
40+
c.Assert(err, checker.NotNil)
41+
c.Assert(out, checker.Equals, "Error response from daemon: Bad request parameters: only stopped container could be committed\n")
42+
}
43+
44+
func (s *DockerSuite) TestCliCommitNewFileBasic(c *check.C) {
45+
printTestCaseName()
46+
defer printTestDuration(time.Now())
47+
testRequires(c, DaemonIsLinux)
48+
49+
pullImageIfNotExist("busybox")
50+
dockerCmd(c, "run", "--name", "commiter", "busybox", "/bin/sh", "-c", "echo koye > /foo")
51+
52+
imageID, _ := dockerCmd(c, "commit", "commiter")
53+
imageID = strings.TrimSpace(imageID)
54+
55+
out, _ := dockerCmd(c, "run", imageID, "cat", "/foo")
56+
actual := strings.TrimSpace(out)
57+
c.Assert(actual, checker.Equals, "koye")
58+
}
59+
60+
func (s *DockerSuite) TestCliCommitChange(c *check.C) {
61+
printTestCaseName()
62+
defer printTestDuration(time.Now())
63+
testRequires(c, DaemonIsLinux)
64+
65+
pullImageIfNotExist("busybox")
66+
dockerCmd(c, "run", "--name", "test", "busybox", "true")
67+
68+
imageID, _ := dockerCmd(c, "commit",
69+
"--change", "EXPOSE 8080",
70+
"--change", "ENV DEBUG true",
71+
"--change", "ENV test 1",
72+
"--change", "ENV PATH /foo",
73+
"--change", "LABEL foo bar",
74+
"--change", "CMD [\"/bin/sh\"]",
75+
"--change", "WORKDIR /opt",
76+
"--change", "ENTRYPOINT [\"/bin/sh\"]",
77+
"--change", "USER testuser",
78+
"--change", "VOLUME /var/lib/docker",
79+
"test", "test-commit",
80+
)
81+
imageID = strings.TrimSpace(imageID)
82+
83+
expected := map[string]string{
84+
"Config.ExposedPorts": "map[8080/tcp:{}]",
85+
"Config.Env": "[DEBUG=true test=1 PATH=/foo]",
86+
"Config.Labels": "map[foo:bar]",
87+
"Config.Cmd": "[/bin/sh]",
88+
"Config.WorkingDir": "/opt",
89+
"Config.Entrypoint": "[/bin/sh]",
90+
"Config.User": "testuser",
91+
"Config.Volumes": "map[/var/lib/docker:{}]",
92+
}
93+
94+
for conf, value := range expected {
95+
res := inspectField(c, imageID, conf)
96+
if res != value {
97+
c.Errorf("%s('%s'), expected %s", conf, res, value)
98+
}
99+
}
100+
}

integration-cli/hyper_cli_share_volume_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ func (s *DockerSuite) TestCliShareVolumeNamedVolumeBasic(c *check.C) {
1212
defer printTestDuration(time.Now())
1313
testRequires(c, DaemonIsLinux)
1414

15+
pullImageIfNotExist("hyperhq/nfs-server")
16+
pullImageIfNotExist("busybox")
17+
1518
volName := "testvolume"
1619
_, err := dockerCmd(c, "run", "-d", "--name=volserver", "-v", volName+":/data", "hyperhq/nfs-server")
1720
c.Assert(err, checker.Equals, 0)
@@ -26,6 +29,9 @@ func (s *DockerSuite) TestCliShareVolumeImplicitVolume(c *check.C) {
2629
defer printTestDuration(time.Now())
2730
testRequires(c, DaemonIsLinux)
2831

32+
pullImageIfNotExist("hyperhq/nfs-server")
33+
pullImageIfNotExist("busybox")
34+
2935
_, err := dockerCmd(c, "run", "-d", "--name=volserver", "-v", "/data", "hyperhq/nfs-server")
3036
c.Assert(err, checker.Equals, 0)
3137
_, err = dockerCmd(c, "run", "-d", "--name=volclient", "--volumes-from", "volserver", "busybox")
@@ -39,6 +45,9 @@ func (s *DockerSuite) TestCliShareVolumePopulatedVolume(c *check.C) {
3945
defer printTestDuration(time.Now())
4046
testRequires(c, DaemonIsLinux)
4147

48+
pullImageIfNotExist("hyperhq/nfs-server")
49+
pullImageIfNotExist("busybox")
50+
4251
_, err := dockerCmd(c, "run", "-d", "--name=volserver", "-v", "https://github.com/hyperhq/hypercli.git:/data", "hyperhq/nfs-server")
4352
c.Assert(err, checker.Equals, 0)
4453
_, err = dockerCmd(c, "run", "-d", "--name=volclient", "--volumes-from", "volserver", "busybox")
@@ -53,6 +62,8 @@ func (s *DockerSuite) TestCliShareVolumeBadSource(c *check.C) {
5362
defer printTestDuration(time.Now())
5463
testRequires(c, DaemonIsLinux)
5564

65+
pullImageIfNotExist("busybox")
66+
5667
_, err := dockerCmd(c, "run", "-d", "--name=volserver", "-v", "/data", "busybox")
5768
c.Assert(err, checker.Equals, 0)
5869
_, _, failErr := dockerCmdWithError("run", "-d", "--name=volclient", "--volumes-from", "volserver", "busybox")
@@ -64,6 +75,8 @@ func (s *DockerSuite) TestCliShareVolumeNoSource(c *check.C) {
6475
defer printTestDuration(time.Now())
6576
testRequires(c, DaemonIsLinux)
6677

78+
pullImageIfNotExist("busybox")
79+
6780
_, _, err := dockerCmdWithError("run", "-d", "--name=volclient", "--volumes-from", "volserver", "busybox")
6881
c.Assert(err, checker.NotNil)
6982
}
@@ -73,6 +86,9 @@ func (s *DockerSuite) TestCliShareVolumeNoVolume(c *check.C) {
7386
defer printTestDuration(time.Now())
7487
testRequires(c, DaemonIsLinux)
7588

89+
pullImageIfNotExist("hyperhq/nfs-server")
90+
pullImageIfNotExist("busybox")
91+
7692
_, err := dockerCmd(c, "run", "-d", "--name=volserver", "hyperhq/nfs-server")
7793
c.Assert(err, checker.Equals, 0)
7894
_, err = dockerCmd(c, "run", "-d", "--name=volclient", "--volumes-from", "volserver", "busybox")

integration-cli/util.conf.template

100755100644
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,8 @@ export MONGODB_URL="xxxxxx"
2727

2828
##For test load image from basic auth url
2929
export URL_WITH_BASIC_AUTH="http://xxxxxx:xxxxxx@test.hyper.sh/ubuntu.tar.gz"
30+
31+
## dockerhub account
32+
export DOCKERHUB_EMAIL="xxx@xx.xx"
33+
export DOCKERHUB_USERNAME="xxx"
34+
export DOCKERHUB_PASSWD="xxx"

integration-cli/util.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ case $1 in
7777
-e AWS_SECRET_KEY=${AWS_SECRET_KEY} \
7878
-e URL_WITH_BASIC_AUTH=${URL_WITH_BASIC_AUTH} \
7979
-e MONGODB_URL=${MONGODB_URL} \
80+
-e DOCKERHUB_EMAIL=${DOCKERHUB_EMAIL} \
81+
-e DOCKERHUB_USERNAME=${DOCKERHUB_USERNAME} \
82+
-e DOCKERHUB_PASSWD=${DOCKERHUB_PASSWD} \
8083
-v $(pwd)/../:/go/src/github.com/hyperhq/hypercli \
8184
${IMAGE_NAME}:dev zsh
8285
;;
@@ -92,6 +95,9 @@ case $1 in
9295
-e DOCKER_HOST=${HYPER_HOST} \
9396
-e ACCESS_KEY=${ACCESS_KEY} \
9497
-e SECRET_KEY=${SECRET_KEY} \
98+
-e DOCKERHUB_EMAIL=${DOCKERHUB_EMAIL} \
99+
-e DOCKERHUB_USERNAME=${DOCKERHUB_USERNAME} \
100+
-e DOCKERHUB_PASSWD=${DOCKERHUB_PASSWD} \
95101
${IMAGE_NAME}:qa go test -check.f TestCli -timeout 180m
96102
;;
97103
test)

0 commit comments

Comments
 (0)