Skip to content

Commit 813057e

Browse files
committed
Merge pull request #1219 from deis/component-tests
test(components): add unit and functional tests, go integration tests
2 parents 5b2b6c0 + 59dc4ad commit 813057e

147 files changed

Lines changed: 18133 additions & 130 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,20 @@ status: check-fleet
118118
stop: check-fleet
119119
$(FLEETCTL) stop -block-attempts=600 $(strip $(call deis_units,launched,active))
120120

121-
tests:
122-
cd test && bundle install && bundle exec rake
121+
test: test-components test-integration
122+
123+
test-components:
124+
@$(foreach C,$(ALL_COMPONENTS), \
125+
echo \\nTesting deis/$(C) ; \
126+
$(MAKE) -C $(C) test ; \
127+
)
128+
129+
test-integration:
130+
$(MAKE) -C tests/ test
131+
132+
test-smoke:
133+
$(MAKE) -C tests/ test-smoke
123134

124135
uninstall: check-fleet stop
125-
$(FLEETCTL) unload $(call deis_units,launched,.)
136+
$(FLEETCTL) unload -block-attempts=600 $(call deis_units,launched,.)
126137
$(FLEETCTL) destroy $(strip $(call deis_units,.,.))

builder/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,11 @@ clean: uninstall
2626

2727
full-clean: clean
2828
$(call ssh_all,'sudo docker rmi deis/builder')
29+
30+
test: test-unit test-functional
31+
32+
test-unit:
33+
@echo no unit tests
34+
35+
test-functional:
36+
GOPATH=$(CURDIR)/../tests/_vendor:$(GOPATH) go test -v -timeout 15m ./tests/...
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package tests
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
"time"
7+
8+
"github.com/deis/deis/tests/dockercliutils"
9+
"github.com/deis/deis/tests/etcdutils"
10+
"github.com/deis/deis/tests/utils"
11+
)
12+
13+
func runDeisBuilderTest(
14+
t *testing.T, testSessionUID string, etcdPort string, servicePort string) {
15+
cli, stdout, stdoutPipe := dockercliutils.GetNewClient()
16+
done := make(chan bool, 1)
17+
dockercliutils.BuildDockerfile(t, "../", "deis/builder:"+testSessionUID)
18+
dockercliutils.RunDeisDataTest(t, "--name", "deis-builder-data",
19+
"-v", "/var/lib/docker", "deis/base", "/bin/true")
20+
//docker run --name deis-builder -p 2223:22 -e PUBLISH=22
21+
// -e HOST=${COREOS_PRIVATE_IPV4} -e PORT=2223
22+
// --volumes-from deis-builder-data --privileged deis/builder
23+
IPAddress := utils.GetHostIPAddress()
24+
done <- true
25+
go func() {
26+
<-done
27+
dockercliutils.RunContainer(t, cli, "--name",
28+
"deis-builder-"+testSessionUID,
29+
"-p", servicePort+":22",
30+
"-e", "PUBLISH=22",
31+
"-e", "STORAGE_DRIVER=devicemapper",
32+
"-e", "HOST="+IPAddress,
33+
"-e", "ETCD_PORT="+etcdPort,
34+
"-e", "PORT="+servicePort,
35+
"--volumes-from", "deis-builder-data",
36+
"--privileged", "deis/builder:"+testSessionUID)
37+
}()
38+
time.Sleep(5000 * time.Millisecond)
39+
dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "deis-builder running")
40+
}
41+
42+
func TestBuild(t *testing.T) {
43+
setkeys := []string{"/deis/registry/protocol",
44+
"deis/registry/host",
45+
"/deis/registry/port",
46+
"/deis/cache/host",
47+
"/deis/cache/port"}
48+
setdir := []string{"/deis/controller",
49+
"/deis/cache",
50+
"/deis/database",
51+
"/deis/registry",
52+
"/deis/domains"}
53+
var testSessionUID = utils.NewUuid()
54+
fmt.Println("UUID for the session Builder Test :" + testSessionUID)
55+
etcdPort := utils.GetRandomPort()
56+
servicePort := utils.GetRandomPort()
57+
dockercliutils.RunEtcdTest(t, testSessionUID, etcdPort)
58+
Builderhandler := etcdutils.InitetcdValues(setdir, setkeys, etcdPort)
59+
etcdutils.Publishvalues(t, Builderhandler)
60+
fmt.Println("starting Builder Component test")
61+
runDeisBuilderTest(t, testSessionUID, etcdPort, servicePort)
62+
// TODO: builder needs a few seconds to wake up here--fixme!
63+
time.Sleep(5000 * time.Millisecond)
64+
dockercliutils.DeisServiceTest(
65+
t, "deis-builder-"+testSessionUID, servicePort, "tcp")
66+
dockercliutils.ClearTestSession(t, testSessionUID)
67+
}

