diff --git a/tests/FrameworkPerf/Android.mk b/tests/FrameworkPerf/Android.mk
index 03893d6..2eb52f0 100644
--- a/tests/FrameworkPerf/Android.mk
+++ b/tests/FrameworkPerf/Android.mk
@@ -7,6 +7,8 @@
 
 LOCAL_PACKAGE_NAME := FrameworkPerf
 
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
 LOCAL_AAPT_FLAGS = -c 120dpi,240dpi,160dpi,161dpi,320dpi,nodpi
 
 include $(BUILD_PACKAGE)
diff --git a/tests/FrameworkPerf/AndroidManifest.xml b/tests/FrameworkPerf/AndroidManifest.xml
index e88f4fb..2591aaf 100644
--- a/tests/FrameworkPerf/AndroidManifest.xml
+++ b/tests/FrameworkPerf/AndroidManifest.xml
@@ -4,6 +4,7 @@
     <uses-sdk android:minSdkVersion="5" />
 
     <application android:hardwareAccelerated="false">
+        <uses-library android:name="android.test.runner" />
         <activity android:name="FrameworkPerfActivity" android:label="Framework Perf">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -20,4 +21,9 @@
         <receiver android:name="Receiver" android:exported="true">
         </receiver>
     </application>
+
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+        android:targetPackage="com.android.frameworkperf"
+        android:label="Framework Perf Runner"
+    />
 </manifest>
diff --git a/tests/FrameworkPerf/src/com/android/frameworkperf/FrameworkPerfActivity.java b/tests/FrameworkPerf/src/com/android/frameworkperf/FrameworkPerfActivity.java
index 175f227..8ee5978 100644
--- a/tests/FrameworkPerf/src/com/android/frameworkperf/FrameworkPerfActivity.java
+++ b/tests/FrameworkPerf/src/com/android/frameworkperf/FrameworkPerfActivity.java
@@ -73,6 +73,8 @@
 
     final ArrayList<RunResult> mResults = new ArrayList<RunResult>();
 
+    Object mResultNotifier = new Object();
+
     class TestConnection implements ServiceConnection, IBinder.DeathRecipient {
         Messenger mService;
         boolean mLinked;
@@ -266,7 +268,9 @@
         log(String.format("%s: fg=%d*%gms/op (%dms) / bg=%d*%gms/op (%dms)",
                 result.name, result.fgOps, result.getFgMsPerOp(), result.fgTime,
                 result.bgOps, result.getBgMsPerOp(), result.bgTime));
-        mResults.add(result);
+        synchronized (mResults) {
+            mResults.add(result);
+        }
         if (!mStarted) {
             log("Stop");
             stopRunning();
@@ -376,7 +380,9 @@
             startService(new Intent(this, SchedulerService.class));
             mCurOpIndex = 0;
             mMaxRunTime = Integer.parseInt(mTestTime.getText().toString());
-            mResults.clear();
+            synchronized (mResults) {
+                mResults.clear();
+            }
             startCurOp();
         }
     }
@@ -393,17 +399,22 @@
             mBgSpinner.setEnabled(true);
             updateWakeLock();
             stopService(new Intent(this, SchedulerService.class));
-            for (int i=0; i<mResults.size(); i++) {
-                RunResult result = mResults.get(i);
-                float fgMsPerOp = result.getFgMsPerOp();
-                float bgMsPerOp = result.getBgMsPerOp();
-                String fgMsPerOpStr = fgMsPerOp != 0 ? Float.toString(fgMsPerOp) : "";
-                String bgMsPerOpStr = bgMsPerOp != 0 ? Float.toString(bgMsPerOp) : "";
-                Log.i("PerfRes", "\t" + result.name + "\t" + result.fgOps
-                        + "\t" + result.getFgMsPerOp() + "\t" + result.fgTime
-                        + "\t" + result.fgLongName + "\t" + result.bgOps
-                        + "\t" + result.getBgMsPerOp() + "\t" + result.bgTime
-                        + "\t" + result.bgLongName);
+            synchronized (mResults) {
+                for (int i=0; i<mResults.size(); i++) {
+                    RunResult result = mResults.get(i);
+                    float fgMsPerOp = result.getFgMsPerOp();
+                    float bgMsPerOp = result.getBgMsPerOp();
+                    String fgMsPerOpStr = fgMsPerOp != 0 ? Float.toString(fgMsPerOp) : "";
+                    String bgMsPerOpStr = bgMsPerOp != 0 ? Float.toString(bgMsPerOp) : "";
+                    Log.i("PerfRes", "\t" + result.name + "\t" + result.fgOps
+                            + "\t" + result.getFgMsPerOp() + "\t" + result.fgTime
+                            + "\t" + result.fgLongName + "\t" + result.bgOps
+                            + "\t" + result.getBgMsPerOp() + "\t" + result.bgTime
+                            + "\t" + result.bgLongName);
+                }
+            }
+            synchronized (mResultNotifier) {
+                mResultNotifier.notifyAll();
             }
         }
     }
diff --git a/tests/FrameworkPerf/src/com/android/frameworkperf/FrameworkPerfTest.java b/tests/FrameworkPerf/src/com/android/frameworkperf/FrameworkPerfTest.java
new file mode 100644
index 0000000..2a53b06
--- /dev/null
+++ b/tests/FrameworkPerf/src/com/android/frameworkperf/FrameworkPerfTest.java
@@ -0,0 +1,41 @@
+package com.android.frameworkperf;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.test.ActivityInstrumentationTestCase2;
+
+public class FrameworkPerfTest extends ActivityInstrumentationTestCase2<FrameworkPerfActivity> {
+
+    private static final int TEST_TIMEOUT = 15 * 60 * 1000; //15 minutes
+
+    public FrameworkPerfTest() {
+        super("com.android.frameworkperf", FrameworkPerfActivity.class);
+    }
+
+    public void testFrameworkPerf() {
+        final FrameworkPerfActivity activity = getActivity();
+        synchronized (activity.mResultNotifier) {
+            getInstrumentation().runOnMainSync(new Runnable() {
+                @Override
+                public void run() {
+                    activity.startRunning();
+                }
+            });
+            try {
+                activity.mResultNotifier.wait(TEST_TIMEOUT);
+            } catch (InterruptedException e) {
+                fail("test interrupted.");
+            }
+        }
+        Bundle testResult = new Bundle();
+        synchronized (activity.mResults) {
+            assertTrue("test results were empty.", activity.mResults.size() > 0);
+            for (RunResult result : activity.mResults) {
+                testResult.putString(result.name, String.format("%f,%d,%d,%f,%d,%d",
+                        result.getFgMsPerOp(), result.fgOps, result.fgTime,
+                        result.getBgMsPerOp(), result.bgOps, result.bgTime));
+            }
+        }
+        getInstrumentation().sendStatus(Activity.RESULT_OK, testResult);
+    }
+}
