• Android CTS測试Fail项改动总结(四)


    Android5.1上的測试

    1、android.security.cts.SELinuxDomainTest# testInitDomain fail

    打印的log

    junit.framework.AssertionFailedError: Expected 1 process in SELinux domain "u:r:init:s0" Found 
    "[
    pid: "1" proctitle: "/init" label: "u:r:init:s0" vsize: 1327104, 
    pid: "298" proctitle: "/system/bin/immvibed" label: "u:r:init:s0" vsize: 1765376
    ]" 
    expected:<1> but was:<2> at junit.framework.Assert.fail(Assert.java:50) 
    这个是典型的L 版本号SELinux Test 问题.
    android.security.cts.SELinuxDomainTest 有1项fail,
    -- testInitDomain
    junit.framework.AssertionFailedError: Expected 1 process in SELinux domain "u:r:init:s0" Found "[pid: "1" proctitle: "/init" label: "u:r:init:s0" vsize: 1327104, pid: "298" proctitle: "/system/bin/immvibed" label: "u:r:init:s0" vsize: 1765376]" expected:<1> but was:<2> at junit.framework.Assert.fail(Assert.java:50)

    其关键原因是由于 Google 强调系统关键进程的SELinux Context 必须唯一, 系统关键进程包含如 init, vold, surfaceflinger, netd, servicemanager, drmserver 等等. 一旦发现有多个process 同一时候使用这些关键的domain 则SELinux Test fail.

    为此要求。系统关键进程启动长时间执行的process, 必须进行domain 切换. 否则将无法通过Google CTS test.

    典型情况就是通过init 启动某个 service, 而没有对这个service 进行domain 切换. 比方贵司这个问题中 suntrold_32 这个 service 没有进行domain 切换, 成而无法通过測试.

    以下是一个简单的demo.
    情景: 定义一个init 启动的service, demo_service, 相应的运行档是/system/bin/demo.
    (1). 创建一个demo.te 在/device/mediatke/common/sepolicy 文件夹下, 然后在/device/mediatke/common/BoardConfig.mk 的BOARD_SEPOLICY_UNION 宏中新增 demo.te
    (2). 定义demo 类型,init 启动service 时类型转换, demo.te 中
    type demo, domain;
    type demo_exec, exec_type, file_type;
    init_daemon_domain(demo)
    (3). 绑定运行档 file_context 类型
    /system/bin/demo u:object_r:demo_exec:s0
    (4). 依据demo 须要訪问的文件以及设备, 定义其他的权限在demo.te 中.

    典型情况就是通过init 启动某个 service, 而没有对这个service 进行domain 切换. 比方这个问题中immvibed 这个 service 没有进行domain 切换, 从而无法通过測试.仅仅需依照demo改动就可以.

    2、android.webgl.cts.WebGLTest#test_conformance_extensions_oes_texture_float_with_canvas_html  fail

    去掉GMS中的WebViewGoogle.apk使用WebView.apk能够Pass。假设国内版本号一定要集成WebViewGoogle.apk仅仅能申请豁免,可參考下面链接
    https://code.google.com/p/chromium/issues/detail?id=482278
    集成WebViewGoogle.apk后,因为这是 Chromium 42 版 common 的问题, 无法改动, 可拿 chromium bug report 的资料与 Google 讨论, waive 此问题

    3、com.android.cts.appsecurity.AppSecurityTests#2项  fail

    【步骤】Compatibility Test Package: android.tests.appsecurity ABI
    com.android.cts.appsecurity.AppSecurityTests
    -- testExternalStorageNone
    -- testExternalStorageWrite
    【现象】
    com.android.cts.tradefed.testtype.TestTimeoutException at com.android.cts.tradefed.testtype.JarHostTest.runTest(JarHostTest.java:223)

    分析思路:

    1、首先确认測试时是否有插入SD卡,因在此项測试须要插入SD卡才干通过

    2、假设插入SD卡还是Fail。

    请确认下在sdcard.c(system/core/sdcard/)中是否把mtklogger中的support write permission部分代码加上导致的.
    假设没有请把/frameworks/base/data/etc/platform.xml中WRITE_EXTERNAL_STORAGE去除group id="media_rw"再进行測试

    3、假设init.rc中有export SECONDARY_STORAGE /storage/sdcard1,去掉再測试

    4、以上步骤验证完后还是Fail,经过版本号对照,发现是YuloreFrameWork.apk引起的。删除后測试pass

    cts-tf > run cts --class com.android.cts.appsecurity.AppSecurityTests
    06-29 10:10:46 I/TestInvocation: Starting invocation for 'cts' on build '5.1_r1' on device AYEMA6YHKVNJQOIZ
    06-29 10:10:46 I/AYEMA6YHKVNJQOIZ: Created result dir 2015.06.29_10.10.46
    06-29 10:10:47 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a]
    06-29 10:11:01 I/AYEMA6YHKVNJQOIZ: Collecting device info
    06-29 10:11:03 I/CtsTest: Start test run of 2 packages, containing 22 tests
    06-29 10:11:03 I/AYEMA6YHKVNJQOIZ: -----------------------------------------
    06-29 10:11:03 I/AYEMA6YHKVNJQOIZ: Test package arm64-v8a android.tests.appsecurity started
    06-29 10:11:03 I/AYEMA6YHKVNJQOIZ: -----------------------------------------
    06-29 10:11:23 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testAppFailAccessPrivateData PASS 
    06-29 10:11:32 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testAppUpgradeDifferentCerts PASS 
    06-29 10:11:59 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testExternalStorageGifts PASS 
    06-29 10:12:10 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testExternalStorageNone PASS 
    06-29 10:12:20 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testExternalStorageRead PASS 
    06-29 10:12:31 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testExternalStorageWrite PASS 
    06-29 10:12:47 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testInstrumentationDiffCert PASS 
    06-29 10:12:49 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testMultiUserStorage PASS 
    06-29 10:14:06 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testPermissionDiffCert PASS 
    06-29 10:14:17 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testSharedUidDifferentCerts PASS 
    06-29 10:14:34 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testUninstallRemovesData PASS 
    06-29 10:14:37 I/AYEMA6YHKVNJQOIZ: arm64-v8a android.tests.appsecurity package complete: Passed 11, Failed 0, Not Executed 0
    06-29 10:14:37 I/AYEMA6YHKVNJQOIZ: -----------------------------------------
    06-29 10:14:37 I/AYEMA6YHKVNJQOIZ: Test package armeabi-v7a android.tests.appsecurity started
    06-29 10:14:37 I/AYEMA6YHKVNJQOIZ: -----------------------------------------
    06-29 10:14:57 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testAppFailAccessPrivateData PASS 
    06-29 10:15:06 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testAppUpgradeDifferentCerts PASS 
    06-29 10:15:32 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testExternalStorageGifts PASS 
    06-29 10:15:43 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testExternalStorageNone PASS 
    06-29 10:15:53 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testExternalStorageRead PASS 
    06-29 10:16:04 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testExternalStorageWrite PASS 
    06-29 10:16:20 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testInstrumentationDiffCert PASS 
    06-29 10:16:22 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testMultiUserStorage PASS 
    06-29 10:17:43 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testPermissionDiffCert PASS 
    06-29 10:17:56 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testSharedUidDifferentCerts PASS 
    06-29 10:18:16 I/AYEMA6YHKVNJQOIZ: com.android.cts.appsecurity.AppSecurityTests#testUninstallRemovesData PASS 
    06-29 10:18:21 I/AYEMA6YHKVNJQOIZ: Saved log device_logcat_892804764496421781.zip
    06-29 10:18:25 I/AYEMA6YHKVNJQOIZ: Saved log host_log_3382781982890595027.zip
    06-29 10:18:25 I/AYEMA6YHKVNJQOIZ: armeabi-v7a android.tests.appsecurity package complete: Passed 11, Failed 0, Not Executed 0
    06-29 10:18:25 I/AYEMA6YHKVNJQOIZ: XML test result file generated at 2015.06.29_10.10.46. Passed 22, Failed 0, Not Executed 0
    06-29 10:18:25 I/AYEMA6YHKVNJQOIZ: Time: 7m 38s
    

    4、android.media.cts.DecodeEditEncodeTest#testVideoEdit720p fail

    【步骤】Compatibility Test Package: android.media ABI
    android.media.cts.DecodeEditEncodeTest
    -- testVideoEdit720p
    【现象】
    junit.framework.AssertionFailedError: Found 29 bad frames at junit.framework.Assert.fail(Assert.java:50)
    这个问题与android.media.cts.EncodeDecodeTest#2项  fail属于同一个原因引起的

    【步骤】Compatibility Test Package: android.media ABI
    android.media.cts.EncodeDecodeTest
    -- testEncodeDecodeVideoFromSurfaceToSurface720p
    -- testVP8EncodeDecodeVideoFromSurfaceToSurface720p
    【现象】
    junit.framework.AssertionFailedError: Found 29 bad frames at junit.framework.Assert.fail(Assert.java:50)

    改动方案:

    root cause:
    PQ_ADL_INDEX_DEFAULT默认打开。会对画面做处理,导致色点有误差。


    solution:
    改动alps/vendor/mediatek/proprietary/platform/mt6795/hardware/pq/cust_color.h这个文件

        #define PQ_ADL_INDEX_DEFAULT                "1”
    改为
        #define PQ_ADL_INDEX_DEFAULT                "0”

    5、com.android.cts.devicepolicy.DeviceOwnerTest Fail

    測试部分结果

    cts-tf > run cts --class com.android.cts.devicepolicy.DeviceOwnerTest
    07-08 11:31:36 I/TestInvocation: Starting invocation for 'cts' on build '5.1_r1' on device 8ef2d4c2
    07-08 11:31:36 I/8ef2d4c2: Created result dir 2015.07.08_11.31.36
    07-08 11:31:36 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a]
    07-08 11:31:48 I/8ef2d4c2: Collecting device info
    07-08 11:31:50 I/CtsTest: Start test run of 2 packages, containing 14 tests
    07-08 11:31:50 I/8ef2d4c2: -----------------------------------------
    07-08 11:31:50 I/8ef2d4c2: Test package arm64-v8a android.adminhostside started
    07-08 11:31:50 I/8ef2d4c2: -----------------------------------------
    07-08 11:31:50 I/BaseDevicePolicyTest: Installing app CtsDeviceOwnerApp.apk
    07-08 11:31:55 I/DeviceOwnerTest: Output for command dpm set-device-owner 'com.android.cts.deviceowner/com.android.cts.deviceowner.BaseDeviceOwnerTest$BasicAdminReceiver': java.lang.IllegalStateException: Trying to set device owner but device is already provisioned.
        at android.os.Parcel.readException(Parcel.java:1569)
        at android.os.Parcel.readException(Parcel.java:1509)
        at android.app.admin.IDevicePolicyManager$Stub$Proxy.setDeviceOwner(IDevicePolicyManager.java:3212)
        at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:114)
        at com.android.commands.dpm.Dpm.onRun(Dpm.java:82)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
        at com.android.commands.dpm.Dpm.main(Dpm.java:38)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249)
    
    07-08 11:31:55 I/8ef2d4c2: com.android.cts.devicepolicy.DeviceOwnerTest#testApplicationRestrictions FAIL 
    junit.framework.AssertionFailedError: java.lang.IllegalStateException: Trying to set device owner but device is already provisioned.
        at android.os.Parcel.readException(Parcel.java:1569)
        at android.os.Parcel.readException(Parcel.java:1509)
        at android.app.admin.IDevicePolicyManager$Stub$Proxy.setDeviceOwner(IDevicePolicyManager.java:3212)
        at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:114)
        at com.android.commands.dpm.Dpm.onRun(Dpm.java:82)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
        at com.android.commands.dpm.Dpm.main(Dpm.java:38)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249)
     expected to start with "Success:"
        at junit.framework.Assert.fail(Assert.java:50)
        at junit.framework.Assert.assertTrue(Assert.java:20)
        at com.android.cts.devicepolicy.DeviceOwnerTest.setDeviceOwner(DeviceOwnerTest.java:96)
        at com.android.cts.devicepolicy.DeviceOwnerTest.setUp(DeviceOwnerTest.java:41)
        at junit.framework.TestCase.runBare(TestCase.java:132)
        at com.android.tradefed.testtype.DeviceTestResult$1.protect(DeviceTestResult.java:81)
        at com.android.tradefed.testtype.DeviceTestResult.runProtected(DeviceTestResult.java:56)
        at com.android.tradefed.testtype.DeviceTestResult.run(DeviceTestResult.java:85)
        at junit.framework.TestCase.run(TestCase.java:124)
        at com.android.tradefed.testtype.DeviceTestCase.run(DeviceTestCase.java:117)
        at com.android.cts.tradefed.testtype.JarHostTest$TestRunnable.run(JarHostTest.java:248)
        at com.android.tradefed.util.RunUtil$RunnableNotifier.run(RunUtil.java:346)
    
    提示:java.lang.IllegalStateException: Trying to set device owner but device is already provisioned.已经存在device owner

    解决思路:

    去设置-》高级设置-》帐户  中查看

    已经存在一个账户了,须要删除这个帐户。方法例如以下:

    删除后又一次測试

    cts-tf > run cts --class com.android.cts.devicepolicy.DeviceOwnerTest
    07-08 11:38:25 I/TestInvocation: Starting invocation for 'cts' on build '5.1_r1' on device 8ef2d4c2
    07-08 11:38:25 I/8ef2d4c2: Created result dir 2015.07.08_11.38.25
    07-08 11:38:25 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a]
    07-08 11:38:37 I/8ef2d4c2: Collecting device info
    07-08 11:38:39 I/CtsTest: Start test run of 2 packages, containing 14 tests
    07-08 11:38:39 I/8ef2d4c2: -----------------------------------------
    07-08 11:38:39 I/8ef2d4c2: Test package arm64-v8a android.adminhostside started
    07-08 11:38:39 I/8ef2d4c2: -----------------------------------------
    07-08 11:38:40 I/BaseDevicePolicyTest: Installing app CtsDeviceOwnerApp.apk
    07-08 11:38:44 I/DeviceOwnerTest: Output for command dpm set-device-owner 'com.android.cts.deviceowner/com.android.cts.deviceowner.BaseDeviceOwnerTest$BasicAdminReceiver': Success: Device owner set to package com.android.cts.deviceowner
    Active admin set to component {com.android.cts.deviceowner/com.android.cts.deviceowner.BaseDeviceOwnerTest$BasicAdminReceiver}
    
    07-08 11:38:46 I/BaseDevicePolicyTest: Test com.android.cts.deviceowner.ApplicationRestrictionsTest#testSetApplicationRestrictions: PASSED
    07-08 11:38:46 I/BaseDevicePolicyTest: Test com.android.cts.deviceowner.ApplicationRestrictionsTest#testAndroidTestCaseSetupProperly: PASSED
    07-08 11:38:48 I/BaseDevicePolicyTest: Test com.android.cts.deviceowner.ClearDeviceOwnerTest#testClearDeviceOwner: PASSED
    07-08 11:38:48 I/BaseDevicePolicyTest: Test com.android.cts.deviceowner.ClearDeviceOwnerTest#testAndroidTestCaseSetupProperly: PASSED
    07-08 11:38:49 I/8ef2d4c2: com.android.cts.devicepolicy.DeviceOwnerTest#testApplicationRestrictions PASS 
    
    在GTS中也有这项測试:com.google.android.xts.devicepolicy.DeviceOwnerTest

    假设有报:java.lang.IllegalStateException: Trying to set device owner but device is already provisioned应该就是同一个问题,仅仅要把帐户删除再測试


  • 相关阅读:
    阅读<SQL语言艺术>实践五
    <SQL语言艺术>阅读计划
    文本类文件与VS关联实践
    接口开发原则
    逻辑部分开发原则
    <海量数据库解决方案>2011022301
    5800对于存储卡密码设置问题
    [转]Delphi用户登录窗口框架
    20世纪科学界最重要的12本书
    [转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5084566.html
Copyright © 2020-2023  润新知