summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmds/statsd/src/guardrail/StatsdStats.h2
-rw-r--r--cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml20
-rw-r--r--cmds/statsd/tools/loadtest/res/layout/spinner_item.xml10
-rwxr-xr-xcmds/statsd/tools/loadtest/res/raw/loadtest_configbin3647 -> 2087 bytes
-rw-r--r--cmds/statsd/tools/loadtest/res/values/integers.xml1
-rw-r--r--cmds/statsd/tools/loadtest/res/values/strings.xml1
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/BatteryDataRecorder.java6
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ConfigFactory.java20
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/LoadtestActivity.java117
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/MemoryDataRecorder.java6
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfData.java21
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfDataRecorder.java34
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/StatsdStatsRecorder.java9
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ValidationRecorder.java11
14 files changed, 192 insertions, 66 deletions
diff --git a/cmds/statsd/src/guardrail/StatsdStats.h b/cmds/statsd/src/guardrail/StatsdStats.h
index 14f413205310..2f108239737f 100644
--- a/cmds/statsd/src/guardrail/StatsdStats.h
+++ b/cmds/statsd/src/guardrail/StatsdStats.h
@@ -260,4 +260,4 @@ private:
} // namespace statsd
} // namespace os
-} // namespace android \ No newline at end of file
+} // namespace android
diff --git a/cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml b/cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml
index f10b69dc3e69..857853e997ad 100644
--- a/cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml
+++ b/cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml
@@ -64,15 +64,11 @@
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/bucket_label" />
- <EditText
- android:id="@+id/bucket"
- android:inputType="number"
- android:layout_weight="1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:maxLength="3"
- android:text="@integer/bucket_default"
- android:textSize="30dp"/>
+ <Spinner
+ android:id="@+id/bucket_spinner"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:prompt="@string/bucket_label"/>
</LinearLayout>
<LinearLayout
@@ -145,6 +141,7 @@
android:checked="false" />
<LinearLayout
+ android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
@@ -166,11 +163,6 @@
android:layout_height="wrap_content"
android:text="@string/event"
android:checked="true"/>
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
<CheckBox
android:id="@+id/include_value"
android:layout_width="wrap_content"
diff --git a/cmds/statsd/tools/loadtest/res/layout/spinner_item.xml b/cmds/statsd/tools/loadtest/res/layout/spinner_item.xml
new file mode 100644
index 000000000000..b03da06f7a77
--- /dev/null
+++ b/cmds/statsd/tools/loadtest/res/layout/spinner_item.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<TextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="30dp"
+ android:gravity="left"
+ android:padding="5dip"
+ />
diff --git a/cmds/statsd/tools/loadtest/res/raw/loadtest_config b/cmds/statsd/tools/loadtest/res/raw/loadtest_config
index fbce0e870e57..24221908cbeb 100755
--- a/cmds/statsd/tools/loadtest/res/raw/loadtest_config
+++ b/cmds/statsd/tools/loadtest/res/raw/loadtest_config
Binary files differ
diff --git a/cmds/statsd/tools/loadtest/res/values/integers.xml b/cmds/statsd/tools/loadtest/res/values/integers.xml
index 76b56923bd84..c2407d3b85f2 100644
--- a/cmds/statsd/tools/loadtest/res/values/integers.xml
+++ b/cmds/statsd/tools/loadtest/res/values/integers.xml
@@ -17,7 +17,6 @@
*/
-->
<resources>
- <integer name="bucket_default">10</integer>
<integer name="burst_default">1</integer>
<integer name="period_default">2</integer>
<integer name="replication_default">1</integer>
diff --git a/cmds/statsd/tools/loadtest/res/values/strings.xml b/cmds/statsd/tools/loadtest/res/values/strings.xml
index d0f77c65f660..e8ae3f82a7e3 100644
--- a/cmds/statsd/tools/loadtest/res/values/strings.xml
+++ b/cmds/statsd/tools/loadtest/res/values/strings.xml
@@ -20,6 +20,7 @@
<string name="app_name">Statsd Loadtest</string>
<string name="bucket_label">bucket size (mins):&#160;</string>
<string name="burst_label">burst:&#160;</string>
+ <string name="bucket_default">FIVE_MINUTES</string>
<string name="placebo">placebo</string>
<string name="period_label">logging period (secs):&#160;</string>
<string name="replication_label">metric replication:&#160;</string>
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/BatteryDataRecorder.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/BatteryDataRecorder.java
index 709b28b298e0..bab0c1e3f540 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/BatteryDataRecorder.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/BatteryDataRecorder.java
@@ -28,8 +28,10 @@ public class BatteryDataRecorder extends PerfDataRecorder {
private static final String DUMP_FILENAME = TAG + "_dump.tmp";
public BatteryDataRecorder(boolean placebo, int replication, TimeUnit bucket, long periodSecs,
- int burst) {
- super(placebo, replication, bucket, periodSecs, burst);
+ int burst, boolean includeCountMetric, boolean includeDurationMetric,
+ boolean includeEventMetric, boolean includeValueMetric, boolean includeGaugeMetric) {
+ super(placebo, replication, bucket, periodSecs, burst, includeCountMetric,
+ includeDurationMetric, includeEventMetric, includeValueMetric, includeGaugeMetric);
}
@Override
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ConfigFactory.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ConfigFactory.java
index b492ea9c8f69..843b1e5f90ac 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ConfigFactory.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ConfigFactory.java
@@ -42,6 +42,16 @@ import java.util.List;
* Creates StatsdConfig protos for loadtesting.
*/
public class ConfigFactory {
+ public static class ConfigMetadata {
+ public final byte[] bytes;
+ public final int numMetrics;
+
+ public ConfigMetadata(byte[] bytes, int numMetrics) {
+ this.bytes = bytes;
+ this.numMetrics = numMetrics;
+ }
+ }
+
public static final long CONFIG_ID = 123456789;
private static final String TAG = "loadtest.ConfigFactory";
@@ -81,11 +91,11 @@ public class ConfigFactory {
* ones
* @param bucketMillis The bucket size, in milliseconds, for aggregate metrics
* @param placebo If true, only return an empty config
- * @return The serialized config
+ * @return The serialized config and the number of metrics.
*/
- public byte[] getConfig(int replication, TimeUnit bucket, boolean placebo, boolean includeCount,
- boolean includeDuration, boolean includeEvent, boolean includeValue,
- boolean includeGauge) {
+ public ConfigMetadata getConfig(int replication, TimeUnit bucket, boolean placebo,
+ boolean includeCount, boolean includeDuration, boolean includeEvent,
+ boolean includeValue, boolean includeGauge) {
StatsdConfig.Builder config = StatsdConfig.newBuilder()
.setId(CONFIG_ID);
if (placebo) {
@@ -137,7 +147,7 @@ public class ConfigFactory {
Log.d(TAG, "Loadtest config is : " + config.build());
Log.d(TAG, "Generated config has " + numMetrics + " metrics");
- return config.build().toByteArray();
+ return new ConfigMetadata(config.build().toByteArray(), numMetrics);
}
/**
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/LoadtestActivity.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/LoadtestActivity.java
index 056ac0cd3a8a..c81ac070b415 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/LoadtestActivity.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/LoadtestActivity.java
@@ -39,16 +39,22 @@ import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.view.MotionEvent;
import android.view.View.OnFocusChangeListener;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
+import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.android.os.StatsLog.ConfigMetricsReport;
import com.android.os.StatsLog.ConfigMetricsReportList;
import com.android.os.StatsLog.StatsdStatsReport;
import com.android.internal.os.StatsdConfigProto.TimeUnit;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* Runs a load test for statsd.
@@ -68,7 +74,7 @@ import java.util.List;
* <li> The 'burst' parameter controls how many atoms are pushed at the same time (per period).
* </ul>
*/
-public class LoadtestActivity extends Activity {
+public class LoadtestActivity extends Activity implements AdapterView.OnItemSelectedListener {
private static final String TAG = "StatsdLoadtest";
public static final String TYPE = "type";
@@ -76,6 +82,8 @@ public class LoadtestActivity extends Activity {
public static final String PERF_ALARM = "perf_alarm";
private static final String START = "start";
private static final String STOP = "stop";
+ private static final Map<String, TimeUnit> TIME_UNIT_MAP = initializeTimeUnitMap();
+ private static final List<String> TIME_UNIT_LABELS = initializeTimeUnitLabels();
public final static class PusherAlarmReceiver extends BroadcastReceiver {
@Override
@@ -95,6 +103,35 @@ public class LoadtestActivity extends Activity {
}
}
+ private static Map<String, TimeUnit> initializeTimeUnitMap() {
+ Map<String, TimeUnit> labels = new HashMap();
+ labels.put("1m", TimeUnit.ONE_MINUTE);
+ labels.put("5m", TimeUnit.FIVE_MINUTES);
+ labels.put("10m", TimeUnit.TEN_MINUTES);
+ labels.put("30m", TimeUnit.THIRTY_MINUTES);
+ labels.put("1h", TimeUnit.ONE_HOUR);
+ labels.put("3h", TimeUnit.THREE_HOURS);
+ labels.put("6h", TimeUnit.SIX_HOURS);
+ labels.put("12h", TimeUnit.TWELVE_HOURS);
+ labels.put("1d", TimeUnit.ONE_DAY);
+ labels.put("1s", TimeUnit.CTS);
+ return labels;
+ }
+ private static List<String> initializeTimeUnitLabels() {
+ List<String> labels = new ArrayList();
+ labels.add("1s");
+ labels.add("1m");
+ labels.add("5m");
+ labels.add("10m");
+ labels.add("30m");
+ labels.add("1h");
+ labels.add("3h");
+ labels.add("6h");
+ labels.add("12h");
+ labels.add("1d");
+ return labels;
+ }
+
private AlarmManager mAlarmMgr;
/** Used to periodically log atoms to logd. */
@@ -105,7 +142,7 @@ public class LoadtestActivity extends Activity {
private Button mStartStop;
private EditText mReplicationText;
- private EditText mBucketText;
+ private Spinner mBucketSpinner;
private EditText mPeriodText;
private EditText mBurstText;
private EditText mDurationText;
@@ -187,6 +224,9 @@ public class LoadtestActivity extends Activity {
/** For intra-minute periods. */
private final Handler mHandler = new Handler();
+ /** Number of metrics in the current config. */
+ private int mNumMetrics;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -311,6 +351,18 @@ public class LoadtestActivity extends Activity {
return null;
}
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+ String item = parent.getItemAtPosition(position).toString();
+
+ mBucket = TIME_UNIT_MAP.get(item);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> parent) {
+ // Another interface callback
+ }
+
private void onPerfAlarm() {
if (mPerfData != null) {
mPerfData.onAlarm(this);
@@ -318,7 +370,9 @@ public class LoadtestActivity extends Activity {
// Piggy-back on that alarm to show the elapsed time.
long elapsedTimeMins = (long) Math.floor(
(SystemClock.elapsedRealtime() - mStartedTimeMillis) / 60 / 1000);
- mReportText.setText("Loadtest in progress. Elapsed time = " + elapsedTimeMins + " min(s)");
+ mReportText.setText("Loadtest in progress.\n"
+ + "num metrics =" + mNumMetrics
+ + "\nElapsed time = " + elapsedTimeMins + " min(s)");
}
private void onAlarm() {
@@ -378,10 +432,12 @@ public class LoadtestActivity extends Activity {
scheduleNext();
// Start tracking performance.
- mPerfData = new PerfData(this, mPlacebo, mReplication, mBucket, mPeriodSecs, mBurst);
+ mPerfData = new PerfData(this, mPlacebo, mReplication, mBucket, mPeriodSecs, mBurst,
+ mIncludeCountMetric, mIncludeDurationMetric, mIncludeEventMetric, mIncludeValueMetric,
+ mIncludeGaugeMetric);
mPerfData.startRecording(this);
- mReportText.setText("Loadtest in progress.");
+ mReportText.setText("Loadtest in progress.\nnum metrics =" + mNumMetrics);
mStartedTimeMillis = SystemClock.elapsedRealtime();
updateStarted(true);
@@ -427,9 +483,16 @@ public class LoadtestActivity extends Activity {
mBurstText.setEnabled(!mPlacebo && !mStarted);
mReplicationText.setEnabled(!mPlacebo && !mStarted);
mPeriodText.setEnabled(!mStarted);
- mBucketText.setEnabled(!mPlacebo && !mStarted);
+ mBucketSpinner.setEnabled(!mPlacebo && !mStarted);
mDurationText.setEnabled(!mStarted);
mPlaceboCheckBox.setEnabled(!mStarted);
+
+ boolean enabled = !mStarted && !mPlaceboCheckBox.isChecked();
+ mCountMetricCheckBox.setEnabled(enabled);
+ mDurationMetricCheckBox.setEnabled(enabled);
+ mEventMetricCheckBox.setEnabled(enabled);
+ mValueMetricCheckBox.setEnabled(enabled);
+ mGaugeMetricCheckBox.setEnabled(enabled);
}
private boolean statsdRunning() {
@@ -463,10 +526,11 @@ public class LoadtestActivity extends Activity {
}
}
- private boolean setConfig(byte[] config) {
+ private boolean setConfig(ConfigFactory.ConfigMetadata configData) {
if (mStatsManager != null) {
if (mStatsManager.addConfiguration(ConfigFactory.CONFIG_ID,
- config, getPackageName(), LoadtestActivity.this.getClass().getName())) {
+ configData.bytes, getPackageName(), LoadtestActivity.this.getClass().getName())) {
+ mNumMetrics = configData.numMetrics;
Log.d(TAG, "Config pushed to statsd");
return true;
} else {
@@ -484,10 +548,6 @@ public class LoadtestActivity extends Activity {
mPeriodSecs = periodSecs;
}
- private synchronized void setBucket(TimeUnit bucket) {
- mBucket = bucket;
- }
-
private synchronized void setBurst(int burst) {
mBurst = burst;
}
@@ -496,12 +556,9 @@ public class LoadtestActivity extends Activity {
mDurationMins = durationMins;
}
- private synchronized void setPlacebo(boolean placebo) {
- mPlacebo = placebo;
- updateControlsEnabled();
- }
private void handleFocus(EditText editText) {
+ /*
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
@@ -510,6 +567,7 @@ public class LoadtestActivity extends Activity {
}
}
});
+ */
}
private void initBurst() {
@@ -537,15 +595,23 @@ public class LoadtestActivity extends Activity {
}
private void initBucket() {
- mBucket = TimeUnit.valueOf(getResources().getInteger(R.integer.bucket_default));
- mBucketText = (EditText) findViewById(R.id.bucket);
- mBucketText.addTextChangedListener(new NumericalWatcher(mBucketText, 1, 9) {
- @Override
- public void onNewValue(int newValue) {
- setBucket(TimeUnit.valueOf(newValue));
+ String defaultValue = getResources().getString(R.string.bucket_default);
+ mBucket = TimeUnit.valueOf(defaultValue);
+ mBucketSpinner = (Spinner) findViewById(R.id.bucket_spinner);
+
+ ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
+ this, R.layout.spinner_item, TIME_UNIT_LABELS);
+
+ mBucketSpinner.setAdapter(dataAdapter);
+ mBucketSpinner.setOnItemSelectedListener(this);
+
+ for (String label : TIME_UNIT_MAP.keySet()) {
+ Log.d(TAG, "EVALUATE " + label + " VS " + defaultValue);
+ if (defaultValue.equals(TIME_UNIT_MAP.get(label).toString())) {
+ Log.d(TAG, " FOUND IT");
+ mBucketSpinner.setSelection(dataAdapter.getPosition(label));
}
- });
- handleFocus(mBucketText);
+ }
}
private void initPeriod() {
@@ -578,7 +644,8 @@ public class LoadtestActivity extends Activity {
mPlaceboCheckBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- setPlacebo(((CheckBox) view).isChecked());
+ mPlacebo = mPlaceboCheckBox.isChecked();
+ updateControlsEnabled();
}
});
}
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/MemoryDataRecorder.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/MemoryDataRecorder.java
index 66bcbffdbcb5..af7bd4d35966 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/MemoryDataRecorder.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/MemoryDataRecorder.java
@@ -28,8 +28,10 @@ public class MemoryDataRecorder extends PerfDataRecorder {
private StringBuilder mSb;
public MemoryDataRecorder(boolean placebo, int replication, TimeUnit bucket, long periodSecs,
- int burst) {
- super(placebo, replication, bucket, periodSecs, burst);
+ int burst, boolean includeCountMetric, boolean includeDurationMetric,
+ boolean includeEventMetric, boolean includeValueMetric, boolean includeGaugeMetric) {
+ super(placebo, replication, bucket, periodSecs, burst, includeCountMetric,
+ includeDurationMetric, includeEventMetric, includeValueMetric, includeGaugeMetric);
}
@Override
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfData.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfData.java
index 4b4e36873a5c..7a01adedfaa4 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfData.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfData.java
@@ -54,15 +54,24 @@ public class PerfData extends PerfDataRecorder {
private final Set<PerfDataRecorder> mRecorders;
public PerfData(LoadtestActivity loadtestActivity, boolean placebo, int replication,
- TimeUnit bucket, long periodSecs, int burst) {
- super(placebo, replication, bucket, periodSecs, burst);
+ TimeUnit bucket, long periodSecs, int burst, boolean includeCountMetric,
+ boolean includeDurationMetric, boolean includeEventMetric, boolean includeValueMetric,
+ boolean includeGaugeMetric) {
+ super(placebo, replication, bucket, periodSecs, burst, includeCountMetric,
+ includeDurationMetric, includeEventMetric, includeValueMetric, includeGaugeMetric);
mRecorders = new HashSet();
- mRecorders.add(new BatteryDataRecorder(placebo, replication, bucket, periodSecs, burst));
- mRecorders.add(new MemoryDataRecorder(placebo, replication, bucket, periodSecs, burst));
+ mRecorders.add(new BatteryDataRecorder(placebo, replication, bucket, periodSecs, burst,
+ includeCountMetric, includeDurationMetric, includeEventMetric, includeValueMetric,
+ includeGaugeMetric));
+ mRecorders.add(new MemoryDataRecorder(placebo, replication, bucket, periodSecs, burst,
+ includeCountMetric, includeDurationMetric, includeEventMetric, includeValueMetric,
+ includeGaugeMetric));
mRecorders.add(new StatsdStatsRecorder(loadtestActivity, placebo, replication, bucket,
- periodSecs, burst));
+ periodSecs, burst, includeCountMetric, includeDurationMetric, includeEventMetric,
+ includeValueMetric, includeGaugeMetric));
mRecorders.add(new ValidationRecorder(loadtestActivity, placebo, replication, bucket,
- periodSecs, burst));
+ periodSecs, burst, includeCountMetric, includeDurationMetric, includeEventMetric,
+ includeValueMetric, includeGaugeMetric));
mAlarmMgr = (AlarmManager) loadtestActivity.getSystemService(Context.ALARM_SERVICE);
}
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfDataRecorder.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfDataRecorder.java
index fd182adfa869..8613ac1c4796 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfDataRecorder.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/PerfDataRecorder.java
@@ -40,9 +40,12 @@ public abstract class PerfDataRecorder {
protected final String mColumnSuffix;
protected PerfDataRecorder(boolean placebo, int replication, TimeUnit bucket, long periodSecs,
- int burst) {
+ int burst, boolean includeCountMetric, boolean includeDurationMetric,
+ boolean includeEventMetric, boolean includeValueMetric, boolean includeGaugeMetric) {
mTimeAsString = new SimpleDateFormat("YYYY_MM_dd_HH_mm_ss").format(new Date());
- mColumnSuffix = getColumnSuffix(placebo, replication, bucket, periodSecs, burst);
+ mColumnSuffix = getColumnSuffix(placebo, replication, bucket, periodSecs, burst,
+ includeCountMetric, includeDurationMetric, includeEventMetric, includeValueMetric,
+ includeGaugeMetric);
}
/** Starts recording performance data. */
@@ -122,14 +125,35 @@ public abstract class PerfDataRecorder {
/** Gets the suffix to use in the column name for perf data. */
private String getColumnSuffix(boolean placebo, int replication, TimeUnit bucket,
- long periodSecs, int burst) {
+ long periodSecs, int burst, boolean includeCountMetric, boolean includeDurationMetric,
+ boolean includeEventMetric, boolean includeValueMetric, boolean includeGaugeMetric) {
if (placebo) {
return "_placebo_p=" + periodSecs;
}
- return "_r=" + replication + "_bkt=" + bucket + "_p=" + periodSecs + "_bst=" + burst;
+ StringBuilder sb = new StringBuilder()
+ .append("_r=" + replication)
+ .append("_bkt=" + bucket)
+ .append("_p=" + periodSecs)
+ .append("_bst=" + burst)
+ .append("_m=");
+ if (includeCountMetric) {
+ sb.append("c");
+ }
+ if (includeEventMetric) {
+ sb.append("e");
+ }
+ if (includeDurationMetric) {
+ sb.append("d");
+ }
+ if (includeGaugeMetric) {
+ sb.append("g");
+ }
+ if (includeValueMetric) {
+ sb.append("v");
+ }
+ return sb.toString();
}
-
private File getStorageDir() {
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOCUMENTS), "loadtest/" + mTimeAsString);
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/StatsdStatsRecorder.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/StatsdStatsRecorder.java
index 1e30fdfbc656..e63150f95316 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/StatsdStatsRecorder.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/StatsdStatsRecorder.java
@@ -28,8 +28,11 @@ public class StatsdStatsRecorder extends PerfDataRecorder {
private final LoadtestActivity mLoadtestActivity;
public StatsdStatsRecorder(LoadtestActivity loadtestActivity, boolean placebo, int replication,
- TimeUnit bucket, long periodSecs, int burst) {
- super(placebo, replication, bucket, periodSecs, burst);
+ TimeUnit bucket, long periodSecs, int burst, boolean includeCountMetric,
+ boolean includeDurationMetric, boolean includeEventMetric, boolean includeValueMetric,
+ boolean includeGaugeMetric) {
+ super(placebo, replication, bucket, periodSecs, burst, includeCountMetric,
+ includeDurationMetric, includeEventMetric, includeValueMetric, includeGaugeMetric);
mLoadtestActivity = loadtestActivity;
}
@@ -56,7 +59,7 @@ public class StatsdStatsRecorder extends PerfDataRecorder {
.append(configStats.getConditionCount() + "\n")
.append("matcher_count,")
.append(configStats.getMatcherCount() + "\n");
- writeData(context, "statsdstats_", "", sb);
+ writeData(context, "statsdstats_", "stat,value", sb);
}
}
}
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ValidationRecorder.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ValidationRecorder.java
index 5d26be35aa15..d9f0ca9d2461 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ValidationRecorder.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/ValidationRecorder.java
@@ -34,8 +34,11 @@ public class ValidationRecorder extends PerfDataRecorder {
private final LoadtestActivity mLoadtestActivity;
public ValidationRecorder(LoadtestActivity loadtestActivity, boolean placebo, int replication,
- TimeUnit bucket, long periodSecs, int burst) {
- super(placebo, replication, bucket, periodSecs, burst);
+ TimeUnit bucket, long periodSecs, int burst, boolean includeCountMetric,
+ boolean includeDurationMetric, boolean includeEventMetric, boolean includeValueMetric,
+ boolean includeGaugeMetric) {
+ super(placebo, replication, bucket, periodSecs, burst, includeCountMetric,
+ includeDurationMetric, includeEventMetric, includeValueMetric, includeGaugeMetric);
mLoadtestActivity = loadtestActivity;
}
@@ -55,6 +58,9 @@ public class ValidationRecorder extends PerfDataRecorder {
}
private void validateData() {
+ // The code below is commented out because it calls getData, which has the side-effect
+ // of clearing statsd's data buffer.
+ /*
List<ConfigMetricsReport> reports = mLoadtestActivity.getData();
if (reports != null) {
Log.d(TAG, "GOT DATA");
@@ -66,6 +72,7 @@ public class ValidationRecorder extends PerfDataRecorder {
}
}
}
+ */
}
private void validateEventBatteryLevelChanges(StatsLogReport logReport) {