Index: third_party/tcmalloc/chromium/src/gmail-send-self-test |
diff --git a/third_party/tcmalloc/chromium/src/gmail-send-self-test b/third_party/tcmalloc/chromium/src/gmail-send-self-test |
new file mode 100755 |
index 0000000000000000000000000000000000000000..669d053bc4b19a8a78ee249b3cbd0331c8c96c7f |
--- /dev/null |
+++ b/third_party/tcmalloc/chromium/src/gmail-send-self-test |
@@ -0,0 +1,162 @@ |
+#!/bin/bash |
+ |
+# Account setting that will be used in the testing. |
+# Any account with keyboard-shortcuts enabled can be used. |
+account=chromememorytest |
+password=bigmemory |
+ |
+chrome=$(pwd)/out/Debug/chrome # chrome binary |
+outdir=$(pwd)/o$$ # output directory |
+heapdir=$outdir/heap/ # where to dump logs |
+datadir=$outdir/data/ # for user data |
+dumptime=30 # seconds between dumps |
+ |
+ctrl() { |
+ if [ -z "$2" ] |
+ then |
+ xte <<EOF |
+keydown Control_L |
+str $1 |
+keyup Control_L |
+EOF |
+ else |
+ [ "x$1" == "xshift" ] || exit 7 |
+ xte <<EOF |
+keydown Control_L |
+usleep 150000 |
+keydown Shift_L |
+usleep 150000 |
+str $2 |
+keyup Shift_L |
+keyup Control_L |
+EOF |
+ fi |
+} |
+ |
+body() { |
+ sleep 1 |
+ for j in `seq 1 50`;do |
+ xte "str test-word$j " |
+ done |
+ xte "key Return" |
+ xte "key Return" |
+ xte "str John" |
+} |
+ |
+purge_memory() { |
+ sleep 1 |
+ |
+ xte <<EOF |
+keydown Shift_L |
+usleep 150000 |
+key Escape |
+usleep 150000 |
+keyup Shift_L |
+EOF |
+ |
+ sleep 1 |
+ xte "key Tab" |
+ sleep 1 |
+ xte "key Tab" |
+ sleep 1 |
+ xte "key Tab" |
+ sleep 1 |
+ xte "key Return" |
+ sleep 1 |
+ ctrl w |
+ sleep 3 |
+} |
+ |
+data0=$(for i in `seq 1 100`; do echo -n $i; done) |
+data1=$(sed "s/1/ a /g" <<<$data0) |
+data2=$(sed "s/3/ c /g" <<<$data1) |
+ |
+mkdir $outdir || exit 3 |
+mkdir $heapdir || exit 3 |
+echo Writing output to $outdir |
+ |
+echo initial chrome start |
+$chrome --no-sandbox --user-data-dir=$datadir >& /dev/null & |
+ |
+# Dismiss "which search engine?" choice |
+sleep 2 |
+xte "key Tab" |
+xte "key Return" |
+sleep 5 |
+ |
+ctrl l |
+ctrl w |
+sleep 1 |
+ctrl shift q |
+ |
+echo chrome start |
+sleep 5 |
+HEAPPROFILE=$heapdir/hprof HEAP_PROFILE_MMAP=true HEAP_PROFILE_TIME_INTERVAL=$dumptime $chrome --no-sandbox --user-data-dir=$datadir --password-store=basic --purge-memory-button www.gmail.com >& $outdir/browser-output & |
+#$chrome --no-sandbox --user-data-dir=$datadir --password-store=basic --purge-memory-button www.gmail.com >& $outdir/browser-output & |
+ |
+ |
+# Must log in with username/password (necessary cookie ain't there, for whatever reason) |
+sleep 10 |
+ |
+xte "str $account" |
+sleep 1 |
+xte "key Tab" |
+sleep 1 |
+xte "str $password" |
+sleep 1 |
+xte "key Return" |
+ |
+sleep 25 |
+ |
+cd $outdir || exit 5 |
+ |
+for i in $(seq 1 100); do |
+ echo $i |
+ |
+ #if [ $((i % 20)) -eq 1 ] |
+ #then |
+ # sleep 300 |
+ #fi |
+ |
+ xte "str uc" && sleep 5 |
+ xte "str ${account}@gmail.com," && sleep 4 |
+ |
+ if [ $((i % 10)) -eq 1 ] |
+ then |
+ |
+ # Here we click purge-memory button |
+ ctrl t && sleep 2 |
+ purge_memory |
+ ctrl w && sleep 2 |
+ |
+ # Save about:memory |
+ ctrl t && xte "str about:memory" && xte "key Return" && sleep 4 |
+ import -window root screenshot${i}.png |
+ ctrl s && sleep 2 && xte "str `pwd`/am$i" && xte "key Return" && sleep 3 |
+ ctrl w && sleep 4 |
+ |
+ nice top -b -n 1 > top$i & |
+ |
+ # Save about:tcmalloc |
+ ctrl t && xte "str about:tcmalloc" && xte "key Return" && sleep 4 |
+ ctrl r && sleep 4 # reload because about:tcmalloc gives stale info otherwise! |
+ ctrl s && sleep 2 && xte "str `pwd`/at$i" && xte "key Return" && sleep 3 |
+ ctrl w && sleep 4 |
+ |
+ # Save inbox |
+ ctrl t && xte "str mail.google.com/mail/u/0/?ui=html&zy=a" && xte "key Return" && sleep 8 |
+ ctrl s && sleep 2 && xte "str `pwd`/inbox$i" && xte "key Return" && sleep 3 |
+ ctrl w && sleep 4 |
+ |
+ fi |
+ |
+ xte "key Tab" && sleep 4 |
+ xte "str super duper subject $i" && sleep 4 |
+ xte "key Tab" && body && sleep 15 && xte "key Tab" |
+ xte "key Return" && sleep 6 |
+ xte "str kk" && sleep 4 && xte "key Return" && sleep 4 |
+ xte "str kk" && sleep 4 |
+ |
+done |
+ |
+ctrl shift q |