Skip to content

Commit f7c1af9

Browse files
committed
increase es wait
1 parent 5f62b13 commit f7c1af9

File tree

1 file changed

+186
-0
lines changed

1 file changed

+186
-0
lines changed

scripts/wait-for-it-es.sh

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
#!/usr/bin/env bash
2+
# Use this script to test if a given TCP host/port are available
3+
4+
######################################################
5+
# Copied from https://github.com/vishnubob/wait-for-it
6+
######################################################
7+
8+
WAITFORIT_cmdname=${0##*/}
9+
10+
echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
11+
12+
usage()
13+
{
14+
cat << USAGE >&2
15+
Usage:
16+
$WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
17+
-h HOST | --host=HOST Host or IP under test
18+
-p PORT | --port=PORT TCP port under test
19+
Alternatively, you specify the host and port as host:port
20+
-s | --strict Only execute subcommand if the test succeeds
21+
-q | --quiet Don't output any status messages
22+
-t TIMEOUT | --timeout=TIMEOUT
23+
Timeout in seconds, zero for no timeout
24+
-- COMMAND ARGS Execute command with args after the test finishes
25+
USAGE
26+
exit 1
27+
}
28+
29+
wait_for()
30+
{
31+
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
32+
echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
33+
else
34+
echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
35+
fi
36+
WAITFORIT_start_ts=$(date +%s)
37+
while :
38+
do
39+
if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
40+
nc -z $WAITFORIT_HOST $WAITFORIT_PORT
41+
WAITFORIT_result=$?
42+
else
43+
(echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
44+
WAITFORIT_result=$?
45+
fi
46+
if [[ $WAITFORIT_result -eq 0 ]]; then
47+
WAITFORIT_end_ts=$(date +%s)
48+
echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
49+
break
50+
fi
51+
sleep 1
52+
done
53+
return $WAITFORIT_result
54+
}
55+
56+
wait_for_wrapper()
57+
{
58+
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
59+
if [[ $WAITFORIT_QUIET -eq 1 ]]; then
60+
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
61+
else
62+
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
63+
fi
64+
WAITFORIT_PID=$!
65+
trap "kill -INT -$WAITFORIT_PID" INT
66+
wait $WAITFORIT_PID
67+
WAITFORIT_RESULT=$?
68+
if [[ $WAITFORIT_RESULT -ne 0 ]]; then
69+
echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
70+
fi
71+
return $WAITFORIT_RESULT
72+
}
73+
74+
# process arguments
75+
while [[ $# -gt 0 ]]
76+
do
77+
case "$1" in
78+
*:* )
79+
WAITFORIT_hostport=(${1//:/ })
80+
WAITFORIT_HOST=${WAITFORIT_hostport[0]}
81+
WAITFORIT_PORT=${WAITFORIT_hostport[1]}
82+
shift 1
83+
;;
84+
--child)
85+
WAITFORIT_CHILD=1
86+
shift 1
87+
;;
88+
-q | --quiet)
89+
WAITFORIT_QUIET=1
90+
shift 1
91+
;;
92+
-s | --strict)
93+
WAITFORIT_STRICT=1
94+
shift 1
95+
;;
96+
-h)
97+
WAITFORIT_HOST="$2"
98+
if [[ $WAITFORIT_HOST == "" ]]; then break; fi
99+
shift 2
100+
;;
101+
--host=*)
102+
WAITFORIT_HOST="${1#*=}"
103+
shift 1
104+
;;
105+
-p)
106+
WAITFORIT_PORT="$2"
107+
if [[ $WAITFORIT_PORT == "" ]]; then break; fi
108+
shift 2
109+
;;
110+
--port=*)
111+
WAITFORIT_PORT="${1#*=}"
112+
shift 1
113+
;;
114+
-t)
115+
WAITFORIT_TIMEOUT="$2"
116+
if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
117+
shift 2
118+
;;
119+
--timeout=*)
120+
WAITFORIT_TIMEOUT="${1#*=}"
121+
shift 1
122+
;;
123+
--)
124+
shift
125+
WAITFORIT_CLI=("$@")
126+
break
127+
;;
128+
--help)
129+
usage
130+
;;
131+
*)
132+
echoerr "Unknown argument: $1"
133+
usage
134+
;;
135+
esac
136+
done
137+
138+
if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
139+
echoerr "Error: you need to provide a host and port to test."
140+
usage
141+
fi
142+
143+
WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-45}
144+
WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
145+
WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
146+
WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
147+
148+
# Check to see if timeout is from busybox?
149+
WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
150+
WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
151+
152+
WAITFORIT_BUSYTIMEFLAG=""
153+
if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
154+
WAITFORIT_ISBUSY=1
155+
# Check if busybox timeout uses -t flag
156+
# (recent Alpine versions don't support -t anymore)
157+
if timeout &>/dev/stdout | grep -q -e '-t '; then
158+
WAITFORIT_BUSYTIMEFLAG="-t"
159+
fi
160+
else
161+
WAITFORIT_ISBUSY=0
162+
fi
163+
164+
if [[ $WAITFORIT_CHILD -gt 0 ]]; then
165+
wait_for
166+
WAITFORIT_RESULT=$?
167+
exit $WAITFORIT_RESULT
168+
else
169+
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
170+
wait_for_wrapper
171+
WAITFORIT_RESULT=$?
172+
else
173+
wait_for
174+
WAITFORIT_RESULT=$?
175+
fi
176+
fi
177+
178+
if [[ $WAITFORIT_CLI != "" ]]; then
179+
if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
180+
echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
181+
exit $WAITFORIT_RESULT
182+
fi
183+
exec "${WAITFORIT_CLI[@]}"
184+
else
185+
exit $WAITFORIT_RESULT
186+
fi

0 commit comments

Comments
 (0)