Skip to content

Commit 0516061

Browse files
Christopher TateAndroid (Google) Code Review
authored andcommitted
Merge "Add iteration-limited mode to FrameworkPerf" into ics-mr1
2 parents e571552 + 80a682b commit 0516061

File tree

4 files changed

+61
-6
lines changed

4 files changed

+61
-6
lines changed

tests/FrameworkPerf/res/layout/main.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,22 @@
5959
android:textAppearance="?android:attr/textAppearanceSmall"
6060
/>
6161

62+
<LinearLayout android:layout_width="match_parent"
63+
android:layout_height="wrap_content"
64+
android:orientation="horizontal"
65+
android:layout_marginTop="10dp"
66+
>
67+
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
68+
android:textAppearance="?android:attr/textAppearanceMedium"
69+
android:text="Limit by: "
70+
/>
71+
<Spinner android:id="@+id/limitspinner"
72+
android:layout_width="match_parent"
73+
android:layout_height="wrap_content"
74+
android:drawSelectorOnTop="true"
75+
/>
76+
</LinearLayout>
77+
6278
<LinearLayout android:layout_width="match_parent"
6379
android:layout_height="wrap_content"
6480
android:orientation="horizontal"
@@ -67,6 +83,7 @@
6783
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
6884
android:textAppearance="?android:attr/textAppearanceMedium"
6985
android:text="Test time (ms): "
86+
android:id="@+id/limitlabel"
7087
/>
7188
<EditText android:id="@+id/testtime"
7289
android:layout_width="match_parent"

tests/FrameworkPerf/src/com/android/frameworkperf/FrameworkPerfActivity.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ public class FrameworkPerfActivity extends Activity
5050

5151
Spinner mFgSpinner;
5252
Spinner mBgSpinner;
53+
Spinner mLimitSpinner;
54+
TextView mLimitLabel;
5355
TextView mTestTime;
5456
Button mStartButton;
5557
Button mStopButton;
@@ -58,10 +60,12 @@ public class FrameworkPerfActivity extends Activity
5860
PowerManager.WakeLock mPartialWakeLock;
5961

6062
long mMaxRunTime = 5000;
63+
boolean mLimitIsIterations;
6164
boolean mStarted;
6265

6366
final String[] mAvailOpLabels;
6467
final String[] mAvailOpDescriptions;
68+
final String[] mLimitLabels = { "Time", "Iterations" };
6569

