2016-11-21 3 views
-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 

二つの問題があります:

  1. 、元のデータは、( "サイズ= 100")書き込まれた出力ファイルは次のようになります。これは-aスイッチがteeにあるため発生しません。
  2. スクリプトの外でコマンドを実行しても、中間結果はファイルに書き込まれません。

私は間違っていますか?

+0

'tee 'や他の多くの人がその出力をバッファリングするのは珍しいことではないため、ある量のデータがキューに入ったり、ストリームの終わりに達するまで書き込まれません。それがここで起こっているのであれば私は驚かないだろう。 [ここをクリック](http://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe)ここで何が起こっているのかに対処するためのオプションについては –

+0

"size = 100"は行かないティーを通して。 'size = 100'はリダイレクトされ、そのリダイレクトは前の実行の結果を破棄するファイルを切り捨てます。 –

+0

ああ、私は今問題を見る。回答ありがとう。私は '>>'を使ってファイルに追加するつもりでしたが、代わりに '>'を書きました。 \ * facepalm \ *。 –

答えて

0

困ったことに自分の質問に答える。

この問題は、>(ファイルを上書きする)を使用したために、>>(それに付随する)が原因でした。明らかに問題を解決した>>を使用してください。私はこれをタイプするとき、私はまだパースしています。

関連する問題