Android Wifi:使用Android Instrument 自动测试 WIFI_SERVICE

转载 2012年03月22日 18:12:46

Porting 了新的Wifi hardware_legancy,

这个时候需要对对  Android Wifi On/Off 作压力测试

 

发现可以使用Android Instrument 和Android Test Project 来做测试。

 

1.  在Eclipse 里新建 一个 Android Test Project.

 

 测试代码

AllTest.java

  1. package com.example.wifitoggle;  
  2.   
  3. import junit.framework.Test;  
  4. import junit.framework.TestSuite;  
  5.   
  6. public class AllTests {  
  7.   
  8.     public static Test suite() {  
  9.         TestSuite suite = new TestSuite(  
  10.                 "Test for com.android.settings.testsuite");  
  11.         //$JUnit-BEGIN$   
  12.   
  13.         //$JUnit-END$   
  14.         return suite;  
  15.     }  
  16.   
  17. }  

 

WifiSettingTest.java

  1. package com.example.wifitoggle.test;  
  2.   
  3. //import Forwarding;   
  4. import junit.framework.Assert;  
  5. import junit.framework.TestCase;  
  6. import android.app.Activity;  
  7. import android.content.Intent;  
  8. import android.net.wifi.WifiManager;  
  9. import android.util.Log;  
  10. import android.os.Bundle;  
  11. import android.content.Context;  
  12. import android.test.AndroidTestCase;  
  13. public class WifiSettingTest extends AndroidTestCase {  
  14.   
  15.     private WifiManager mWifiManager = null;  
  16.     private final int TEST_COUNT = 10;  
  17.     private final int INTERVAL_DELAY_MS = 2000;  
  18.       
  19.     protected void setUp() throws Exception {  
  20.         super.setUp();  
  21.             Context serviceManager = getContext();  
  22.                 mWifiManager = (WifiManager) serviceManager.getSystemService(Context.WIFI_SERVICE);       
  23.     }  
  24.       
  25.     private void sleep(int ms) {  
  26.         try {  
  27.             Thread.sleep(ms);  
  28.         } catch (InterruptedException e) {  
  29.             // TODO Auto-generated catch block   
  30.             e.printStackTrace();  
  31.         }  
  32.         }  
  33.       
  34.     public void testTurnOnOff() {  
  35.         boolean enable = false;  
  36.         boolean result = false;  
  37.            
  38.             for(int i  = 0; i < TEST_COUNT; i++) {  
  39.                 final int WAIT_TIMEOUT_S = 30;  
  40.                 int wifiState = mWifiManager.getWifiState();  
  41.                 if(wifiState == WifiManager.WIFI_STATE_ENABLED) {  
  42.                     result = false;  
  43.                 Log.w("WIFI TEST""Turning wifi off...");  
  44.                     mWifiManager.setWifiEnabled(false);  
  45.                     for(int j = 0; j < WAIT_TIMEOUT_S; j ++) {  
  46.                         sleep(1000);  
  47.                             wifiState = mWifiManager.getWifiState();  
  48.                             if(wifiState == WifiManager.WIFI_STATE_DISABLED) {  
  49.                                 result = true;  
  50.                         Log.w("WIFI TEST""Turning wifi off success.");  
  51.                                 break;  
  52.                             } else if (wifiState == WifiManager.WIFI_STATE_UNKNOWN) {  
  53.                         Log.w("WIFI TEST""Turning wifi off failed.");  
  54.                                 break;  
  55.                             }  
  56.                         }  
  57.                 } else if (wifiState == WifiManager.WIFI_STATE_DISABLED) {  
  58.                     result = false;  
  59.                 Log.w("WIFI TEST""Turning wifi on...");  
  60.                     mWifiManager.setWifiEnabled(true);  
  61.                     for(int j = 0; j < WAIT_TIMEOUT_S; j ++) {  
  62.                         sleep(1000);  
  63.                             wifiState = mWifiManager.getWifiState();  
  64.                             if(wifiState == WifiManager.WIFI_STATE_ENABLED) {  
  65.                                 result = true;  
  66.                         Log.w("WIFI TEST""Turning wifi on success.");  
  67.                                 break;  
  68.                             } else if (wifiState == WifiManager.WIFI_STATE_UNKNOWN) {  
  69.                         Log.w("WIFI TEST""Turning wifi on failed.");  
  70.                                 break;  
  71.                             }  
  72.                         }  
  73.                 }  
  74.                 Assert.assertTrue(result);  
  75.                   
  76.                 sleep(INTERVAL_DELAY_MS);  
  77.             }     
  78.         }  
  79.   
  80. }  

 

AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="com.example.wifitoggle.tests"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0"  
  6. android:sharedUserId="android.uid.system">  
  7.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  8.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
  9.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
  10.       
  11.     <uses-library android:name="android.test.runner" />  
  12.     </application>  
  13.     <instrumentation android:targetPackage="com.example.wifitoggle.tests" android:name="android.test.InstrumentationTestRunner" />  
  14. </manifest>   

 

 

