2016-11-21 46 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

在尴尬中回答我自己的问题。

这个问题是由于我使用>(它覆盖文件)而不是>>(附加到它)。使用>>明显解决了这个问题。当我输入这个信息时,我仍然是面对面的。

相关问题