引用“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 测试超时问题的更多相关文章

  1. 【转】android cts failed items

    原文网址:http://blog.csdn.net/linsa0517/article/details/19031479 Fail的一些修改   1.直接设置问题 estUnknownSourcesO ...

  2. 【我的Android进阶之旅】解决SVN Cleanup错误: Failed to run the WC DB work queue associated with

    错误描述 在Android Studio中点击VCS向下箭头使用SVN Update功能更新代码的时候,报错如下所示: 错误描述信息: Error:svn: E155037: Previous ope ...

  3. 如何debug android cts

    启动和关闭ADB服务(adb start-server和adbkill-server) 经作者测试,模拟器在运行一段时间后,adb服务有可能(在Windows进程中可以找到这个服务,该服务用来为模拟器 ...

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

    Android5.1上的測试 1.android.security.cts.SELinuxDomainTest# testInitDomain fail 打印的log junit.framework. ...

  5. android CTS 命令

    > h //help Host:  help: show this message  help all: show the complete tradefed help  exit: grace ...

  6. 监听Android CTS测试项解决方案(一)

    前言: 首先这里需要详细叙述一下标题中"监听Android CTS测试项解决方案"的需求.这里的需求是指我们需要精确的监听到当前CTS测试正在测试的测试项. 因为我们知道CTS认证 ...

  7. I.MX6 Android iperf3 porting failed

    /***************************************************************************** * I.MX6 Android iperf ...

  8. android CTS测试

    CTS认证是获得Google推出的Android系统中Android Market服务的前提 CTS兼容性测试的主要目的和意义在于使得用户在Android系统的应用过程中,有更好的用户体验,并展现出A ...

  9. Android CTS 测试总结【转】

    Android CTS 测试总结[转] 最近一直在做Android兼容性测试,根据Android官网给出的android-cts-manual 配置好了device后,开始测试. 首先配置软件环境: ...

随机推荐

  1. HTML5在客户端存储数据的新方法——localStorage

    HTML5在客户端存储数据的新方法--localStorage localStorage作为HTML5本地存储web storage特性的API之一,主要作用是将数据保存在客户端中,而客户端一般是指上 ...

  2. 【24.58%】【BZOJ 1001】狼抓兔子

    Time Limit: 15 Sec Memory Limit: 162 MB Submit: 19227 Solved: 4726 [Submit][Status][Discuss] Descrip ...

  3. Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 1

    Source Database DB Name:        zwc Schemas:         HR,OE,PM Version:          10.2.0.4 RAC:       ...

  4. s3c2410 cs8900a 网卡驱动程序

    /* CS8900a.h */ #define CONFIG_CERF_CS8900A 1 /* * cs8900a.c: A Crystal Semiconductor (Now Cirrus Lo ...

  5. 记一次删除Git记录中的大文件的过程

    app/test/target/ #查看大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/ ...

  6. QuickReport的OnNeedData的触发情况

    1.设置QuickReport的DataSet为空.2.在QuickReport的BeforePrint里面将要显示的数据集合初始化,如Query1.First;3.在OnNeedData里面写代码, ...

  7. linq to entity GroupBy多个字段

    var items = _voteRecordRepository.GetAll() .Where(x => programIds.Contains(x.ProgrammeId)) .Group ...

  8. WCF SOAP用法

    基本思路 1.新建一个WCF服务库2.在客户端引用处右键,添加服务引用   点击发现,选择目标服务设置好命名空间   可以在高级一栏里面,设置详细信息   点击确认,添加服务引用 3.在客户端自动生成 ...

  9. 通通玩blend美工(2)——时钟

    原文:通通玩blend美工(2)--时钟 谢谢大家对我上一篇Blend的支持:通通玩blend美工(1)——荧光Button 再接再厉再来一篇~~! 这篇是建立在已经看得懂上一篇为基础来写的,有些细节 ...

  10. TCPClient组件和TCPServer组件的主要方法和属性

    IdTCPClient属性1 : IOHandler 如果有相应的输入/输出操作,那么IOHandler相对应的组件或接口将提供一个虚拟/抽象的输入/输出接口给相应的网络连接2 : Intercept ...