背景
Android14 CTS r6和GTS 12-r1之后,tf-console默认会带起OLC Server,看起来olc server可能是想适配ATS(android-test-station),一种网页版可视化、可配置的跑XTS的方式。这种网页版ATS对测试人员是比较友好的,网页上简单配置下就能把CTS跑起来,但是目前觉得还是不太方便。对于经常跑CTS fulltest的开发测试人员来说,终端上敲个命令似乎更方便。
遇到的问题
- 上面提到olc server有个问题,我们用新版tool,tf-console敲了命令,测试有时会跑不起来,或是retry也有机会遇到问题。
- 同一台linux server跑CTS+GTS会被排序,不能同时跑。为什么这样?因为新版tool:cts和gts会各自起自己的ats console,同时带起olc server,比如cts先起ats console和olc server,gts再起ats console,然后会去connect existing olc server,如果有olc server存在,就用存在的olc server。cts和gts起的ats console相当于olc client,在cts和gts的ats console敲的command会被传到olc server里的queue buffer,这样command就会排序,导致gts和cts不能同时跑(gts-gts,cts-cts也不能)。那以前旧版本的tool没这个问题。但是我们一台Host server通常是多种测试一起跑,所以这种不能多种测试一起跑的问题,要相办法解决。
寻找解决方法
-
借助docker来隔离测试环境
参考了dockerfile构建CTS环境,编译搭建了2个docker image,一个for CTS,一个for GTS,但最后还是会connect existing olc server,就另寻其他方法了。 -
查看android-gts/tools/gts-tradefed(cts: android-cts/tools/cts-tradefed),发现问题USE_ATS=true,原来如此:
USE_ATS=${USE_ATS:-"true"}
if [ "$USE_ATS" == "true" ]; then
ATS_CONSOLE_JAR=${GTS_ROOT}/android-gts/tools/ats_console_deploy.jar
ATS_OLC_SERVER_JAR=${GTS_ROOT}/android-gts/tools/ats_olc_server_local_mode_deploy.jar
checkFile ${ATS_CONSOLE_JAR}
checkFile ${ATS_OLC_SERVER_JAR}
FASTBOOT_FLAGS=" \
--enable_fastboot_in_android_real_device=true \
--fastboot='$(type -P fastboot 2>/dev/null)' \
"
if ! type -P fastboot &> /dev/null; then
FASTBOOT_FLAGS="--enable_fastboot_in_android_real_device=false"
fi;
DEVICE_INFRA_SERVICE_FLAGS=" \
--aapt='$(type -P aapt2 2>/dev/null)' \
--adb='$(type -P adb 2>/dev/null)' \
--ats_console_olc_server_path='${ATS_OLC_SERVER_JAR}' \
--public_dir=/tmp \
--simplified_log_format=true \
--tmp_dir_root=/tmp \
${FASTBOOT_FLAGS} \
"
LANG=en_US.UTF-8 TEST_TMPDIR=/tmp ${JAVA_BINARY} --add-opens=java.base/java.lang=ALL-UNNAMED -Xmx4g -DXTS_ROOT=${GTS_ROOT} -DXTS_TYPE=gts -DDEVICE_INFRA_SERVICE_FLAGS="${DEVICE_INFRA_SERVICE_FLAGS}" -jar ${ATS_CONSOLE_JAR} "$@"
else
${JAVA_BINARY} $RDBG_FLAG -Xmx4g -cp ${JAR_PATH} -DGTS_ROOT=${GTS_ROOT} com.android.compatibility.common.tradefed.command.CompatibilityConsole "$@"
fi
因为USE_ATS=true,导致起的是ats console并去起olc server,和之前旧tool不同。到此解决办法就有了:在.bashrc里加入一句就可以了,继续用之前旧tool起的console。
export USE_ATS=false
最后
G看起来后续是要推这个ATS的东西,其中ats console和olc server类似C/S,但现阶段似乎不稳定,暂时就先关掉ATS。