druid/examples/twitter/run_server.sh

68 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
echo "This will run RealtimeStandaloneMain service in background"
set +u
shopt -s xpg_echo
shopt -s expand_aliases
PF=./twitter4j.properties
# if twitter4j.properties already exists, then user is okay with having twitter pw in file.
# Otherwise a twitter4j.properties file in curr. dir. is made temporarily for twitter login.
if [ -e "$PF" ]; then
PF_CLEANUP="date"
trap "exit 1" 1 2 3 15
else
PF_CLEANUP="/bin/rm $PF"
trap "${PF_CLEANUP} ; exit 1" 1 2 3 15
touch $PF
chmod 700 $PF
echo " Your twitter user login name and pw is needed "
read -p 'twitter username? ' TWIT_USER
read -s -p 'twitter password? ' TWIT_PW
echo "user=${TWIT_USER}" >> $PF
echo "password=${TWIT_PW}" >> $PF
TWIT_PW=""
fi
trap "${PF_CLEANUP} ; exit 1" 1 2 3 15
# props are set in src/main/resources/runtime.properties
[ -d /tmp/twitter_realtime ] && echo "cleaning up from previous run.." && /bin/rm -fr /tmp/twitter_realtime
# check spec file exists
[ ! -e twitter_realtime.spec ] && echo "expecting file twitter_realtime.spec (as specified by property druid.realtime.specFile) to be in current directory" && exit 3
OPT_PROPS=""
#OPT_PROPS="-Dtwitter4j.debug=true -Dtwitter4j.http.prettyDebug=true"
# start RealtimeNode process
#
echo "Log output of service can be found in ./RealtimeNode.out"
java -Xmx600m -Duser.timezone=UTC -Dfile.encoding=UTF-8 -classpath target/druid-examples-twitter-*-selfcontained.jar $OPT_PROPS -Dtwitter4j.http.useSSL=true druid.examples.RealtimeStandaloneMain >RealtimeNode.out 2>&1 &
PID=$!
trap "${PF_CLEANUP} ; kill ${PID} ; exit 1" 1 2 3 15
sleep 4
grep com.metamx.druid.realtime.TwitterSpritzerFirehoseFactory RealtimeNode.out | awk '{ print $7,$8,$9,$10,$11,$12,$13,$14,$15 }'
sleep 17
grep 'twitter4j.TwitterStreamImpl' RealtimeNode.out > p$$
grep 'Waiting for [0-9]000' p$$
RC1=$?
grep '401:Authentication credentials' p$$
RC2=$?
/bin/rm p$$
if [ $RC1 -eq 0 -a $RC2 -eq 0 ]; then
# avoid getting your ip addr blocked via too many failed login attempts
kill $PID
${PF_CLEANUP}
echo "twitter login failed, RealtimeStandaloneMain process terminated"
exit 7
fi
wait $PID
# clean up twitter credentials after wait since possible reconnection will need it
${PF_CLEANUP}
echo "RealtimeStandaloneMain finished"