【GTS】关于GtsTetheringTestCases模块的几个失败项
GTS---关于GtsTetheringTestCases模块的几个失败项
1.run gts -m GtsTetheringTestCases -t com.google.android.tethering.gts.ProvisioningTest#testRunSilentWifiTetherProvisioningAndEnable
【问题概述】
日志报错:
01-24 10:06:09 I/ModuleListener: [1/1] com.google.android.tethering.gts.ProvisioningTest#testRunSilentWifiTetherProvisioningAndEnable fail:
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:48)
at junit.framework.Assert.assertTrue(Assert.java:20)
at junit.framework.Assert.assertTrue(Assert.java:27)
at com.google.android.tethering.gts.ProvisioningTest.ensureWifiApOff(ProvisioningTest.java:132)
at com.google.android.tethering.gts.ProvisioningTest.setUp(ProvisioningTest.java:108)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:115)
at android.support.test.internal.runner.junit3.AndroidTestResult.runProtected(AndroidTestResult.java:73)
at junit.framework.TestResult.run(TestResult.java:118)
at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:51)
at junit.framework.TestCase.run(TestCase.java:124)
at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:62)
at android.support.test.internal.runner.junit3.AndroidTestSuite$2.run(AndroidTestSuite.java:101)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
【问题分析】
通过查看gts测试源码,测试方法是testRunSilentWifiTetherProvisioningAndEnable ()
为何报错是在不相关的兄弟方法
ensureWifiApOff(ProvisioningTest.java:132)
setUp(ProvisioningTest.java:108)
按照报错去查看原因,找到报错是因为没有请求到期望的state---WIFI_AP_STATE_DISABLED = 11;
源码追溯:
com.google.android.tethering.gts.ProvisioningTest.java
private static final int WIFI_AP_TIMEOUT = 15000;
***************************************************************************
/**
* Wi-Fi AP is disabled.
*
* @see #WIFI_AP_STATE_CHANGED_ACTION
* @see #getWifiState()
*
* @hide
*/
@SystemApi
public static final int WIFI_AP_STATE_DISABLED = 11;
***************************************************************************
private void ensureWifiApOff() {
if (this.mWifiManager.getWifiApState() != 11) {
this.mConnectivityManager.stopTethering(0);
assertTrue(waitForWifiApState(11, WIFI_AP_TIMEOUT));
}
}
***************************************************************************
private boolean waitForWifiApState(int expectedState, int timeout) {
long startTime = SystemClock.uptimeMillis();
while (this.mWifiManager.getWifiApState() != expectedState) {
if (SystemClock.uptimeMillis() - startTime > ((long) timeout)) {
Log.v(TAG, String.format("waitForWifiAPState timeout: expected=%d, actual=%d", new Object[]{Integer.valueOf(expectedState), Integer.valueOf(state)}));
return false;
}
SystemClock.sleep(1000);
}
return true;
}
2.run gts -m GtsTetheringTestCases -t com.google.android.tethering.gts.ProvisioningTest#testRunUiBluetoothTetherProvisioningAndEnable
【问题概述】
【问题分析】
通过查看gts测试源码得知,进行该项测试,需要判断(是否支持共享)---->>isTetheringSupported();
该方法通过读属性"ro.tether.denied"获取结果,
问题点1:
我们的盒子中没有"ro.tether.denied"属性,只有
console:/ # getprop | grep tether
[net.tethering.noprovisioning]: [true]
问题点2:
shouldRunTest()
方法判断读到的属性,应该是ro.tether.denied = 否
,才能开启测试,
但是我们的属性[net.tethering.noprovisioning]: [true]
问题点3:
考虑:
我们要改一下属性[net.tethering.noprovisioning]
属性的值?
还是添加新的属性[ro.tether.denied]
源码追溯:
com.google.android.tethering.gts.ProvisioningTest.java
private void runBluetoothTest(boolean showProvisioningUi) throws Exception {
if (shouldRunTest() && isBluetoothTetheringSupported()) {
boolean adapterWasDisabled = false;
if (!this.mBluetoothAdapter.isEnabled()) {
Log.v(TAG, "Enabling bluetooth for tethering");
adapterWasDisabled = true;
this.mBluetoothAdapter.enable();
waitForBluetoothState(12);
}
this.mConnectivityManager.startTethering(2, showProvisioningUi, this.mCallback);
assertTrue(waitForSuccessCallback());
assertTrue(waitForBluetoothTetherState(true));
if (adapterWasDisabled) {
this.mBluetoothAdapter.disable();
waitForBluetoothState(10);
}
}
}
private boolean shouldRunTest() {
PackageManager packageManager = this.mContext.getPackageManager();
try {
if (packageManager.getApplicationInfo(PACKAGE_GMS_CORE, 128) != null && packageManager.hasSystemFeature("android.hardware.wifi") && this.mConnectivityManager.isTetheringSupported()) {
return ApiLevelUtil.isAtLeast(24);
}
return false;
} catch (NameNotFoundException e) {
return false;
}
}
ConnectivityService.java
// if ro.tether.denied = true we default to no tethering
// gservices could set the secure setting to 1 though to enable it on a build where it
// had previously been turned off.
public boolean isTetheringSupported() {
enforceTetherAccessPermission();
int defaultVal = (SystemProperties.get("ro.tether.denied").equals("true") ? 0 : 1);
boolean tetherEnabledInSettings = (Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.TETHER_SUPPORTED, defaultVal) != 0);
return tetherEnabledInSettings && mTetheringConfigValid;
}
3.run gts -m GtsTetheringTestCases -t com.google.android.tethering.gts.ProvisioningTest#testRunUiWifiTetherProvisioningAndEnable
【问题概述】
【问题分析】
没有获取到期望的state---waitForWifiApState(13, PROVISION_TIMEOUT)
源码追溯:
com.google.android.tethering.gts.ProvisioningTest.java
/**
* Wi-Fi AP is enabled.
*
* @see #WIFI_AP_STATE_CHANGED_ACTION
* @see #getWifiApState()
*
* @hide
*/
@SystemApi
public static final int WIFI_AP_STATE_ENABLED = 13;
private void runWifiApTest(boolean showProvisioningUi) {
if (shouldRunTest()) {
this.mConnectivityManager.startTethering(0, showProvisioningUi, this.mCallback);
assertTrue(waitForWifiApState(13, PROVISION_TIMEOUT));
assertTrue(waitForSuccessCallback());
}
}
4.run gts -m GtsTetheringTestCases -t com.google.android.tethering.gts.ProvisioningTest#testSilentInvalidTetherTypeTest
【问题概述】
报的错同第一条失败项
日志报错:
01-24 15:16:49 I/ModuleListener: [1/1] com.google.android.tethering.gts.ProvisioningTest#testSilentInvalidTetherTypeTest fail:
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:48)
at junit.framework.Assert.assertTrue(Assert.java:20)
at junit.framework.Assert.assertTrue(Assert.java:27)
at com.google.android.tethering.gts.ProvisioningTest.ensureWifiApOff(ProvisioningTest.java:132)
at com.google.android.tethering.gts.ProvisioningTest.setUp(ProvisioningTest.java:108)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:115)
at android.support.test.internal.runner.junit3.AndroidTestResult.runProtected(AndroidTestResult.java:73)
at junit.framework.TestResult.run(TestResult.java:118)
at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:51)
at junit.framework.TestCase.run(TestCase.java:124)
at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:62)
at android.support.test.internal.runner.junit3.AndroidTestSuite$2.run(AndroidTestSuite.java:101)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
【GTS】关于GtsTetheringTestCases模块的几个失败项的更多相关文章
- VMWare虚拟机提示:打不开磁盘…或它所依赖的某个快照磁盘,开启模块DiskEarly的操作失败,未能启动虚拟机
将电脑上存在的虚拟机复制一份后打开运行,弹出错误提示: 打不开磁盘…或它所依赖的某个快照磁盘,开启模块DiskEarly的操作失败,未能启动虚拟机. 解决方法如下: 打开存放虚拟机系统硬盘的所在文件夹 ...
- 失败 - 模块“MonitorLoop”打开电源失败。
启动虚拟机提示以下错误 失败 - 模块“MonitorLoop”打开电源失败. 磁盘空间满了
- 【CTS】几个serialno失败项
[问题结论] [Common]SN配置项的问题,只可以'数字与大小写字母' 将配置SN改为字母数字组合,测试全部pass [问题描述] CTS三条失败项 run cts -m CtsTelephony ...
- VMware锁定文件失败开启模块diskearly的操作失败未能启动虚拟机
删除虚拟机目录下的(如图中标明的就是D:\VMWorks\YeZiZxWeb这个目录)三个 *.lck文件夹,启动正常
- PN532模块连接-读卡失败原因
第一步:点击发现NFC设备 第二步:点击读整卡:读取卡片内容. 若不成功,把UID卡移开,再放一次.再点第一步,显示发现NFC,再点第二步.反复操作,直到读取到为止.2-3次一般都会成功 . 相关软件 ...
- 注册OCX失败/ 找不到指定的模块
错误信息:模块“*.OCX”加载失败,请确定二进制保存在指定的路径中,或者调试它以检查该二进制或相关的.dll文件是否有问题 对于电脑新手,关于OCX或DLL缺失是一件令人十分头疼的事,如果不幸遇到此 ...
- 解析 Linux 内核可装载模块的版本检查机制
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/ 为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可 ...
- 《linux内核设计与实现》实践之模块及深入
<linux内核设计与实现>实践之模块及深入 写在前面的话. 基础模块部分我已经做完了,设计到的知识点无非就是,编写模块代码,编写Makefile文件,加载模块和卸载模块部分.由于大家都 ...
- GPRS连接失败问题
备注:采用的是SIMCOM的SIM900模块 1. GPRS连接失败问题 2013.08.06测试9台C2000两次,两次之间是机器拿开电池,间隔40分钟左右,每次都出现一台(但不是同一台): ⑴9台 ...
随机推荐
- 混合加密算法(RSA和DES)
一.混合加密的理由 a.前面提及了RSA加解密算法和DES加解密算法这两种加解密算法,由于随着计算机系统能力的不断发展,DES的安全性比它刚出现时会弱得多,追溯历史破解DES的案例层出不穷,一台实际的 ...
- Ant Design -- 图片可拖拽效果,图片跟随鼠标移动
Ant Design 图片可拖拽效果,图片跟随鼠标移动,需计算鼠标在图片中与图片左上角的X轴的距离和鼠标在图片中与图片左上角的Y轴的距离. constructor(props) { super(pro ...
- CCPC-Wannafly Winter Camp Day1 (Div2, onsite) 夺宝奇兵
题目描述 wlswls所在的王国有nn个居民(不包括wlswls),他们共有mm件神奇的宝物. 对于第ii件宝物,wlswls可以花费a_iai的金币把它从原来的主人那里买过来. 请问wlswls最 ...
- linux c++下遍历文件
https://blog.csdn.net/u013617144/article/details/44807333
- python基础练习题3
01:有1,2,3,4个数字,能组成多少个互不相同且无重复的三位数,都是多少思路:可填写在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去掉不满足条件的排列 list =[,,,] li ...
- Node Buffer 利用 slice + indexOf 生成 split 方法
demo let buf = Buffer.from('你你我们我你们'); Buffer.prototype.split = function (seq) { let arr=[]; let len ...
- postman(一):详解在postman中使用环境变量
一.定义环境变量 添加环境分支 添加环境变量 切换环境分支 使用脚本设置环境变量 设置集合级别的变量 二.使用环境变量 使用{{变量名称}}的形式引用环境变量. 注:变量可以用在URL,请求参数,请求 ...
- Arduino库
单总线库: 下载地址 : 链接:https://pan.baidu.com/s/1YSuqrXWuBAxMEUWHy8rckw 提取码:svix 把整个文件夹复制到 Arduino安装目录的 ...
- 【leetcode】1123. Lowest Common Ancestor of Deepest Leaves
题目如下: Given a rooted binary tree, return the lowest common ancestor of its deepest leaves. Recall th ...
- iOS之UIDatePicker
这个还要取决于手机系统设置