Mailspring/scripts/benchmark-initial-sync.sh
Mark Hahnenberg be4b0d773c [client-app] Add benchmark mode
Summary:
There are some settings that apply to dev and prod modes that we don't want
to use while benchmarking. E.g. the folder where we store messages,
whether we generate long stack traces in our bluebird promises, etc.
This diff adds a benchmark mode so that we can change these settings to
something that works better for benchmarking.

Test Plan: Run locally, verify it works

Reviewers: evan, juan, spang

Reviewed By: juan, spang

Differential Revision: https://phab.nylas.com/D4374
2017-04-07 15:33:57 -07:00

50 lines
1.3 KiB
Bash

#!/bin/bash
set -e
function print_help {
OUTPUT=$(cat <<- EOM
A script to benchmark the initial sync performance of Nylas Mail. To use,
simply run the script after authing whatever accounts you wish to measure
in your development version of Nylas Mail. The benchmarking script will
clear all of the data except for your accounts and open and close Nylas
Mail several times, printing out the number of messages synced after each
iteration.
)
echo "$OUTPUT"
}
if [[ $1 == '-h' || $1 == '--help' ]]
then
print_help
exit 0
fi
CWD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
NYLAS_DIR="$HOME/.nylas-bench"
EDGEHILL_DB="$NYLAS_DIR/edgehill.db"
TIME_LIMIT=120
ITERS=5
for i in `seq 1 $ITERS`
do
bash $CWD/drop-data-except-accounts.sh > /dev/null
(npm run benchmark &> /dev/null &)
sleep $TIME_LIMIT
ELECTRON_PID=`ps aux | grep "Electron packages/client-app" | grep -v grep | awk '{print $2}'`
kill -9 $ELECTRON_PID
MESSAGE_COUNT=`sqlite3 $EDGEHILL_DB 'SELECT COUNT(*) FROM Message'`
echo "Synced Messages: $MESSAGE_COUNT"
# Sometimes it takes a while to shutdown
while [[ $ELECTRON_PID != '' ]]
do
sleep 1
ELECTRON_PID=`ps aux | grep "Electron packages/client-app" | grep -v grep | awk '{print $2}'`
done
done