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.AppSecurityTests06-29 10:10:46 I/TestInvocation: Starting invocation for 'cts' on build '5.1_r1' on device AYEMA6YHKVNJQOIZ06-29 10:10:46 I/AYEMA6YHKVNJQOIZ: Created result dir 2015.06.29_10.10.4606-29 10:10:47 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a]06-29 10:11:01 I/AYEMA6YHKVNJQOIZ: Collecting device info06-29 10:11:03 I/CtsTest: Start test run of 2 packages, containing 22 tests06-29 10:11:03 I/AYEMA6YHKVNJQOIZ: -----------------------------------------06-29 10:11:03 I/AYEMA6YHKVNJQOIZ: Test package arm64-v8a android.tests.appsecurity started06-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 006-29 10:14:37 I/AYEMA6YHKVNJQOIZ: -----------------------------------------06-29 10:14:37 I/AYEMA6YHKVNJQOIZ: Test package armeabi-v7a android.tests.appsecurity started06-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.zip06-29 10:18:25 I/AYEMA6YHKVNJQOIZ: Saved log host_log_3382781982890595027.zip06-29 10:18:25 I/AYEMA6YHKVNJQOIZ: armeabi-v7a android.tests.appsecurity package complete: Passed 11, Failed 0, Not Executed 006-29 10:18:25 I/AYEMA6YHKVNJQOIZ: XML test result file generated at 2015.06.29_10.10.46. Passed 22, Failed 0, Not Executed 006-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.DeviceOwnerTest07-08 11:31:36 I/TestInvocation: Starting invocation for 'cts' on build '5.1_r1' on device 8ef2d4c207-08 11:31:36 I/8ef2d4c2: Created result dir 2015.07.08_11.31.3607-08 11:31:36 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a]07-08 11:31:48 I/8ef2d4c2: Collecting device info07-08 11:31:50 I/CtsTest: Start test run of 2 packages, containing 14 tests07-08 11:31:50 I/8ef2d4c2: -----------------------------------------07-08 11:31:50 I/8ef2d4c2: Test package arm64-v8a android.adminhostside started07-08 11:31:50 I/8ef2d4c2: -----------------------------------------07-08 11:31:50 I/BaseDevicePolicyTest: Installing app CtsDeviceOwnerApp.apk07-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

解决思路:

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

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

Android CTS测试Fail项修改总结(四)_第1张图片

删除后重新测试

cts-tf > run cts --class com.android.cts.devicepolicy.DeviceOwnerTest07-08 11:38:25 I/TestInvocation: Starting invocation for 'cts' on build '5.1_r1' on device 8ef2d4c207-08 11:38:25 I/8ef2d4c2: Created result dir 2015.07.08_11.38.2507-08 11:38:25 I/CtsTest: ABIs: [armeabi-v7a, arm64-v8a]07-08 11:38:37 I/8ef2d4c2: Collecting device info07-08 11:38:39 I/CtsTest: Start test run of 2 packages, containing 14 tests07-08 11:38:39 I/8ef2d4c2: -----------------------------------------07-08 11:38:39 I/8ef2d4c2: Test package arm64-v8a android.adminhostside started07-08 11:38:39 I/8ef2d4c2: -----------------------------------------07-08 11:38:40 I/BaseDevicePolicyTest: Installing app CtsDeviceOwnerApp.apk07-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.deviceownerActive 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: PASSED07-08 11:38:46 I/BaseDevicePolicyTest: Test com.android.cts.deviceowner.ApplicationRestrictionsTest#testAndroidTestCaseSetupProperly: PASSED07-08 11:38:48 I/BaseDevicePolicyTest: Test com.android.cts.deviceowner.ClearDeviceOwnerTest#testClearDeviceOwner: PASSED07-08 11:38:48 I/BaseDevicePolicyTest: Test com.android.cts.deviceowner.ClearDeviceOwnerTest#testAndroidTestCaseSetupProperly: PASSED07-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应该就是同一个问题,只要把帐户删除再测试


更多相关文章

  1. Android测试总结
  2. Android Studio中添加Permission权限的步骤与位置
  3. Android单元测试例子
  4. 零成本实现Android/iOS自动化测试:基于Appium和Test Perfect
  5. 【Android】监听SDCard安装和卸载的代码片段(测试通过)
  6. 单元测试,数据存储
  7. 敏捷软件测试的七个关键成功要素 Android设备到底侵犯了微软的什
  8. 单元测试
  9. android sdk 5.0下载步骤

随机推荐

  1. 用sql实现18位身份证校验代码分享 身份证
  2. sqlserver数据库使用存储过程和dbmail实
  3. 使用sqlserver存储过程sp_send_dbmail发
  4. 查找sqlserver查询死锁源头的方法 sqlser
  5. 一条SQL语句修改多表多字段的信息的具体
  6. sql中参数过多利用变量替换参数的方法
  7. sqlserver游标使用步骤示例(创建游标 关
  8. sqlserver数据库获取数据库信息
  9. c#连接数据库及sql2005远程连接的方法
  10. sqlserverdriver配置方法 jdbc连接sqlser