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模块的几个失败项的更多相关文章

  1. VMWare虚拟机提示:打不开磁盘…或它所依赖的某个快照磁盘,开启模块DiskEarly的操作失败,未能启动虚拟机

    将电脑上存在的虚拟机复制一份后打开运行,弹出错误提示: 打不开磁盘…或它所依赖的某个快照磁盘,开启模块DiskEarly的操作失败,未能启动虚拟机. 解决方法如下: 打开存放虚拟机系统硬盘的所在文件夹 ...

  2. 失败 - 模块“MonitorLoop”打开电源失败。

    启动虚拟机提示以下错误 失败 - 模块“MonitorLoop”打开电源失败. 磁盘空间满了

  3. 【CTS】几个serialno失败项

    [问题结论] [Common]SN配置项的问题,只可以'数字与大小写字母' 将配置SN改为字母数字组合,测试全部pass [问题描述] CTS三条失败项 run cts -m CtsTelephony ...

  4. VMware锁定文件失败开启模块diskearly的操作失败未能启动虚拟机

      删除虚拟机目录下的(如图中标明的就是D:\VMWorks\YeZiZxWeb这个目录)三个 *.lck文件夹,启动正常

  5. PN532模块连接-读卡失败原因

    第一步:点击发现NFC设备 第二步:点击读整卡:读取卡片内容. 若不成功,把UID卡移开,再放一次.再点第一步,显示发现NFC,再点第二步.反复操作,直到读取到为止.2-3次一般都会成功 . 相关软件 ...

  6. 注册OCX失败/ 找不到指定的模块

    错误信息:模块“*.OCX”加载失败,请确定二进制保存在指定的路径中,或者调试它以检查该二进制或相关的.dll文件是否有问题 对于电脑新手,关于OCX或DLL缺失是一件令人十分头疼的事,如果不幸遇到此 ...

  7. 解析 Linux 内核可装载模块的版本检查机制

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/ 为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可 ...

  8. 《linux内核设计与实现》实践之模块及深入

     <linux内核设计与实现>实践之模块及深入 写在前面的话. 基础模块部分我已经做完了,设计到的知识点无非就是,编写模块代码,编写Makefile文件,加载模块和卸载模块部分.由于大家都 ...

  9. GPRS连接失败问题

    备注:采用的是SIMCOM的SIM900模块 1. GPRS连接失败问题 2013.08.06测试9台C2000两次,两次之间是机器拿开电池,间隔40分钟左右,每次都出现一台(但不是同一台): ⑴9台 ...

随机推荐

  1. <img> 标签的 src 属性

    src属性 加载的时候就会请求 1.servlet生成一个图片 2.你直接输入servlet的连接看一下,就是一个图片,和我们自己发布到服务器的一样. 3.页面加载时,会访问这个servelt连接,自 ...

  2. Django rest_frameword 之项目流程

    后端开发软件目录规范 一.Model from django.db import models # Create your models here. # 多表的设计 # 图书 作者 出版社 作者详情表 ...

  3. idea的使用技巧

    * 简介:程序员每日都会花费数小时使用ide编写和调试代码,其中很多操作都是机械重复且频率非常高,本着"工欲善其事必先利其器"的精神,闷头写代码之外花点时间研究一下自己用的ide, ...

  4. Linux--用户与用户组--03

    用户管理: 1.useradd 创建用户 -c 指定用户描述 -d 指定家目录 -g 指定主组 -G 指定附加组 附加组可以有多个 -s 指定shell程序 特殊的/sbin/nologin--> ...

  5. 十一、Boostrap-X-editable

    一.官网 http://vitalets.github.io/x-editable/index.html 二.实践 在jQuery中ajax配置项中的使用type与method的区别: type 和m ...

  6. Centos 7 Mysql 最大连接数超了问题解决

    错误:Can not connect to MySQL server. Too many connections  -mysql 1040错误 这是因为对 Mysql 进行访问,未释放的连接数已经达到 ...

  7. HBase(二)——搭建Standalone HBase

    HBase搭建--Standalone HBase 1.搭建方式说明 the setup of a single-node standalone HBase. A standalone instanc ...

  8. RabbitMQ发送消息成功,但是接受不到消息

    commom模块为mq配置模块 分了多模块后消息队列无法自动创建,发现原因竟然是SpringBoot没有扫描到common模块内的配置类. 我们在XxxApplication启动类上添加@Compon ...

  9. Linux php.ini的安全优化配置

    Linux php.ini的安全优化配置   (1) PHP函数禁用找到 disable_functions = 该选项可以设置哪些PHP函数是禁止使用的,PHP中有一些函数的风险性还是相当大的,可以 ...

  10. man da'te

    DATE(1)                 用户命令                      DATE(1) 名称  日期-打印或设置系统日期和时间  简介   date [OPTION]... ...