cache/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,11 @@ clean: uninstall
2626

2727
full-clean: clean
2828
$(call ssh_all,'sudo docker rmi deis/cache')
29+
30+
test: test-unit test-functional
31+
32+
test-unit:
33+
@echo no unit tests
34+
35+
test-functional:
36+
GOPATH=$(CURDIR)/../tests/_vendor:$(GOPATH) go test -v ./tests/...

cache/tests/cacheComponent_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package tests
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/deis/deis/tests/dockercliutils"
8+
"github.com/deis/deis/tests/utils"
9+
)
10+
11+
func runDeisCacheTest(t *testing.T, testSessionUID string, etcdPort string, servicePort string) {
12+
cli, stdout, stdoutPipe := dockercliutils.GetNewClient()
13+
done := make(chan bool, 1)
14+
dockercliutils.BuildDockerfile(t, "../", "deis/cache:"+testSessionUID)
15+
IPAddress := utils.GetHostIPAddress()
16+
done <- true
17+
go func() {
18+
<-done
19+
//docker run --name deis-cache -p 6379:6379 -e PUBLISH=6379
20+
// -e HOST=${COREOS_PRIVATE_IPV4} deis/cache
21+
dockercliutils.RunContainer(t, cli, "--name",
22+
"deis-cache-"+testSessionUID,
23+
"-p", servicePort+":6379",
24+
"-e", "PUBLISH="+servicePort,
25+
"-e", "HOST="+IPAddress,
26+
"-e", "ETCD_PORT="+etcdPort,
27+
"deis/cache:"+testSessionUID)
28+
}()
29+
dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "started")
30+
}
31+
32+
func TestBuild(t *testing.T) {
33+
var testSessionUID = utils.NewUuid()
34+
fmt.Println("UUID for the session Cache Test :" + testSessionUID)
35+
etcdPort := utils.GetRandomPort()
36+
servicePort := utils.GetRandomPort()
37+
dockercliutils.RunEtcdTest(t, testSessionUID, etcdPort)
38+
fmt.Println("starting cache component test:")
39+
runDeisCacheTest(t, testSessionUID, etcdPort, servicePort)
40+
dockercliutils.DeisServiceTest(
41+
t, "deis-cache-"+testSessionUID, servicePort, "tcp")
42+
dockercliutils.ClearTestSession(t, testSessionUID)
43+
}

controller/Makefile

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@ clean: uninstall
3131
full-clean: clean
3232
$(call ssh_all,'sudo docker rmi deis/controller')
3333

34-
test:
35-
python manage.py test --noinput api
36-
3734
runserver:
3835
python manage.py runserver
3936

@@ -46,3 +43,13 @@ coverage:
4643

4744
flake8:
4845
flake8
46+
47+
test: test-unit test-functional
48+
49+
test-unit:
50+
@if [ ! -d venv ]; then virtualenv venv; fi
51+
venv/bin/pip install -q -r requirements.txt
52+
venv/bin/python manage.py test --noinput api
53+
54+
test-functional:
55+
GOPATH=$(CURDIR)/../tests/_vendor:$(GOPATH) go test -v ./tests/...
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package tests
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
"time"
7+
8+
"github.com/deis/deis/tests/dockercliutils"
9+
"github.com/deis/deis/tests/etcdutils"
10+
"github.com/deis/deis/tests/mockserviceutils"
11+
"github.com/deis/deis/tests/utils"
12+
)
13+
14+
func runDeisControllerTest(t *testing.T, testSessionUID string, etcdPort string, servicePort string) {
15+
cli, stdout, stdoutPipe := dockercliutils.GetNewClient()
16+
done := make(chan bool, 1)
17+
dockercliutils.BuildDockerfile(t, "../", "deis/controller:"+testSessionUID)
18+
//docker run --name deis-controller -p 8000:8000 -e PUBLISH=8000
19+
// -e HOST=${COREOS_PRIVATE_IPV4} --volumes-from=deis-logger deis/controller
20+
IPAddress := utils.GetHostIPAddress()
21+
done <- true
22+
go func() {
23+
<-done
24+
dockercliutils.RunContainer(t, cli, "--name",
25+
"deis-controller-"+testSessionUID,
26+
"-p", servicePort+":8000",
27+
"-e", "PUBLISH="+servicePort,
28+
"-e", "HOST="+IPAddress,
29+
"-e", "ETCD_PORT="+etcdPort,
30+
"deis/controller:"+testSessionUID)
31+
}()
32+
time.Sleep(5000 * time.Millisecond)
33+
dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "Booting")
34+
35+
}
36+
37+
func TestBuild(t *testing.T) {
38+
setkeys := []string{"/deis/registry/protocol",
39+
"deis/registry/host",
40+
"/deis/registry/port",
41+
"/deis/cache/host",
42+
"/deis/cache/port"}
43+
setdir := []string{"/deis/controller",
44+
"/deis/cache",
45+
"/deis/database",
46+
"/deis/registry",
47+
"/deis/domains"}
48+
var testSessionUID = utils.NewUuid()
49+
fmt.Println("UUID for the session Controller Test :" + testSessionUID)
50+
etcdPort := utils.GetRandomPort()
51+
servicePort := utils.GetRandomPort()
52+
dbPort := utils.GetRandomPort()
53+
dockercliutils.RunEtcdTest(t, testSessionUID, etcdPort)
54+
fmt.Println("starting controller test:")
55+
Controllerhandler := etcdutils.InitetcdValues(setdir, setkeys, etcdPort)
56+
etcdutils.Publishvalues(t, Controllerhandler)
57+
mockserviceutils.RunMockDatabase(t, testSessionUID, etcdPort, dbPort)
58+
fmt.Println("starting Controller component test")
59+
runDeisControllerTest(t, testSessionUID, etcdPort, servicePort)
60+
dockercliutils.DeisServiceTest(
61+
t, "deis-controller-"+testSessionUID, servicePort, "http")
62+
dockercliutils.ClearTestSession(t, testSessionUID)
63+
}