6670
int mFgTestIndex = -1;
6771
int mBgTestIndex = -1;
@@ -169,8 +173,15 @@ public void onCreate(Bundle savedInstanceState) {
169173
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
170174
mBgSpinner.setAdapter(adapter);
171175
mBgSpinner.setOnItemSelectedListener(this);
176+
mLimitSpinner = (Spinner) findViewById(R.id.limitspinner);
177+
adapter = new ArrayAdapter<String>(this,
178+
android.R.layout.simple_spinner_item, mLimitLabels);
179+
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
180+
mLimitSpinner.setAdapter(adapter);
181+
mLimitSpinner.setOnItemSelectedListener(this);
172182

173183
mTestTime = (TextView)findViewById(R.id.testtime);
184+
mLimitLabel = (TextView)findViewById(R.id.limitlabel);
174185

175186
mStartButton = (Button)findViewById(R.id.start);
176187
mStartButton.setOnClickListener(new View.OnClickListener() {
@@ -196,16 +207,23 @@ public void onCreate(Bundle savedInstanceState) {
196207

197208
@Override
198209
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
199-
if (parent == mFgSpinner || parent == mBgSpinner) {
210+
if (parent == mFgSpinner || parent == mBgSpinner || parent == mLimitSpinner) {
200211
TestService.Op op = TestService.mAvailOps[position];
201212
if (parent == mFgSpinner) {
202213
mFgTestIndex = position;
203214
mFgTest = op;
204215
((TextView)findViewById(R.id.fgtext)).setText(mAvailOpDescriptions[position]);
205-
} else {
216+
} else if (parent == mBgSpinner) {
206217
mBgTestIndex = position;
207218
mBgTest = op;
208219
((TextView)findViewById(R.id.bgtext)).setText(mAvailOpDescriptions[position]);
220+
} else if (parent == mLimitSpinner) {
221+
mLimitIsIterations = (position != 0);
222+
if (mLimitIsIterations) {
223+
mLimitLabel.setText("Iterations: ");
224+
} else {
225+
mLimitLabel.setText("Test time (ms): ");
226+
}
209227
}
210228
}
211229
}
@@ -234,7 +252,11 @@ void dispatchCurOp(TestConnection conn) {
234252
return;
235253
}
236254
TestArgs args = new TestArgs();
237-
args.maxTime = mMaxRunTime;
255+
if (mLimitIsIterations) {
256+
args.maxOps = mMaxRunTime;
257+
} else {
258+
args.maxTime = mMaxRunTime;
259+
}
238260
if (mFgTestIndex == 0 && mBgTestIndex == 0) {
239261
args.combOp = mCurOpIndex;
240262
} else if (mFgTestIndex != 0 && mBgTestIndex != 0) {
@@ -376,6 +398,7 @@ void startRunning() {
376398
mTestTime.setEnabled(false);
377399
mFgSpinner.setEnabled(false);
378400
mBgSpinner.setEnabled(false);
401+
mLimitSpinner.setEnabled(false);
379402
updateWakeLock();
380403
startService(new Intent(this, SchedulerService.class));
381404
mCurOpIndex = 0;
@@ -397,6 +420,7 @@ void stopRunning() {
397420
mTestTime.setEnabled(true);
398421
mFgSpinner.setEnabled(true);
399422
mBgSpinner.setEnabled(true);
423+
mLimitSpinner.setEnabled(true);
400424
updateWakeLock();
401425
stopService(new Intent(this, SchedulerService.class));
402426
synchronized (mResults) {

tests/FrameworkPerf/src/com/android/frameworkperf/TestArgs.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
public class TestArgs implements Parcelable {
2323
long maxTime;
24+
long maxOps = -1;
2425
int combOp = -1;
2526
int fgOp = -1;
2627
int bgOp = -1;
@@ -30,6 +31,7 @@ public TestArgs() {
3031

3132
public TestArgs(Parcel source) {
3233
maxTime = source.readLong();
34+
maxOps = source.readLong();
3335
combOp = source.readInt();
3436
fgOp = source.readInt();
3537
bgOp = source.readInt();
@@ -43,6 +45,7 @@ public int describeContents() {
4345
@Override
4446
public void writeToParcel(Parcel dest, int flags) {
4547
dest.writeLong(maxTime);
48+
dest.writeLong(maxOps);
4649
dest.writeInt(combOp);
4750
dest.writeInt(fgOp);
4851
dest.writeInt(bgOp);

tests/FrameworkPerf/src/com/android/frameworkperf/TestService.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ enum BackgroundMode {
224224
public class TestRunner {
225225
Handler mHandler;
226226
long mMaxRunTime;
227+
long mMaxOps;
227228
Op mForegroundOp;
228229
Op mBackgroundOp;
229230
Runnable mDoneCallback;
@@ -277,6 +278,7 @@ public String getBackgroundLongName() {
277278
public void run(Handler handler, TestArgs args, Runnable doneCallback) {
278279
mHandler = handler;
279280
mMaxRunTime = args.maxTime;
281+
mMaxOps = args.maxOps;
280282
if (args.combOp >= 0) {
281283
mForegroundOp = mOpPairs[args.combOp];
282284
mBackgroundOp = mOpPairs[args.combOp+1];
@@ -352,9 +354,18 @@ private boolean evalRepeat(boolean bgRunning, boolean fgRunning) {
352354
if (!mBackgroundRunning && !mForegroundRunning) {
353355
return false;
354356
}
355-
long now = SystemClock.uptimeMillis();
356-
if (now > (mStartTime+mMaxRunTime)) {
357-
return false;
357+
if (mMaxOps > 0) {
358+
// iteration-limited case
359+
if (mForegroundOps >= mMaxOps) {
360+
return false;
361+
}
362+
mForegroundOps++;
363+
} else {
364+
// time-limited case
365+
long now = SystemClock.uptimeMillis();
366+
if (now > (mStartTime+mMaxRunTime)) {
367+
return false;
368+
}
358369
}
359370
return true;
360371
}

0 commit comments

Comments
 (0)