Android14 CTS-R6和GTS-12-R2不能同时测试的解决方法

背景

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。