2012-10-24 03:39:51 -04:00
#!/usr/bin/env bash
2012-11-24 08:04:25 -05:00
echo "This will run RealtimeStandaloneMain service in background"
set +u
shopt -s xpg_echo
shopt -s expand_aliases
2012-10-24 03:39:51 -04:00
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
2012-11-24 08:04:25 -05:00
# 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
2012-10-24 03:39:51 -04:00
OPT_PROPS = ""
#OPT_PROPS="-Dtwitter4j.debug=true -Dtwitter4j.http.prettyDebug=true"
# start RealtimeNode process
#
2012-11-24 08:04:25 -05:00
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 &
2012-10-24 03:39:51 -04:00
PID = $!
2012-10-24 15:40:22 -04:00
trap " ${ PF_CLEANUP } ; kill ${ PID } ; exit 1 " 1 2 3 15
2012-10-24 03:39:51 -04:00
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"