55result=" NOT OK FAILED"
66
77# 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) "
99export 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"
1313
1414if [[ " $OSTYPE " == " darwin" * ]]; then
1515 DOCKER=docker
1818fi
1919
2020function log() {
21- >&2 /bin/echo " go-gssapi-test: $* "
21+ printf " go-gssapi-test: %s\n " " $* " >&2
2222}
2323
2424function 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
3131}
3232
3333function cleanup() {
3434 set +e
3535
36- if [[ " ${EXT_KDC_HOST} " == " " ]]; then
36+ if [[ " ${EXT_KDC_HOST:- } " == " " ]]; then
3737 log " kdc logs:
3838
3939"
@@ -43,28 +43,28 @@ function cleanup() {
4343 log " service logs:
4444
4545"
46- if [[ " $SERVICE_LOG_FILTER " != " " ]]; then
46+ if [[ " ${ SERVICE_LOG_FILTER:- } " != " " ]]; then
4747 $DOCKER logs service 2>&1 | egrep -v " gssapi-sample:\t[0-9 /:]+ ACCESS "
4848 else
4949 $DOCKER logs service 2>&1
5050 fi
5151
52- cleanup_containers
52+ cleanup_containers
5353
54- log " Clean up build directory"
55- rm -rf $ TEST_DIR
54+ log " Clean up build directory"
55+ rm -rf -- " ${ TEST_DIR:? } "
5656
5757 log $result
5858}
5959
6060function build_image() {
61- comp=$1
62- name=$2
63- func=$3
61+ comp=" $1 "
62+ name=" $2 "
63+ func=" $3 "
6464 img=" go-gssapi-test-${name} "
65- image=$( $DOCKER images --quiet ${img} )
65+ image=" $( $DOCKER images --quiet ${img} ) "
6666
67- if [[ " $REUSE_DOCKER_IMAGES " != " " && " $image " != " " ]]; then
67+ if [[ " ${ REUSE_DOCKER_IMAGES:- } " != " " && " $image " != " " ]]; then
6868 log " Reuse cached docker image ${img} ${image} "
6969 else
7070 log " Build docker image ${img} "
@@ -76,31 +76,36 @@ function build_image() {
7676 --rm \
7777 --quiet \
7878 --tag=${img} \
79- $DOCKER_DIR /${comp}
79+ " $DOCKER_DIR /${comp} "
8080 fi
8181}
8282
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+ #
8388function run_image() {
84- comp=$1
85- name=$2
86- options=$3
89+ comp=" $1 "
90+ name=" $2 "
91+ options=" $3 "
8792 img=" go-gssapi-test-${name} "
8893 log " Run docker image ${img} "
89- options=" ${options} \
94+ options=" ${options} \
9095 --hostname=${comp} \
9196 --name=${comp} \
9297 --env SERVICE_NAME=${SERVICE_NAME} \
9398 --env USER_NAME=${USER_NAME} \
9499 --env USER_PASSWORD=${USER_PASSWORD} \
95100 --env REALM_NAME=${REALM_NAME} \
96101 --env DOMAIN_NAME=${DOMAIN_NAME} "
97- $DOCKER run -P ${options} ${img}
102+ $DOCKER run -P ${options} ${img}
98103}
99104
100105function 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:]' ) "
104109 if [[ " ${OSTYPE} " == " darwin" * ]]; then
105110 b2d_ip=$( boot2docker ip)
106111 export ${COMP} _PORT_${port} _TCP_ADDR=${b2d_ip}
@@ -111,16 +116,16 @@ function map_ports() {
111116}
112117
113118function wait_until_available() {
114- comp=$1
115- addr=$2
116- port=$3
119+ comp=" $1 "
120+ addr=" $2 "
121+ port=" $3 "
117122
118- i=1
123+ let i=1
119124 while ! echo exit | nc $addr $port > /dev/null; do
120125 echo " Waiting for $comp to start"
121126 sleep 1
122- i= ` expr $i + 1 `
123- if [[ $i -gt 10 ]] ; then
127+ let i++
128+ if (( i > 10 )) ; then
124129 echo " Timed out waiting for ${comp} to start at ${addr} :${port} "
125130 exit 1
126131 fi
@@ -135,11 +140,11 @@ env_suffix=$(/bin/echo "${REALM_NAME}-${SERVICE_NAME}" | shasum | cut -f1 -d ' '
135140
136141# KDC
137142if [[ " ${EXT_KDC_HOST} " == " " ]]; then
138- cat $DOCKER_DIR /kdc/krb5.conf.template \
143+ cat " $DOCKER_DIR /kdc/krb5.conf.template" \
139144 | sed -e " s/KDC_ADDRESS/0.0.0.0:88/g" \
140145 | sed -e " s/DOMAIN_NAME/${DOMAIN_NAME} /g" \
141146 | sed -e " s/REALM_NAME/${REALM_NAME} /g" \
142- > $DOCKER_DIR /kdc/krb5.conf
147+ > " $DOCKER_DIR /kdc/krb5.conf"
143148
144149 build_image " kdc" " kdc-${env_suffix} " " " > /dev/null
145150 run_image " kdc" " kdc-${env_suffix} " " --detach" > /dev/null
151156wait_until_available " kdc" $KDC_PORT_88_TCP_ADDR $KDC_PORT_88_TCP_PORT
152157
153158function 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"
155160}
156161
157162function keytab_from_options() {
158- cp ${KEYTAB_FILE} $DOCKER_DIR /service/krb5.keytab
163+ cp " ${KEYTAB_FILE} " " $DOCKER_DIR /service/krb5.keytab"
159164}
160165
161- if [[ " ${EXT_KDC_HOST} " == " " ]]; then
166+ if [[ " ${EXT_KDC_HOST:- } " == " " ]]; then
162167 DOCKER_KDC_OPTS=' --link=kdc:kdc'
163168 KEYTAB_FUNCTION=' keytab_from_kdc'
164169else
@@ -191,14 +196,14 @@ if [[ "$OSTYPE" != "darwin"* || "$CLIENT_IN_CONTAINER" != "" ]]; then
191196else
192197 log " Run gssapi sample client on host"
193198 KRB5_CONFIG_TEMPLATE=${DOCKER_DIR} /client/krb5.conf.template \
194- DOMAIN_NAME=${DOMAIN_NAME} \
199+ DOMAIN_NAME=" ${DOMAIN_NAME} " \
195200 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"
202207fi
203208
204209result=" OK TEST PASSED"
0 commit comments