12738fb1cb13314e68ea5442e335de427261cde3cXia Wang/* 22738fb1cb13314e68ea5442e335de427261cde3cXia Wang * Copyright (C) 2011 The Android Open Source Project 32738fb1cb13314e68ea5442e335de427261cde3cXia Wang * 42738fb1cb13314e68ea5442e335de427261cde3cXia Wang * Licensed under the Apache License, Version 2.0 (the "License"); 52738fb1cb13314e68ea5442e335de427261cde3cXia Wang * you may not use this file except in compliance with the License. 62738fb1cb13314e68ea5442e335de427261cde3cXia Wang * You may obtain a copy of the License at 72738fb1cb13314e68ea5442e335de427261cde3cXia Wang * 82738fb1cb13314e68ea5442e335de427261cde3cXia Wang * http://www.apache.org/licenses/LICENSE-2.0 92738fb1cb13314e68ea5442e335de427261cde3cXia Wang * 102738fb1cb13314e68ea5442e335de427261cde3cXia Wang * Unless required by applicable law or agreed to in writing, software 112738fb1cb13314e68ea5442e335de427261cde3cXia Wang * distributed under the License is distributed on an "AS IS" BASIS, 122738fb1cb13314e68ea5442e335de427261cde3cXia Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132738fb1cb13314e68ea5442e335de427261cde3cXia Wang * See the License for the specific language governing permissions and 142738fb1cb13314e68ea5442e335de427261cde3cXia Wang * limitations under the License. 152738fb1cb13314e68ea5442e335de427261cde3cXia Wang */ 162738fb1cb13314e68ea5442e335de427261cde3cXia Wang 172738fb1cb13314e68ea5442e335de427261cde3cXia Wangpackage com.android.perftest; 182738fb1cb13314e68ea5442e335de427261cde3cXia Wang 192738fb1cb13314e68ea5442e335de427261cde3cXia Wangimport android.app.Instrumentation; 202738fb1cb13314e68ea5442e335de427261cde3cXia Wangimport android.content.Context; 212738fb1cb13314e68ea5442e335de427261cde3cXia Wangimport android.content.Intent; 222738fb1cb13314e68ea5442e335de427261cde3cXia Wangimport android.net.Uri; 232738fb1cb13314e68ea5442e335de427261cde3cXia Wangimport android.test.ActivityInstrumentationTestCase2; 242738fb1cb13314e68ea5442e335de427261cde3cXia Wangimport android.test.TouchUtils; 252738fb1cb13314e68ea5442e335de427261cde3cXia Wangimport android.test.suitebuilder.annotation.LargeTest; 262738fb1cb13314e68ea5442e335de427261cde3cXia Wangimport android.util.Log; 272738fb1cb13314e68ea5442e335de427261cde3cXia Wang 282738fb1cb13314e68ea5442e335de427261cde3cXia Wang/** 292738fb1cb13314e68ea5442e335de427261cde3cXia Wang * To run the test, please use command 302738fb1cb13314e68ea5442e335de427261cde3cXia Wang * 312738fb1cb13314e68ea5442e335de427261cde3cXia Wang * adb shell am instrument -w com.android.perftest/.RsPerfTestRunner 322738fb1cb13314e68ea5442e335de427261cde3cXia Wang * 332738fb1cb13314e68ea5442e335de427261cde3cXia Wang */ 342738fb1cb13314e68ea5442e335de427261cde3cXia Wangpublic class RsBenchTest extends ActivityInstrumentationTestCase2<RsBench> { 352738fb1cb13314e68ea5442e335de427261cde3cXia Wang private String TAG = "RsBenchTest"; 362738fb1cb13314e68ea5442e335de427261cde3cXia Wang private int iterations = 0; 372738fb1cb13314e68ea5442e335de427261cde3cXia Wang private RsBench mAct; 382738fb1cb13314e68ea5442e335de427261cde3cXia Wang 392738fb1cb13314e68ea5442e335de427261cde3cXia Wang public RsBenchTest() { 402738fb1cb13314e68ea5442e335de427261cde3cXia Wang super(RsBench.class); 412738fb1cb13314e68ea5442e335de427261cde3cXia Wang } 422738fb1cb13314e68ea5442e335de427261cde3cXia Wang 432738fb1cb13314e68ea5442e335de427261cde3cXia Wang @Override 442738fb1cb13314e68ea5442e335de427261cde3cXia Wang public void setUp() throws Exception { 452738fb1cb13314e68ea5442e335de427261cde3cXia Wang super.setUp(); 462738fb1cb13314e68ea5442e335de427261cde3cXia Wang Instrumentation mInst = getInstrumentation(); 472738fb1cb13314e68ea5442e335de427261cde3cXia Wang RsPerfTestRunner mRunner = (RsPerfTestRunner) getInstrumentation(); 482738fb1cb13314e68ea5442e335de427261cde3cXia Wang iterations = mRunner.iterations; 492738fb1cb13314e68ea5442e335de427261cde3cXia Wang Log.v(TAG, "Run benchmark for " + iterations + " iterations."); 502738fb1cb13314e68ea5442e335de427261cde3cXia Wang 512738fb1cb13314e68ea5442e335de427261cde3cXia Wang Uri data = Uri.fromParts("iterations", Integer.toString(iterations), null); 522738fb1cb13314e68ea5442e335de427261cde3cXia Wang Intent intent = new Intent(Intent.ACTION_MAIN); 532738fb1cb13314e68ea5442e335de427261cde3cXia Wang intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 542738fb1cb13314e68ea5442e335de427261cde3cXia Wang intent.setClassName("com.android.perftest", "com.android.perftest.RsBench"); 552738fb1cb13314e68ea5442e335de427261cde3cXia Wang intent.setData(data); 562738fb1cb13314e68ea5442e335de427261cde3cXia Wang mAct = (RsBench) mInst.startActivitySync(intent); 572738fb1cb13314e68ea5442e335de427261cde3cXia Wang mInst.waitForIdleSync(); 582738fb1cb13314e68ea5442e335de427261cde3cXia Wang 592738fb1cb13314e68ea5442e335de427261cde3cXia Wang } 602738fb1cb13314e68ea5442e335de427261cde3cXia Wang 612738fb1cb13314e68ea5442e335de427261cde3cXia Wang @Override 622738fb1cb13314e68ea5442e335de427261cde3cXia Wang public void tearDown() throws Exception { 632738fb1cb13314e68ea5442e335de427261cde3cXia Wang mAct.finish(); 642738fb1cb13314e68ea5442e335de427261cde3cXia Wang super.tearDown(); 652738fb1cb13314e68ea5442e335de427261cde3cXia Wang } 662738fb1cb13314e68ea5442e335de427261cde3cXia Wang 672738fb1cb13314e68ea5442e335de427261cde3cXia Wang /** 682738fb1cb13314e68ea5442e335de427261cde3cXia Wang * Run tests and wait until the test has been run for iterations. 692738fb1cb13314e68ea5442e335de427261cde3cXia Wang */ 702738fb1cb13314e68ea5442e335de427261cde3cXia Wang @LargeTest 712738fb1cb13314e68ea5442e335de427261cde3cXia Wang public void testRsBench() { 722738fb1cb13314e68ea5442e335de427261cde3cXia Wang if (mAct.mView.testIsFinished()) { 732738fb1cb13314e68ea5442e335de427261cde3cXia Wang return; 742738fb1cb13314e68ea5442e335de427261cde3cXia Wang } else { 752738fb1cb13314e68ea5442e335de427261cde3cXia Wang fail("test didn't stop correctly"); 762738fb1cb13314e68ea5442e335de427261cde3cXia Wang } 772738fb1cb13314e68ea5442e335de427261cde3cXia Wang } 782738fb1cb13314e68ea5442e335de427261cde3cXia Wang} 79