15eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhupackage com.android.frameworkperf;
25eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu
35eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhuimport android.app.Activity;
45eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhuimport android.os.Bundle;
55eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhuimport android.test.ActivityInstrumentationTestCase2;
65eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu
75eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhupublic class FrameworkPerfTest extends ActivityInstrumentationTestCase2<FrameworkPerfActivity> {
85eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu
95eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu    private static final int TEST_TIMEOUT = 15 * 60 * 1000; //15 minutes
105eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu
115eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu    public FrameworkPerfTest() {
125eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu        super("com.android.frameworkperf", FrameworkPerfActivity.class);
135eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu    }
145eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu
155eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu    public void testFrameworkPerf() {
165eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu        final FrameworkPerfActivity activity = getActivity();
175eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu        synchronized (activity.mResultNotifier) {
185eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu            getInstrumentation().runOnMainSync(new Runnable() {
195eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                @Override
205eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                public void run() {
215eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                    activity.startRunning();
225eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                }
235eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu            });
245eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu            try {
255eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                activity.mResultNotifier.wait(TEST_TIMEOUT);
265eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu            } catch (InterruptedException e) {
275eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                fail("test interrupted.");
285eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu            }
295eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu        }
305eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu        Bundle testResult = new Bundle();
315eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu        synchronized (activity.mResults) {
325eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu            assertTrue("test results were empty.", activity.mResults.size() > 0);
335eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu            for (RunResult result : activity.mResults) {
345eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                testResult.putString(result.name, String.format("%f,%d,%d,%f,%d,%d",
355eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                        result.getFgMsPerOp(), result.fgOps, result.fgTime,
365eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu                        result.getBgMsPerOp(), result.bgOps, result.bgTime));
375eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu            }
385eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu        }
395eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu        getInstrumentation().sendStatus(Activity.RESULT_OK, testResult);
405eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu    }
415eefd7711f63bc1b67ec927a8c43363f426121ccGuang Zhu}
42