5
5
result=" NOT OK FAILED"
6
6
7
7
# boot2docker doesn't seem to like /tmp so use the home direcotry for the build
8
- BASE_DIR=$( cd .. && pwd)
8
+ BASE_DIR=" $( cd .. && pwd) "
9
9
export TEST_DIR=" $HOME /tmp/$( uuidgen) "
10
- mkdir -p $TEST_DIR
11
- cp -R $BASE_DIR $TEST_DIR
12
- DOCKER_DIR=$TEST_DIR /gssapi/test/docker
10
+ mkdir -p -- " $TEST_DIR "
11
+ cp -R " $BASE_DIR " " $TEST_DIR "
12
+ DOCKER_DIR=" $TEST_DIR /gssapi/test/docker"
13
13
14
14
if [[ " $OSTYPE " == " darwin" * ]]; then
15
15
DOCKER=docker
18
18
fi
19
19
20
20
function log() {
21
- >&2 /bin/echo " go-gssapi-test: $* "
21
+ printf " go-gssapi-test: %s\n " " $* " >&2
22
22
}
23
23
24
24
function cleanup_containers() {
25
- log " Clean up running containers"
26
- running=` $DOCKER ps --all | grep ' go-gssapi-test' | awk ' {print $1}' `
27
- if [[ " $running " != " " ]]; then
28
- echo $running | xargs $DOCKER stop > /dev/null
29
- echo $running | xargs $DOCKER rm > /dev/null
30
- fi
25
+ log " Clean up running containers"
26
+ running=` $DOCKER ps --all | grep ' go-gssapi-test' | awk ' {print $1}' `
27
+ if [[ " $running " != " " ]]; then
28
+ echo $running | xargs $DOCKER stop > /dev/null
29
+ echo $running | xargs $DOCKER rm > /dev/null
30
+ fi
31
31
}
32
32
33
33
function cleanup() {
34
34
set +e
35
35
36
- if [[ " ${EXT_KDC_HOST} " == " " ]]; then
36
+ if [[ " ${EXT_KDC_HOST:- } " == " " ]]; then
37
37
log " kdc logs:
38
38
39
39
"
@@ -43,28 +43,28 @@ function cleanup() {
43
43
log " service logs:
44
44
45
45
"
46
- if [[ " $SERVICE_LOG_FILTER " != " " ]]; then
46
+ if [[ " ${ SERVICE_LOG_FILTER:- } " != " " ]]; then
47
47
$DOCKER logs service 2>&1 | egrep -v " gssapi-sample:\t[0-9 /:]+ ACCESS "
48
48
else
49
49
$DOCKER logs service 2>&1
50
50
fi
51
51
52
- cleanup_containers
52
+ cleanup_containers
53
53
54
- log " Clean up build directory"
55
- rm -rf $ TEST_DIR
54
+ log " Clean up build directory"
55
+ rm -rf -- " ${ TEST_DIR:? } "
56
56
57
57
log $result
58
58
}
59
59
60
60
function build_image() {
61
- comp=$1
62
- name=$2
63
- func=$3
61
+ comp=" $1 "
62
+ name=" $2 "
63
+ func=" $3 "
64
64
img=" go-gssapi-test-${name} "
65
- image=$( $DOCKER images --quiet ${img} )
65
+ image=" $( $DOCKER images --quiet ${img} ) "
66
66
67
- if [[ " $REUSE_DOCKER_IMAGES " != " " && " $image " != " " ]]; then
67
+ if [[ " ${ REUSE_DOCKER_IMAGES:- } " != " " && " $image " != " " ]]; then
68
68
log " Reuse cached docker image ${img} ${image} "
69
69
else
70
70
log " Build docker image ${img} "
@@ -76,31 +76,36 @@ function build_image() {
76
76
--rm \
77
77
--quiet \
78
78
--tag=${img} \
79
- $DOCKER_DIR /${comp}
79
+ " $DOCKER_DIR /${comp} "
80
80
fi
81
81
}
82
82
83
+ # Caveat: Quote characters in USER_PASSWORD may cause Severe Pain.
84
+ # Don't do that.
85
+ # This only has to handle Docker tests, not quite the Real World,
86
+ # so we can get away with this restriction.
87
+ #
83
88
function run_image() {
84
- comp=$1
85
- name=$2
86
- options=$3
89
+ comp=" $1 "
90
+ name=" $2 "
91
+ options=" $3 "
87
92
img=" go-gssapi-test-${name} "
88
93
log " Run docker image ${img} "
89
- options=" ${options} \
94
+ options=" ${options} \
90
95
--hostname=${comp} \
91
96
--name=${comp} \
92
97
--env SERVICE_NAME=${SERVICE_NAME} \
93
98
--env USER_NAME=${USER_NAME} \
94
99
--env USER_PASSWORD=${USER_PASSWORD} \
95
100
--env REALM_NAME=${REALM_NAME} \
96
101
--env DOMAIN_NAME=${DOMAIN_NAME} "
97
- $DOCKER run -P ${options} ${img}
102
+ $DOCKER run -P ${options} ${img}
98
103
}
99
104
100
105
function map_ports() {
101
- comp=$1
102
- port=$2
103
- COMP=` echo $comp | tr ' [:lower:]' ' [:upper:]' `
106
+ comp=" $1 "
107
+ port=" $2 "
108
+ COMP=" $( printf " %s\n " " $comp " | tr ' [:lower:]' ' [:upper:]' ) "
104
109
if [[ " ${OSTYPE} " == " darwin" * ]]; then
105
110
b2d_ip=$( boot2docker ip)
106
111
export ${COMP} _PORT_${port} _TCP_ADDR=${b2d_ip}
@@ -111,16 +116,16 @@ function map_ports() {
111
116
}
112
117
113
118
function wait_until_available() {
114
- comp=$1
115
- addr=$2
116
- port=$3
119
+ comp=" $1 "
120
+ addr=" $2 "
121
+ port=" $3 "
117
122
118
- i=1
123
+ let i=1
119
124
while ! echo exit | nc $addr $port > /dev/null; do
120
125
echo " Waiting for $comp to start"
121
126
sleep 1
122
- i= ` expr $i + 1 `
123
- if [[ $i -gt 10 ]] ; then
127
+ let i++
128
+ if (( i > 10 )) ; then
124
129
echo " Timed out waiting for ${comp} to start at ${addr} :${port} "
125
130
exit 1
126
131
fi
@@ -135,11 +140,11 @@ env_suffix=$(/bin/echo "${REALM_NAME}-${SERVICE_NAME}" | shasum | cut -f1 -d ' '
135
140
136
141
# KDC
137
142
if [[ " ${EXT_KDC_HOST} " == " " ]]; then
138
- cat $DOCKER_DIR /kdc/krb5.conf.template \
143
+ cat " $DOCKER_DIR /kdc/krb5.conf.template" \
139
144
| sed -e " s/KDC_ADDRESS/0.0.0.0:88/g" \
140
145
| sed -e " s/DOMAIN_NAME/${DOMAIN_NAME} /g" \
141
146
| sed -e " s/REALM_NAME/${REALM_NAME} /g" \
142
- > $DOCKER_DIR /kdc/krb5.conf
147
+ > " $DOCKER_DIR /kdc/krb5.conf"
143
148
144
149
build_image " kdc" " kdc-${env_suffix} " " " > /dev/null
145
150
run_image " kdc" " kdc-${env_suffix} " " --detach" > /dev/null
151
156
wait_until_available " kdc" $KDC_PORT_88_TCP_ADDR $KDC_PORT_88_TCP_PORT
152
157
153
158
function keytab_from_kdc() {
154
- $DOCKER cp kdc:/etc/docker-kdc/krb5.keytab $DOCKER_DIR /service
159
+ $DOCKER cp kdc:/etc/docker-kdc/krb5.keytab " $DOCKER_DIR /service"
155
160
}
156
161
157
162
function keytab_from_options() {
158
- cp ${KEYTAB_FILE} $DOCKER_DIR /service/krb5.keytab
163
+ cp " ${KEYTAB_FILE} " " $DOCKER_DIR /service/krb5.keytab"
159
164
}
160
165
161
- if [[ " ${EXT_KDC_HOST} " == " " ]]; then
166
+ if [[ " ${EXT_KDC_HOST:- } " == " " ]]; then
162
167
DOCKER_KDC_OPTS=' --link=kdc:kdc'
163
168
KEYTAB_FUNCTION=' keytab_from_kdc'
164
169
else
@@ -191,14 +196,14 @@ if [[ "$OSTYPE" != "darwin"* || "$CLIENT_IN_CONTAINER" != "" ]]; then
191
196
else
192
197
log " Run gssapi sample client on host"
193
198
KRB5_CONFIG_TEMPLATE=${DOCKER_DIR} /client/krb5.conf.template \
194
- DOMAIN_NAME=${DOMAIN_NAME} \
199
+ DOMAIN_NAME=" ${DOMAIN_NAME} " \
195
200
GSSAPI_PATH=/opt/local/lib/libgssapi_krb5.dylib \
196
- KRB5_CONFIG=${TEST_DIR} /krb5.conf \
197
- REALM_NAME=${REALM_NAME} \
198
- SERVICE_NAME=${SERVICE_NAME} \
199
- USER_NAME=${USER_NAME} \
200
- USER_PASSWORD=${USER_PASSWORD} \
201
- ${DOCKER_DIR} /client/entrypoint.sh
201
+ KRB5_CONFIG=" ${TEST_DIR} /krb5.conf" \
202
+ REALM_NAME=" ${REALM_NAME} " \
203
+ SERVICE_NAME=" ${SERVICE_NAME} " \
204
+ USER_NAME=" ${USER_NAME} " \
205
+ USER_PASSWORD=" ${USER_PASSWORD} " \
206
+ " ${DOCKER_DIR} /client/entrypoint.sh"
202
207
fi
203
208
204
209
result=" OK TEST PASSED"
0 commit comments