database/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,11 @@ clean: uninstall
2626

2727
full-clean: clean
2828
$(call ssh_all,'sudo docker rmi deis/database')
29+
30+
test: test-unit test-functional
31+
32+
test-unit:
33+
@echo no unit tests
34+
35+
test-functional:
36+
GOPATH=$(CURDIR)/../tests/_vendor:$(GOPATH) go test -v ./tests/...
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package tests
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/deis/deis/tests/dockercliutils"
8+
"github.com/deis/deis/tests/utils"
9+
)
10+
11+
func runDeisDatabaseTest(
12+
t *testing.T, testSessionUID string, etcdPort string, servicePort string) {
13+
cli, stdout, stdoutPipe := dockercliutils.GetNewClient()
14+
done := make(chan bool, 1)
15+
dockercliutils.BuildDockerfile(t, "../", "deis/database:"+testSessionUID)
16+
dockercliutils.RunDeisDataTest(t, "--name", "deis-database-data",
17+
"-v", "/var/lib/postgresql", "deis/base", "true")
18+
IPAddress := utils.GetHostIPAddress()
19+
done <- true
20+
go func() {
21+
<-done
22+
//docker run --name deis-database -p 5432:5432 -e PUBLISH=5432
23+
// -e HOST=${COREOS_PRIVATE_IPV4}
24+
// --volumes-from deis-database-data deis/database
25+
dockercliutils.RunContainer(t, cli, "--name",
26+
"deis-database-"+testSessionUID,
27+
"-p", servicePort+":5432",
28+
"-e", "PUBLISH="+servicePort,
29+
"-e", "HOST="+IPAddress,
30+
"-e", "ETCD_PORT="+etcdPort,
31+
"--volumes-from", "deis-database-data",
32+
"deis/database:"+testSessionUID)
33+
}()
34+
dockercliutils.PrintToStdout(t, stdout, stdoutPipe, "deis-database running")
35+
}
36+
37+
func TestBuild(t *testing.T) {
38+
var testSessionUID = utils.NewUuid()
39+
fmt.Println("UUID for the session Cache Test :" + testSessionUID)
40+
etcdPort := utils.GetRandomPort()
41+
servicePort := utils.GetRandomPort()
42+
dockercliutils.RunEtcdTest(t, testSessionUID, etcdPort)
43+
fmt.Println("starting Database component test:")
44+
runDeisDatabaseTest(t, testSessionUID, etcdPort, servicePort)
45+
dockercliutils.DeisServiceTest(
46+
t, "deis-database-"+testSessionUID, servicePort, "tcp")
47+
dockercliutils.ClearTestSession(t, testSessionUID)
48+
}

logger/Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,11 @@ clean: uninstall
2626

2727
full-clean: clean
2828
$(call ssh_all,'sudo docker rmi deis/logger')
29+
30+
test: test-unit test-functional
31+
32+
test-unit:
33+
@echo no unit tests
34+
35+
test-functional:
36+
GOPATH=$(CURDIR)/../tests/_vendor:$(GOPATH) go test -v ./tests/...

0 commit comments

Comments
 (0)