Android CTS Test failed to run to conmpletion 测试超时问题
引用“Android cts all pass 全攻略”里面的一段话:
❀ testcase timeout
测试某个testcase的时候一直出现 “........”,迟迟没有pass或者fail,等良久出现一个血淋淋的timeout,很让人伤心。有不少人笑嘻嘻的以为timeout 挺好,至少它不是fail。在我看来timeout 比 fail 还恐怖,因为它连进行测试到底是pass还是fail的权利都没有。想不被硬件设备厂商笑话,必须0 timeout ,然后再争取0 fail 。
在使用CTS测试的时候经常会出现这样的提示错误:“Test failed to run to conmpletion.Reason: 'Failed to receive adb shell test output within 600000ms.
Test may have timed out, or adb connect to device became unresponsive'. Check device locat for details” 有时候会是1200000ms,单个测试用例这个超时等待时间是无法接受的。在我的开发板上出现这个问题的原因是我把camera service给裁剪掉了。
日志显示测试用例testCameraFeatures一直等待camera service服务的响应:
- ::53.450 I/TestRunner( ): started: testCameraFeatures(android.app.cts.SystemFeaturesTest)
- ::53.450 I/ServiceManager( ): Waiting for service media.camera...
- ::54.450 I/ServiceManager( ): Waiting for service media.camera...
- ::55.450 I/ServiceManager( ): Waiting for service media.camera...
- ::56.450 I/ServiceManager( ): Waiting for service media.camera...
- ::57.450 I/ServiceManager( ): Waiting for service media.camera...
- ::58.450 W/Camera ( ): CameraService not published, waiting...
- ::58.960 I/ServiceManager( ): Waiting for service media.camera...
- ::59.960 I/ServiceManager( ): Waiting for service media.camera...
- ::00.960 I/ServiceManager( ): Waiting for service media.camera...
- ::01.960 I/ServiceManager( ): Waiting for service media.camera...
- ::02.960 I/ServiceManager( ): Waiting for service media.camera...
- ::03.960 W/Camera ( ): CameraService not published, waiting...
看见这样的日志,就不难发现,肯定是下层掉入了死循环,跟踪framework代码,你会发现这样一段代码:
// establish binder interface to camera service
const sp<ICameraService>& Camera::getCameraService()
{
Mutex::Autolock _l(mLock);
if (mCameraService.get() == ) {
sp<IServiceManager> sm = defaultServiceManager();
sp<IBinder> binder;
do {
binder = sm->getService(String16("media.camera"));
if (binder != )
break;
ALOGW("CameraService not published, waiting...");
usleep(); // 0.5 s
} while(true);
if (mDeathNotifier == NULL) {
mDeathNotifier = new DeathNotifier();
}
binder->linkToDeath(mDeathNotifier);
mCameraService = interface_cast<ICameraService>(binder);
}
ALOGE_IF(mCameraService==, "no CameraService!?");
return mCameraService;
}
这段代码的位置在“frameworks/av/camera/Camera.cpp”,一看见那个邪恶的while(true),就知道这个此处是万劫不复之地了。
当然解决办法,你可以想办法在binder为NULL的情况下,跳出循环,并且保证不出问题也行。不知道谷歌写这段死循环是何用意,并不是每个拿你系统干活的人都需要camera,不要camera了,你也不至于让我陷入万劫不复之地吧 ?
下面说说我在做CTS测试的时候的解决办法,很简单,把源码目录下面关于camera的东西注释掉,删除掉。下面是我的修改记录,可以作为参考:

前面带“-”的是删除的文件,那个带笔型标记的是修改的文件,要修改的文件直接大文件,找camera或者testCamera关键字,见着就注释掉。
做完,make cts -j4.

本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
Android CTS Test failed to run to conmpletion 测试超时问题的更多相关文章
- 【转】android cts failed items
原文网址:http://blog.csdn.net/linsa0517/article/details/19031479 Fail的一些修改 1.直接设置问题 estUnknownSourcesO ...
- 【我的Android进阶之旅】解决SVN Cleanup错误: Failed to run the WC DB work queue associated with
错误描述 在Android Studio中点击VCS向下箭头使用SVN Update功能更新代码的时候,报错如下所示: 错误描述信息: Error:svn: E155037: Previous ope ...
- 如何debug android cts
启动和关闭ADB服务(adb start-server和adbkill-server) 经作者测试,模拟器在运行一段时间后,adb服务有可能(在Windows进程中可以找到这个服务,该服务用来为模拟器 ...
- Android CTS測试Fail项改动总结(四)
Android5.1上的測试 1.android.security.cts.SELinuxDomainTest# testInitDomain fail 打印的log junit.framework. ...
- android CTS 命令
> h //help Host: help: show this message help all: show the complete tradefed help exit: grace ...
- 监听Android CTS测试项解决方案(一)
前言: 首先这里需要详细叙述一下标题中"监听Android CTS测试项解决方案"的需求.这里的需求是指我们需要精确的监听到当前CTS测试正在测试的测试项. 因为我们知道CTS认证 ...
- I.MX6 Android iperf3 porting failed
/***************************************************************************** * I.MX6 Android iperf ...
- android CTS测试
CTS认证是获得Google推出的Android系统中Android Market服务的前提 CTS兼容性测试的主要目的和意义在于使得用户在Android系统的应用过程中,有更好的用户体验,并展现出A ...
- Android CTS 测试总结【转】
Android CTS 测试总结[转] 最近一直在做Android兼容性测试,根据Android官网给出的android-cts-manual 配置好了device后,开始测试. 首先配置软件环境: ...
随机推荐
- 使用多target来构建大量相似App
转自 come from : http://devtang.com/blog/2013/10/17/the-tech-detail-of-ape-client-1/ 猿题库iOS客户端的技术细节(一) ...
- Swagger与postman使用心得
Swagger接口文档,在线自动生成模板和页面.服务器地址加上swagger-ui.html后缀即可访问到(https://域名:端口号/swagger-ui.html). 使用时在java代码中引用 ...
- 无法写入预编译头文件,由于 IO 设备错误,无法运行此项请求的错误的解决
作者:朱金灿 来源:http://blog.csdn.net/clever101 早上查看服务器每日构建的情况,发现出现一个诡异的错误: fatal error C1085: 无法写入预编译头文件:& ...
- python request 代理/超时/证书
import requests headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) A ...
- android tips—开机引导启动wifi设置
在开机引导(Setupwizard,Guide)中都有关于wifi设置项,我得做法例如以下: Intent intent = new Intent(); intent.setClassName(&qu ...
- 为什么java的web开发中URLEncoder.encode方法要为什么要调用两次
一: 我们先看2个编码的情况 String name=java.net.URLEncoder.encode("测试", "UTF-8"); System.out ...
- YII2.0多条件查询升级版
$query = self::find()->andFilterWhere(['v_type' => $v_type])->andFilterWhere(['like', 'a_na ...
- JS 实现Map
function Map() { this.arr = new Array(); var struct = function(key, value) { this.key = key; this.va ...
- Qt5该插件机制(7)--插件开发演示示例代码(Lower-level API)
插件代码 接口类的头文件 MyPluginInterface.h #ifndef INTERFACES_H #define INTERFACES_H #include <QtPlugin> ...
- WPF Path和图形
<Window x:Class="GeometryDemo.MainWindow" xmlns="http://schemas.microsoft.com/winf ...