-1
Androidアプリからパフォーマンスデータ(読み込み時間と画面のレンダリング時間)を自動的に収集しようとしています。私はadb
コマンドを使用してパフォーマンスデータを取得する前に、test-runner.py
(内部ツール)を使用してアプリケーションを構築し、テストを実行します。私のbashスクリプトは次のようになります。スクリプトは実行を終了するまでファイルに書き込みませんか?
BASE_DIR=../Application/app/src/custom-feeds
CTF_DIR=../../../../ComponentTestFramework
OUTPUT_FILE=out.txt
if test -e $OUTPUT_FILE
then
rm $OUTPUT_FILE
fi
teardown()
{
cd $BASE_DIR
adb logcat -d PerformanceTest:D *:S | grep 'Loading' | tee -a $OUTPUT_FILE
adb logcat -d ActivityManager:I *:S | grep 'ContentBrowseActivity:\s+\+' | tee -a $OUTPUT_FILE
./restore.sh
}
# small sample feed
echo Testing sample feed with 10 initial items
echo size = 10 > $OUTPUT_FILE
cd $CTF_DIR
python3 test_runner.py -f $BASE_DIR/config-B-10.json
teardown
# medium sample feed
echo Testing sample feed with 100 initial items
echo size = 100 > $OUTPUT_FILE
cd $CTF_DIR
python3 test_runner.py -f $BASE_DIR/config-B-100.json
teardown
# large sample feed
echo Testing sample feed with 500 initial items
echo size = 500 > $OUTPUT_FILE
cd $CTF_DIR
python3 test_runner.py -f $BASE_DIR/config-B-500.json
teardown
# super large sample feed
echo Testing sample feed with 5000 initial items
echo size = 5000 > $OUTPUT_FILE
cd $CTF_DIR
python3 test_runner.py -f $BASE_DIR/config-B-5000.json
teardown
スクリプトが最初に実行されると予想されるように、データが出力ファイルに書き込まれます:
size = 100
をしかし、他に何も書かれていない取得したスクリプトの実行が終了するまで、 。
size = 5000
D/PerformanceTest(1458): Loading time: 332874 ms
I/ActivityManager(1843): Displayed com.amazon.android.calypso/com.amazon.android.tv.tenfoot.ui.activities.ContentBrowseActivity: +563ms
二つの問題があります:
- 、元のデータは、( "サイズ= 100")書き込まれた出力ファイルは次のようになります。これは
-a
スイッチがtee
にあるため発生しません。 - スクリプトの外でコマンドを実行しても、中間結果はファイルに書き込まれません。
私は間違っていますか?
'tee 'や他の多くの人がその出力をバッファリングするのは珍しいことではないため、ある量のデータがキューに入ったり、ストリームの終わりに達するまで書き込まれません。それがここで起こっているのであれば私は驚かないだろう。 [ここをクリック](http://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe)ここで何が起こっているのかに対処するためのオプションについては –
"size = 100"は行かないティーを通して。 'size = 100'はリダイレクトされ、そのリダイレクトは前の実行の結果を破棄するファイルを切り捨てます。 –
ああ、私は今問題を見る。回答ありがとう。私は '>>'を使ってファイルに追加するつもりでしたが、代わりに '>'を書きました。 \ * facepalm \ *。 –