2016-11-21 61 views
-1

我試圖從Android應用程序自動收集性能數據(加載和屏幕渲染時間)。我使用test-runner.py(內部工具)構建應用程序並運行測試,然後使用adb命令獲取性能數據。我的bash腳本是這樣的:直到腳本執行完畢,tee纔會寫入文件?

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」)已被寫入。這應該不會發生,因爲tee中的-a開關。
  2. 即使命令在我在腳本外執行時,中間結果也沒有寫入文件。

我在做什麼錯?

+0

「tee」或許多其他人緩衝其輸出的情況並不少見,因此只有在隊列中有一定數量的數據或者數據流結束時纔會寫入數據。如果在這裏發生了什麼,我不會感到驚訝。 [見這裏](http://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe)一些選項來處理,如果這是發生在這裏 –

+0

「大小= 100」不會去通過發球。 'size = 100'被重定向,並且重定向會截斷放棄上一次運行結果的文件。 –

+0

啊,我現在看到了這個問題。感謝您的迴應。我的意思是使用'>>'附加到文件,但寫了'>'代替。 \ *捂臉\ *。 –

回答

0

在尷尬中回答我自己的問題。

這個問題是由於我使用>(它覆蓋文件)而不是>>(附加到它)。使用>>明顯解決了這個問題。當我輸入這個信息時,我仍然是面對面的。

相關問題