DataIdleTest.java revision 3ae29d455866ce358b42617134610415c04e0d53
13ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang/* 23ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * Copyright (C) 2011 The Android Open Source Project 33ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * 43ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * Licensed under the Apache License, Version 2.0 (the "License"); 53ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * you may not use this file except in compliance with the License. 63ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * You may obtain a copy of the License at 73ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * 83ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * http://www.apache.org/licenses/LICENSE-2.0 93ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * 103ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * Unless required by applicable law or agreed to in writing, software 113ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * distributed under the License is distributed on an "AS IS" BASIS, 123ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * See the License for the specific language governing permissions and 143ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * limitations under the License. 153ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang */ 163ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangpackage com.android.tests.dataidle; 173ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 183ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.content.Context; 193ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.net.INetworkStatsService; 203ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.net.NetworkStats.Entry; 213ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.net.NetworkTemplate; 223ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.net.NetworkStats; 233ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.os.Bundle; 243ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.os.RemoteException; 253ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.os.ServiceManager; 263ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.telephony.TelephonyManager; 273ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.test.InstrumentationTestCase; 283ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.test.InstrumentationTestRunner; 293ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangimport android.util.Log; 303ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 313ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang/** 323ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * A test that dumps data usage to instrumentation out, used for measuring data usage for idle 333ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * devices. 343ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang */ 353ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuangpublic class DataIdleTest extends InstrumentationTestCase { 363ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 373ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang private TelephonyManager mTelephonyManager; 383ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang private INetworkStatsService mStatsService; 393ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 403ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang private static final String LOG_TAG = "DataIdleTest"; 413ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang private final static int INSTRUMENTATION_IN_PROGRESS = 2; 423ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 433ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang protected void setUp() throws Exception { 443ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang super.setUp(); 453ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang Context c = getInstrumentation().getTargetContext(); 463ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang mStatsService = INetworkStatsService.Stub.asInterface( 473ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang ServiceManager.getService(Context.NETWORK_STATS_SERVICE)); 483ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang mTelephonyManager = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); 493ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang } 503ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 513ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang /** 523ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * Test that dumps all the data usage metrics for wifi to instrumentation out. 533ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang */ 543ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang public void testWifiIdle() { 553ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang NetworkTemplate template = NetworkTemplate.buildTemplateWifi(); 563ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang fetchStats(template); 573ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang } 583ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 593ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang /** 603ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * Test that dumps all the data usage metrics for all mobile to instrumentation out. 613ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang */ 623ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang public void testMobile() { 633ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang String subscriberId = mTelephonyManager.getSubscriberId(); 643ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang NetworkTemplate template = NetworkTemplate.buildTemplateMobileAll(subscriberId); 653ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang fetchStats(template); 663ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang } 673ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 683ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang /** 693ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * Helper method that fetches all the network stats available and reports it 703ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * to instrumentation out. 713ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * @param template {link {@link NetworkTemplate} to match. 723ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang */ 733ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang private void fetchStats(NetworkTemplate template) { 743ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang try { 753ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang NetworkStats stats = mStatsService.getSummaryForAllUid(template, Long.MIN_VALUE, 763ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang Long.MAX_VALUE, false); 773ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang reportStats(stats); 783ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang } catch (RemoteException e) { 793ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang Log.w(LOG_TAG, "Failed to fetch network stats for wifi."); 803ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang } 813ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang } 823ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang 833ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang /** 843ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * Print network data usage stats to instrumentation out 853ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang * @param stats {@link NetworkorStats} to print 863ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang */ 873ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang void reportStats(NetworkStats stats) { 883ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang for (int i = 0; i < stats.size(); ++i) { 893ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang Entry statsEntry = stats.getValues(i, null); 903ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang Bundle result = new Bundle(); 913ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang result.putInt("uid", statsEntry.uid); 923ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang result.putInt("tag", statsEntry.tag); 933ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang result.putInt("set", statsEntry.set); 943ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang result.putString("iface", statsEntry.iface); 953ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang result.putLong("rxBytes", statsEntry.rxBytes); 963ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang result.putLong("txBytes", statsEntry.txBytes); 973ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang getInstrumentation().sendStatus(INSTRUMENTATION_IN_PROGRESS, result); 983ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang } 993ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang } 1003ae29d455866ce358b42617134610415c04e0d53Tsu Chiang Chuang} 101