android编译VTS测试组件

需要进行VTS测试时,可以自已编译出VTS测试组件,方法如下:
1、source build/envsetup.sh
2、lunch选择自己需要的工程
3、make vts
编译完成后,在out/host/linux-x86/vts目录下能看到测试组件

[100% 42332/42332] build out/host/linux-x86/vts/android-vts.zip

VTS的测试代码路径在:android\test\vts-testcase
这里以avb的测试代码为例,看看里面都有哪些内容

├── Android.bp
├── AndroidTest.xml
├── VtsSecurityAvbTest.cpp
└── vts_security_avb_test.xml

其中AndroidTest.xml,表示当前vts_security_avb_test测试的配置

<configuration description="Config for VTS AVB test cases">
    <option name="config-descriptor:metadata" key="plan" value="vts-security" />
    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher">
        <option name="abort-on-push-failure" value="false" />
        <option name="push-group" value="HalHidlTargetTest.push"/>
        <option name="push" value="DATA/avb/q-gsi.avbpubkey->/data/local/tmp/q-gsi.avbpubkey" />
        <option name="push" value="DATA/avb/r-gsi.avbpubkey->/data/local/tmp/r-gsi.avbpubkey" />
        <option name="push" value="DATA/avb/s-gsi.avbpubkey->/data/local/tmp/s-gsi.avbpubkey" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
        <option name="test-module-name" value="VtsSecurityAvb" />
        <option name="binary-test-source" value="_32bit::DATA/nativetest/VtsSecurityAvbTest/VtsSecurityAvbTest" />
        <option name="binary-test-source" value="_64bit::DATA/nativetest64/VtsSecurityAvbTest/VtsSecurityAvbTest" />
        <option name="binary-test-type" value="gtest" />
        <option name="precondition-first-api-level" value="29" />
        <option name="test-timeout" value="3m" />
    </test>
</configuration>

vts_security_avb_test.xml内容

<?xml version="1.0" encoding="utf-8"?>
<configuration description="Config for vts_security_avb_test">
    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
        <option name="cleanup" value="true" />
        <option name="push" value="vts_security_avb_test->/data/local/tmp/vts_security_avb_test" />
        <option name="push" value="q-gsi.avbpubkey->/data/local/tmp/q-gsi.avbpubkey" />
        <option name="push" value="r-gsi.avbpubkey->/data/local/tmp/r-gsi.avbpubkey" />
        <option name="push" value="s-gsi.avbpubkey->/data/local/tmp/s-gsi.avbpubkey" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.GTest" >
        <option name="native-test-device-path" value="/data/local/tmp" />
        <option name="module-name" value="vts_security_avb_test" />
    </test>
    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MinApiLevelModuleController" >
        <option name="api-level-prop" value="ro.product.first_api_level"/>
        <option name="min-api-level" value="29"/>
    </object>
</configuration>

Android.bp内容

cc_defaults {
    name: "vts_security_avb_defaults",
    srcs: ["VtsSecurityAvbTest.cpp"],
    shared_libs: [
        "libbase",
        "liblog",
    ],
    static_libs: [
        "libavb",
        "libcrypto_static",
        "libfs_avb",
        "libfs_mgr",
    ],
}

cc_test {
    name: "vts_security_avb_test",
    defaults: ["vts_security_avb_defaults"],
    test_config: "vts_security_avb_test.xml",
    test_suites: [
        "device-tests",
        "vts",
    ],
    data: [
        ":q-gsi_avbpubkey",
        ":r-gsi_avbpubkey",
        ":s-gsi_avbpubkey",
    ],
}

cc_test {
    name: "VtsSecurityAvbTest",
    defaults: ["vts_security_avb_defaults"],
}

vts_config {
    name: "VtsSecurityAvb",
}

我们看一下编译出来的VTS测试avb内容,进入android\out\host\linux-x86\vts\android-vts\testcases\vts_security_avb_test\arm


android/out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm$ tree
.
├── q-gsi.avbpubkey
├── r-gsi.avbpubkey
├── s-gsi.avbpubkey
└── vts_security_avb_test

vts_security_avb_test这个应该就是测试bin了,另外几个表示avb的公钥,看上面的配置,在测试时会被push到data/local/tmp/目录下。

再看一下编译出来的tools目录内容:


/android/out/host/linux-x86/vts/android-vts/tools$ tree
.
├── README
├── compatibility-common-util-tests.jar
├── compatibility-host-util-tests.jar
├── compatibility-host-util.jar
├── compatibility-tradefed-tests.jar
├── hosttestlib.jar
├── loganalysis.jar
├── tradefed-test-framework.jar
├── tradefed.jar
├── version.txt
├── vts-tradefed
├── vts-tradefed-tests.jar
└── vts-tradefed.jar

0 directories, 13 files

其中vts-tradefed就是我们跑vts case前要执行的命令,这个会准备好运行的环境。

另外,编译出来的android-vts.zip.list清单中有详细的所有测试case

android/out/host/linux-x86/vts$ tree -L 1
.
├── android-vts
├── android-vts.zip
└── android-vts.zip.list

比如我这里是要测试avb,打开android-vts.zip.list文件后,和avb相关的测试case有如下配置。

out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm/q-gsi.avbpubkey
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm/r-gsi.avbpubkey
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm/s-gsi.avbpubkey
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm/vts_security_avb_test
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm64
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm64/q-gsi.avbpubkey
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm64/r-gsi.avbpubkey
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm64/s-gsi.avbpubkey
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/arm64/vts_security_avb_test
out/host/linux-x86/vts/android-vts/testcases/vts_security_avb_test/vts_security_avb_test.config
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值