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