引用“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. Linux中vim中出现H不能正常编辑的问题

    使用Linux中,由于是远程操作,我使用crt,由于有的文档有乱码,我就设置了一下session的字符... vim出现问题,下方出现H,导致不能正常编辑... 耗费一下午的时间,在高人的指点之下,终 ...

  2. 自定义view布局过程详解

    布局过程,就是程序在运行时利用布局文件的代码来计算出实际尺寸的过程. 布局分为两个阶段:测量阶段和布局阶段. 测量阶段:从上到下递归地调用每个 View 或者 ViewGroup 的 measure( ...

  3. Android Studio官方文档: 如何在你的设备上运行你的程序

    在实体设备上运行您的应用 设置您的设备,如下所示: 使用一根 USB 电缆将您的设备连接到您的开发机器. 如果您是在 Windows 上开发,可能需要为您的设备安装相应的 USB 驱动程序.如需帮助安 ...

  4. 【45.61%】【codeforces 701D】As Fast As Possible

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  5. Codeforces 39J Spelling Check hash

    主题链接:点击打开链接 意甲冠军: 特定2弦 选择中删除一个字符串的第一个字母,得2个字符串全然同样 问哪些位置能够选 思路: hash求前缀后缀.然后枚举位置 #include <cstdio ...

  6. Virtualization of iSCSI storage

    This invention describes methods, apparatus and systems for virtualization of iSCSI storage. Virtual ...

  7. Chrome浏览器离线安装 Postman 5.X 报错

    下载和安装请参考 博友文章http://www.cnblogs.com/wangfeng520/p/5892125.html 尝试安装此扩展程序时出现以下警告: Ignored insecure CS ...

  8. WPF文字描边的解决方法

    原文:WPF文字描边的解决方法  由于项目原因,今天研究了一下午WPF的文字描边,网上这方面的资料奇少,搞了半天才发现强大的WPF原来不直接支持文字描边啊.最后求助于MSDN,找到了方案,和大家分 ...

  9. 使用VisualTreeHelper.GetDrawing(Visual v)枚举所有Visual内容的对象

    原文:使用VisualTreeHelper.GetDrawing(Visual v)枚举所有Visual内容的对象 C#代码:public void RetrieveDrawing(Visual v) ...

  10. Python 推断素数

    a = raw_input() #输入数字 a = int(a) #铸造成int b=True #的标记 for i in range(2,a): #从2开始循环本身 if a%i==0: #除了自己 ...