The following shell script performs an action (tap) on the screen, then checks that a particular event does not happen on the device. It then performs another action (press back button) and then checks the target event happens only once. Then it closes a process and iterates through the same steps in a loop 50 times.
#!/bin/sh
# Clean up any reminiscent from previous run of the script
rm -rf script_logs
mkdir script_logs
for i in {1..50}
do
echo $i
echo "Clearing device logs"
adb logcat -c
echo "Starting log recording"
adb logcat >> script_logs/script_logs$i.txt &
logcat_pid=$!
echo "Clicking at a point on the screen"
adb shell input tap 200 300
echo "Waiting for 4 seconds for event to happen and logs generated"
sleep 4
events=`grep "<log_pattern>" script_logs/script_logs$i.txt | wc -l`
if [ $events == 0 ]
then
echo "No event found"
else
echo "$events were found, the test failed"
kill -9 $logcat_pid
exit 1
fi
adb shell input keyevent KEYCODE_BACK
echo "Waiting for 4 seconds for another event"
sleep 4
echo "Checking how many events were sent"
events=`grep "<log_pattern>" script_logs/script_logs$i.txt | wc -l`
if [ $events == 1 ]
then
echo "One and only one event was found"
else
echo "$events were found, the test failed"
kill -9 $logcat_pid
exit 1
fi
echo "Killing target process"
pid=`adb shell pidof <process_name>`
adb shell kill -9 $pid
echo "Stopping logcat"
kill -9 $logcat_pid
sleep 2
done