-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtest-setup.sh
More file actions
executable file
·138 lines (116 loc) · 5.7 KB
/
test-setup.sh
File metadata and controls
executable file
·138 lines (116 loc) · 5.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
#
# Prepares the process environment to run a test
function log_phase {
echo
echo ">>> $1 <<<"
echo
}
log_phase "Preparing test environment"
# use GOPATH to determine project root
export DEIS_ROOT=${GOPATH?}/src/github.com/deis/deis
echo "DEIS_ROOT=$DEIS_ROOT"
# prepend GOPATH/bin to PATH
export PATH=${GOPATH}/bin:$PATH
# the application under test
export DEIS_TEST_APP=${DEIS_TEST_APP:-example-go}
echo "DEIS_TEST_APP=$DEIS_TEST_APP"
# SSH key name used for testing
export DEIS_TEST_AUTH_KEY=${DEIS_TEST_AUTH_KEY:-deis-test}
echo "DEIS_TEST_AUTH_KEY=$DEIS_TEST_AUTH_KEY"
# SSH key used for deisctl tunneling
export DEIS_TEST_SSH_KEY=${DEIS_TEST_SSH_KEY:-~/.vagrant.d/insecure_private_key}
echo "DEIS_TEST_SSH_KEY=$DEIS_TEST_SSH_KEY"
# domain used for wildcard DNS
export DEIS_TEST_DOMAIN=${DEIS_TEST_DOMAIN:-local3.deisapp.com}
echo "DEIS_TEST_DOMAIN=$DEIS_TEST_DOMAIN"
# SSH tunnel used by deisctl
export DEISCTL_TUNNEL=${DEISCTL_TUNNEL:-127.0.0.1:2222}
echo "DEISCTL_TUNNEL=$DEISCTL_TUNNEL"
# set units used by deisctl
export DEISCTL_UNITS=${DEISCTL_UNITS:-$DEIS_ROOT/deisctl/units}
echo "DEISCTL_UNITS=$DEISCTL_UNITS"
# ip address for docker containers to communicate in functional tests
export HOST_IPADDR=${HOST_IPADDR?}
echo "HOST_IPADDR=$HOST_IPADDR"
# the registry used to host dev-release images
# must be accessible to local Docker engine and Deis cluster
export DEV_REGISTRY=${DEV_REGISTRY?}
echo "DEV_REGISTRY=$DEV_REGISTRY"
# bail if registry is not accessible
if ! curl -s $DEV_REGISTRY; then
echo "DEV_REGISTRY is not accessible, exiting..."
exit 1
fi
echo ; echo
# disable git+ssh host key checking
export GIT_SSH=$DEIS_ROOT/tests/bin/git-ssh-nokeycheck.sh
# install required go dependencies
go get -v github.com/golang/lint/golint
go get -v github.com/tools/godep
# cleanup any stale example applications
rm -rf $DEIS_ROOT/tests/example-*
# generate ssh key if it doesn't already exist
test -e ~/.ssh/$DEIS_TEST_AUTH_KEY || ssh-keygen -t rsa -f ~/.ssh/$DEIS_TEST_AUTH_KEY -N ''
# prepare the SSH agent
ssh-add -D || eval $(ssh-agent) && ssh-add -D
ssh-add ~/.ssh/$DEIS_TEST_AUTH_KEY
ssh-add $DEIS_TEST_SSH_KEY
# clean out deis session data
rm -rf ~/.deis
# clean out vagrant environment
$THIS_DIR/halt-all-vagrants.sh
vagrant destroy --force
# wipe out all vagrants & deis virtualboxen
function cleanup {
log_phase "Cleaning up"
set +e
${GOPATH}/src/github.com/deis/deis/tests/bin/destroy-all-vagrants.sh
VBoxManage list vms | grep deis | sed -n -e 's/^.* {\(.*\)}/\1/p' | xargs -L1 -I {} VBoxManage unregistervm {} --delete
vagrant global-status --prune
docker rm -f -v `docker ps | grep deis- | awk '{print $1}'` 2>/dev/null
log_phase "Test run complete"
}
function dump_logs {
log_phase "Error detected, dumping logs"
set +e
export FLEETCTL_TUNNEL=$DEISCTL_TUNNEL
set -x
fleetctl -strict-host-key-checking=false list-units
# application unit logs
fleetctl -strict-host-key-checking=false ssh appssample_v2.web.1 docker logs appssample_v2.web.1
fleetctl -strict-host-key-checking=false ssh appssample_v2.run.1 docker logs appssample_v2.run.1
fleetctl -strict-host-key-checking=false ssh buildsample_v2.web.1 docker logs buildsample_v2.web.1
fleetctl -strict-host-key-checking=false ssh buildsample_v3.cmd.1 docker logs buildsample_v3.cmd.1
fleetctl -strict-host-key-checking=false ssh deispullsample_v2.cmd.1 docker logs deispullsample_v2.cmd.1
fleetctl -strict-host-key-checking=false ssh deispullsample_v2.worker.1 docker logs deispullsample_v2.worker.1
fleetctl -strict-host-key-checking=false ssh pssample_v2.worker.1 docker logs pssample_v2.worker.1
fleetctl -strict-host-key-checking=false ssh pssample_v2.worker.2 docker logs pssample_v2.worker.2
# etcd keyspace
fleetctl -strict-host-key-checking=false ssh deis-controller etcdctl ls / --recursive
# component logs
fleetctl -strict-host-key-checking=false ssh deis-builder docker logs deis-builder
fleetctl -strict-host-key-checking=false ssh deis-controller docker logs deis-controller
fleetctl -strict-host-key-checking=false ssh deis-database docker logs deis-database
fleetctl -strict-host-key-checking=false ssh deis-logger docker logs deis-logger
fleetctl -strict-host-key-checking=false ssh deis-registry docker logs deis-registry
fleetctl -strict-host-key-checking=false ssh deis-router@1 docker logs deis-router
fleetctl -strict-host-key-checking=false ssh deis-router@2 docker logs deis-router
fleetctl -strict-host-key-checking=false ssh deis-router@3 docker logs deis-router
# deis-store logs
fleetctl -strict-host-key-checking=false ssh deis-router@1 docker logs deis-store-monitor
fleetctl -strict-host-key-checking=false ssh deis-router@1 docker logs deis-store-daemon
fleetctl -strict-host-key-checking=false ssh deis-router@1 docker logs deis-store-metadata
fleetctl -strict-host-key-checking=false ssh deis-router@1 docker logs deis-store-volume
fleetctl -strict-host-key-checking=false ssh deis-router@2 docker logs deis-store-monitor
fleetctl -strict-host-key-checking=false ssh deis-router@2 docker logs deis-store-daemon
fleetctl -strict-host-key-checking=false ssh deis-router@2 docker logs deis-store-metadata
fleetctl -strict-host-key-checking=false ssh deis-router@2 docker logs deis-store-volume
fleetctl -strict-host-key-checking=false ssh deis-router@3 docker logs deis-store-monitor
fleetctl -strict-host-key-checking=false ssh deis-router@3 docker logs deis-store-daemon
fleetctl -strict-host-key-checking=false ssh deis-router@3 docker logs deis-store-metadata
fleetctl -strict-host-key-checking=false ssh deis-router@3 docker logs deis-store-volume
fleetctl -strict-host-key-checking=false ssh deis-store-gateway docker logs deis-store-gateway
set +x
exit 1
}