2. Eclipse 环境下的sdk版本 可能与实际 Android src 不兼容。 所以测试 WIFI SERVICE 这类framework 层代码,

需要将 测试程序放到Android 环境下编译,而不是在Eclipse 下编译。

实现这一步,只要简单的写一个Android.mk 然后将测试程序 目录拷贝到 packages/app/ 下, 再运行 mm 编译即可.

Android.mk

  1. LOCAL_PATH:= $(call my-dir)  
  2. include $(CLEAR_VARS)  
  3.   
  4. # We only want this apk build for tests.  
  5. LOCAL_MODULE_TAGS :tests  
  6. # Also link against our own custom library.  
  7. LOCAL_JAVA_LIBRARIES :android.test.runner  
  8.   
  9. #LOCAL_JAVA_LIBRARIES += com.android.settings  
  10.   
  11. # Include all test java files.  
  12. LOCAL_SRC_FILES := $(call all-java-files-under, src)  
  13.   
  14. LOCAL_PACKAGE_NAME :wifitoggletest  
  15.   
  16. #LOCAL_INSTRUMENTATION_FOR :wifitoggle  
  17.   
  18. LOCAL_CERTIFICATE :platform  
  19.   
  20. include $(BUILD_PACKAGE)  

 

# cd $ANDROID_PATH

# source ./build/envsetup.sh

# cd packages/app/WifiToggleTest
# mm

 

 

3.

wifitoggletest.apk 生成后就可以通过instrument 和 adb协议来测试 WIFI_SERVICE 功能了。 
# croot
# adb uninstall com.example.wifitoggle.tests (It is not necessary for the first time running.)
# adb install ./out/target/product/eagle/data/app/wifitoggletest.apk
# adb shell am instrument -w com.example.wifitoggle.tests/android.test.InstrumentationTestRunner

 

 

使用Iperf工具测试android系统网络wifi的吞吐量wifithrougput

1 windows 上测试网路吞吐量工具 对于window测试网络吞吐量的工具 http://download.csdn.net/download/leekwen/3427386 ...
  • bingxuebage
  • bingxuebage
  • 2012年05月04日 13:35
  • 41147

使用Android Instrument 自动测试 WIFI_SERVICE

orting 了新的Wifi hardware_legancy, 这个时候需要对对  Android Wifi On/Off 作压力测试 发现可以使用Android Instrument 和Andro...
  • cubesky
  • cubesky
  • 2014年08月22日 11:33
  • 421

Android Instrument自动测试:Wifi_service

Porting 了新的Wifi hardware_legancy, 这个时候需要对对  Android Wifi On/Off 作压力测试   发现可以使用Android Instrument ...
  • pugongying1988
  • pugongying1988
  • 2012年02月11日 16:29
  • 839

【转】使用Android Instrument 自动测试 WIFI_SERVICE

http://blog.csdn.net/stevenliyong/archive/2010/05/06/5563759.aspx 使用Android Instrument 自动测试 WIFI_SER...
  • devehe
  • devehe
  • 2010年05月24日 22:44
  • 1342

Android WiFi管理(WIFI_SERVICE)

  • sbvfhp
  • sbvfhp
  • 2011年11月24日 10:52
  • 4217

Android Instrument 自动测试 WIFI on off

http://blog.csdn.net/stevenliyong/article/details/5563759
  • tzh2009
  • tzh2009
  • 2014年05月19日 15:06
  • 1589

第87章、系统服务之WIFI_SERVICE(从零开始学Android)

WIFI就是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点...
  • jianghuiquan
  • jianghuiquan
  • 2013年03月11日 16:57
  • 5014

android wifi操作大全

包含:wifi连接,wifi加密情况,wifi配置,wifi扫描,wifi连接速度,wifi的详细Info,wifi的强度等 import java.net.Inet4Address; import...
  • q908555281
  • q908555281
  • 2015年09月18日 14:39
  • 1316

Android Studio 2.3的各种新增疑难杂症

3月初谷歌发布了Android Studio 2.3,博主这一阵认真用2.3把之前的项目重编了一下,发现了不少兼容性问题,于是决定开个贴记录一下这些疑难杂症。一、首先是升级完毕之后,原来的项目居然编译...
  • aqi00
  • aqi00
  • 2017年05月02日 16:32
  • 4806

android wifiservice enable流程

这一章来分析一下从Settings打开wifi后,framework所有的流程以及状态转换,调用的主要函数就是WiFiMananger的setWifiEnabled(boolean enabled),...
  • haungyongquan
  • haungyongquan
  • 2017年04月25日 18:35
  • 264
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Wifi:使用Android Instrument 自动测试 WIFI_SERVICE
举报原因:
原因补充:

(最多只允许输入30个字)