115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2009 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 177c6efa13f129dbae5319f0981a430d4662f43354Xia Wangpackage com.android.browserpowertest; 187c6efa13f129dbae5319f0981a430d4662f43354Xia Wang 197c6efa13f129dbae5319f0981a430d4662f43354Xia Wangimport android.content.Intent; 207c6efa13f129dbae5319f0981a430d4662f43354Xia Wangimport android.app.Instrumentation; 217c6efa13f129dbae5319f0981a430d4662f43354Xia Wangimport android.os.Handler; 227c6efa13f129dbae5319f0981a430d4662f43354Xia Wangimport android.os.Message; 237c6efa13f129dbae5319f0981a430d4662f43354Xia Wangimport android.test.ActivityInstrumentationTestCase2; 247c6efa13f129dbae5319f0981a430d4662f43354Xia Wangimport android.util.Log; 257c6efa13f129dbae5319f0981a430d4662f43354Xia Wangimport junit.framework.*; 267c6efa13f129dbae5319f0981a430d4662f43354Xia Wang 277c6efa13f129dbae5319f0981a430d4662f43354Xia Wangpublic class PowerMeasurement extends ActivityInstrumentationTestCase2<PowerTestActivity> { 287c6efa13f129dbae5319f0981a430d4662f43354Xia Wang 297c6efa13f129dbae5319f0981a430d4662f43354Xia Wang private static final String LOGTAG = "PowerMeasurement"; 307c6efa13f129dbae5319f0981a430d4662f43354Xia Wang private static final String PKG_NAME = "com.android.browserpowertest"; 31d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau private static final String TESTING_URL = 32d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau "http://75.17.48.204:10088/nyt/index.html"; 337c6efa13f129dbae5319f0981a430d4662f43354Xia Wang private static final int TIME_OUT = 2 * 60 * 1000; 347c6efa13f129dbae5319f0981a430d4662f43354Xia Wang private static final int DELAY = 0; 357c6efa13f129dbae5319f0981a430d4662f43354Xia Wang 367c6efa13f129dbae5319f0981a430d4662f43354Xia Wang public PowerMeasurement() { 377c6efa13f129dbae5319f0981a430d4662f43354Xia Wang super(PKG_NAME, PowerTestActivity.class); 387c6efa13f129dbae5319f0981a430d4662f43354Xia Wang } 397c6efa13f129dbae5319f0981a430d4662f43354Xia Wang 4030412d1ce0d65acda8c65a7fbe09a55900647f6aYu Shan Emily Lau public void testPageLoadStaticNYTimes() throws Throwable { 417c6efa13f129dbae5319f0981a430d4662f43354Xia Wang Instrumentation mInst = getInstrumentation(); 427c6efa13f129dbae5319f0981a430d4662f43354Xia Wang PowerTestActivity act = getActivity(); 437c6efa13f129dbae5319f0981a430d4662f43354Xia Wang 447c6efa13f129dbae5319f0981a430d4662f43354Xia Wang Intent intent = new Intent(mInst.getContext(), PowerTestActivity.class); 457c6efa13f129dbae5319f0981a430d4662f43354Xia Wang intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 467c6efa13f129dbae5319f0981a430d4662f43354Xia Wang long start = System.currentTimeMillis(); 477c6efa13f129dbae5319f0981a430d4662f43354Xia Wang PowerTestActivity activity = (PowerTestActivity)mInst.startActivitySync( 487c6efa13f129dbae5319f0981a430d4662f43354Xia Wang intent); 497c6efa13f129dbae5319f0981a430d4662f43354Xia Wang activity.reset(); 507c6efa13f129dbae5319f0981a430d4662f43354Xia Wang //send a message with the new URL 517c6efa13f129dbae5319f0981a430d4662f43354Xia Wang Handler handler = activity.getHandler(); 527c6efa13f129dbae5319f0981a430d4662f43354Xia Wang Message msg = handler.obtainMessage( 537c6efa13f129dbae5319f0981a430d4662f43354Xia Wang PowerTestActivity.MSG_NAVIGATE, TIME_OUT, DELAY); 547c6efa13f129dbae5319f0981a430d4662f43354Xia Wang msg.getData().putString(PowerTestActivity.MSG_NAV_URL, TESTING_URL); 557c6efa13f129dbae5319f0981a430d4662f43354Xia Wang msg.getData().putBoolean(PowerTestActivity.MSG_NAV_LOGTIME, true); 567c6efa13f129dbae5319f0981a430d4662f43354Xia Wang 577c6efa13f129dbae5319f0981a430d4662f43354Xia Wang handler.sendMessage(msg); 587c6efa13f129dbae5319f0981a430d4662f43354Xia Wang boolean timeoutFlag = activity.waitUntilDone(); 597c6efa13f129dbae5319f0981a430d4662f43354Xia Wang long end = System.currentTimeMillis(); 607c6efa13f129dbae5319f0981a430d4662f43354Xia Wang assertFalse(TESTING_URL + " failed to load", timeoutFlag); 617c6efa13f129dbae5319f0981a430d4662f43354Xia Wang boolean pageErrorFlag = activity.getPageError(); 627c6efa13f129dbae5319f0981a430d4662f43354Xia Wang assertFalse(TESTING_URL + " is not available, either network is down or the server is down", 637c6efa13f129dbae5319f0981a430d4662f43354Xia Wang pageErrorFlag); 647c6efa13f129dbae5319f0981a430d4662f43354Xia Wang Log.v(LOGTAG, "Page is loaded in " + activity.getPageLoadTime() + " ms."); 657c6efa13f129dbae5319f0981a430d4662f43354Xia Wang 66d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau // Force to clean up the cache dir so that it get back to the clean 67d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau // state 68d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau Runtime fileRemoval = Runtime.getRuntime(); 69d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau String cmdBecomeSu = "su"; 70d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau boolean clearCacheSuccess = false; 71d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau try{ 72d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau Process runsum = fileRemoval.exec(cmdBecomeSu); 73d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau int exitVal = runsum.waitFor(); 74d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau String rmfile = "rm -r /data/data/com.android.browserpowertest/cache"; 75d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau Process removal = fileRemoval.exec(rmfile); 76d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau exitVal = removal.waitFor(); 77d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau if (exitVal == 0) { 78d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau clearCacheSuccess = true; 79d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau } 80d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau } catch ( Exception e){ 81d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau assertTrue("Fails to clear the cahche", false); 82d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau } 83d2ef9e31e6f2492d79062f776a7138ed9235172bYu Shan Emily Lau assertTrue("Fails to clear the cahche", clearCacheSuccess); 847c6efa13f129dbae5319f0981a430d4662f43354Xia Wang activity.finish(); 857c6efa13f129dbae5319f0981a430d4662f43354Xia Wang } 867c6efa13f129dbae5319f0981a430d4662f43354Xia Wang} 87