12633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall#!/bin/bash
22633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
32633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken SumrallPERF="rand_emmc_perf"
42633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
52633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallif [ ! -r "$PERF" ]
62633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallthen
72633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  echo "Cannot read $PERF test binary"
82633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfi
92633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
102633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallif [ ! -r "$PERF_OSYNC" ]
112633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallthen
122633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  echo "Cannot read $PERF_OSYNC test binary"
132633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfi
142633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
152633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallif ! adb shell true >/dev/null 2>&1
162633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallthen
172633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  echo "No device detected over adb"
182633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfi
192633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
202633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken SumrallHARDWARE=`adb shell getprop ro.hardware | tr -d "\r"`
212633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
222633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallcase "$HARDWARE" in
232633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  tuna | steelhead)
242633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq"
252633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    CACHE="/dev/block/platform/omap/omap_hsmmc.0/by-name/cache"
262633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    ;;
272633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
282633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  stingray | wingray)
292633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq"
302633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    CACHE="/dev/block/platform/sdhci-tegra.3/by-name/cache"
312633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    ;;
322633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
332633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  herring)
342633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    echo "This test will wipe the userdata partition on $HARDWARE devices."
352633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    read -p "Do you want to proceed? " ANSWER
362633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
372633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    if [ "$ANSWER" != "yes" ]
382633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    then
392633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall      echo "aborting test"
402633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall      exit 1
412633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    fi
422633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
432633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq"
442633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    CACHE="/dev/block/platform/s3c-sdhci.0/by-name/userdata"
452633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    ;;
462633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
472633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  grouper)
482633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    CPUFREQ="/sys/devices/system/cpu/cpu0/cpufreq"
492633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    CACHE="/dev/block/platform/sdhci-tegra.3/by-name/CAC"
502633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    ;;
512633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
522633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  *)
532633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    echo "Unknown hardware $HARDWARE.  Exiting."
542633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall    exit 1
552633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallesac
562633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
572633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# prepare the device
582633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb root
592633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb wait-for-device
602633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb push "$PERF" /dev
612633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb push "$PERF_OSYNC" /dev
622633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop
632633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop sdcard
642633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop ril-daemon
652633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop media
662633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop drm
672633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop keystore
682633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop tf_daemon
692633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop bluetoothd
702633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell stop hciattach
712633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell umount /sdcard >/dev/null 2>&1
722633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell umount /data >/dev/null 2>&1
732633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell umount /cache >/dev/null 2>&1
742633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Add more services here that other devices need to stop.
752633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# So far, this list is sufficient for:
762633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall#   Prime
772633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
782633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# At this point, the device is quiescent, need to crank up the cpu speed,
792633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# then run tests
802633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell "cat $CPUFREQ/cpuinfo_max_freq > $CPUFREQ/scaling_max_freq"
812633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell "cat $CPUFREQ/cpuinfo_max_freq > $CPUFREQ/scaling_min_freq"
822633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
832633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Start the tests
842633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
852633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Sequential read test
862633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3
872633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo
882633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  echo "Sequential read test $I"
892633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  adb shell dd if="$CACHE" of=/dev/null bs=1048576 count=200
902633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone
912633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
922633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Sequential write test
932633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3
942633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo
952633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  echo "Sequential write test $I"
962633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  adb shell dd if=/dev/zero of="$CACHE" bs=1048576 count=200
972633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone
982633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
992633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Random read test
1002633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3
1012633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo
1022633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  echo "Random read test $I"
1032633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  adb shell /dev/"$PERF" -r 100 "$CACHE"
1042633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone
1052633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
1062633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Random write test
1072633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3
1082633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo
1092633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  echo "Random write test $I"
1102633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  adb shell /dev/"$PERF" -w 100 "$CACHE"
1112633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone
1122633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
1132633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Random write test with O_SYNC
1142633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrallfor I in 1 2 3
1152633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldo
1162633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  echo "Random write with o_sync test $I"
1172633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall  adb shell /dev/"$PERF" -w 100 -o "$CACHE"
1182633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralldone
1192633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
1202633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall# Make a new empty /cache filesystem
1212633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumralladb shell make_ext4fs "$CACHE"
1222633ce5ca5024d5565c9068c29ec39a8c3ed10e9Ken Sumrall
123