From 0d7d4d4f306c5102c73fa5ee88069a64ecd2b70d Mon Sep 17 00:00:00 2001 From: Yao Chen Date: Thu, 21 Dec 2017 13:00:59 -0800 Subject: Modify Loadtest app to be able to exclude certain metric types. Test: manual Change-Id: Iba025e4d6cd7c15a231550d382768aa7661ccc86 --- .../loadtest/res/layout/activity_loadtest.xml | 43 +++++++++++- cmds/statsd/tools/loadtest/res/values/strings.xml | 5 ++ .../com/android/statsd/loadtest/ConfigFactory.java | 44 +++++++----- .../android/statsd/loadtest/LoadtestActivity.java | 79 +++++++++++++++++++++- 4 files changed, 153 insertions(+), 18 deletions(-) diff --git a/cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml b/cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml index 2a254df2302a..f10b69dc3e69 100644 --- a/cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml +++ b/cmds/statsd/tools/loadtest/res/layout/activity_loadtest.xml @@ -137,13 +137,54 @@ android:text="@integer/duration_default" android:textSize="30dp"/> - + + + + + + + + + + diff --git a/cmds/statsd/tools/loadtest/res/values/strings.xml b/cmds/statsd/tools/loadtest/res/values/strings.xml index 522337ee656d..d0f77c65f660 100644 --- a/cmds/statsd/tools/loadtest/res/values/strings.xml +++ b/cmds/statsd/tools/loadtest/res/values/strings.xml @@ -26,5 +26,10 @@ test duration (mins):   Start   Stop  + count + duration + event + value + gauge 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 0d890fbb6e56..5fc4cf52f850 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 @@ -83,7 +83,9 @@ public class ConfigFactory { * @param placebo If true, only return an empty config * @return The serialized config */ - public byte[] getConfig(int replication, long bucketMillis, boolean placebo) { + public byte[] getConfig(int replication, long bucketMillis, boolean placebo, boolean includeCount, + boolean includeDuration, boolean includeEvent, boolean includeValue, + boolean includeGauge) { StatsdConfig.Builder config = StatsdConfig.newBuilder() .setName(CONFIG_NAME); if (placebo) { @@ -92,25 +94,35 @@ public class ConfigFactory { int numMetrics = 0; for (int i = 0; i < replication; i++) { // metrics - for (EventMetric metric : mTemplate.getEventMetricList()) { - addEventMetric(metric, i, config); - numMetrics++; + if (includeEvent) { + for (EventMetric metric : mTemplate.getEventMetricList()) { + addEventMetric(metric, i, config); + numMetrics++; + } } - for (CountMetric metric : mTemplate.getCountMetricList()) { - addCountMetric(metric, i, bucketMillis, config); - numMetrics++; + if (includeCount) { + for (CountMetric metric : mTemplate.getCountMetricList()) { + addCountMetric(metric, i, bucketMillis, config); + numMetrics++; + } } - for (DurationMetric metric : mTemplate.getDurationMetricList()) { - addDurationMetric(metric, i, bucketMillis, config); - numMetrics++; + if (includeDuration) { + for (DurationMetric metric : mTemplate.getDurationMetricList()) { + addDurationMetric(metric, i, bucketMillis, config); + numMetrics++; + } } - for (GaugeMetric metric : mTemplate.getGaugeMetricList()) { - addGaugeMetric(metric, i, bucketMillis, config); - numMetrics++; + if (includeGauge) { + for (GaugeMetric metric : mTemplate.getGaugeMetricList()) { + addGaugeMetric(metric, i, bucketMillis, config); + numMetrics++; + } } - for (ValueMetric metric : mTemplate.getValueMetricList()) { - addValueMetric(metric, i, bucketMillis, config); - numMetrics++; + if (includeValue) { + for (ValueMetric metric : mTemplate.getValueMetricList()) { + addValueMetric(metric, i, bucketMillis, config); + numMetrics++; + } } // predicates for (Predicate predicate : mTemplate.getPredicateList()) { 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 0a30ff8cf311..83f4b7bed558 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 @@ -110,6 +110,11 @@ public class LoadtestActivity extends Activity { private EditText mDurationText; private TextView mReportText; private CheckBox mPlaceboCheckBox; + private CheckBox mCountMetricCheckBox; + private CheckBox mDurationMetricCheckBox; + private CheckBox mEventMetricCheckBox; + private CheckBox mValueMetricCheckBox; + private CheckBox mGaugeMetricCheckBox; /** When the load test started. */ private long mStartedTimeMillis; @@ -129,6 +134,31 @@ public class LoadtestActivity extends Activity { */ private boolean mPlacebo; + /** + * Whether to include CountMetric in the config. + */ + private boolean mIncludeCountMetric; + + /** + * Whether to include DurationMetric in the config. + */ + private boolean mIncludeDurationMetric; + + /** + * Whether to include EventMetric in the config. + */ + private boolean mIncludeEventMetric; + + /** + * Whether to include ValueMetric in the config. + */ + private boolean mIncludeValueMetric; + + /** + * Whether to include GaugeMetric in the config. + */ + private boolean mIncludeGaugeMetric; + /** The burst size. */ private int mBurst; @@ -170,6 +200,7 @@ public class LoadtestActivity extends Activity { initPeriod(); initDuration(); initPlacebo(); + initMetricWhitelist(); // Hide the keyboard outside edit texts. findViewById(R.id.outside).setOnTouchListener(new View.OnTouchListener() { @@ -329,7 +360,9 @@ public class LoadtestActivity extends Activity { getData(); // Create a config and push it to statsd. - if (!setConfig(mFactory.getConfig(mReplication, mBucketMins * 60 * 1000, mPlacebo))) { + if (!setConfig(mFactory.getConfig(mReplication, mBucketMins * 60 * 1000, mPlacebo, + mIncludeCountMetric, mIncludeDurationMetric, mIncludeEventMetric, + mIncludeValueMetric, mIncludeGaugeMetric))) { return; } @@ -548,4 +581,48 @@ public class LoadtestActivity extends Activity { } }); } + + private void initMetricWhitelist() { + mCountMetricCheckBox = findViewById(R.id.include_count); + mCountMetricCheckBox.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mIncludeCountMetric = mCountMetricCheckBox.isChecked(); + } + }); + mDurationMetricCheckBox = findViewById(R.id.include_duration); + mDurationMetricCheckBox.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mIncludeDurationMetric = mDurationMetricCheckBox.isChecked(); + } + }); + mEventMetricCheckBox = findViewById(R.id.include_event); + mEventMetricCheckBox.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mIncludeEventMetric = mEventMetricCheckBox.isChecked(); + } + }); + mValueMetricCheckBox = findViewById(R.id.include_value); + mValueMetricCheckBox.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mIncludeValueMetric = mValueMetricCheckBox.isChecked(); + } + }); + mGaugeMetricCheckBox = findViewById(R.id.include_gauge); + mGaugeMetricCheckBox.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + mIncludeGaugeMetric = mGaugeMetricCheckBox.isChecked(); + } + }); + + mIncludeCountMetric = mCountMetricCheckBox.isChecked(); + mIncludeDurationMetric = mDurationMetricCheckBox.isChecked(); + mIncludeEventMetric = mEventMetricCheckBox.isChecked(); + mIncludeValueMetric = mValueMetricCheckBox.isChecked(); + mIncludeGaugeMetric = mGaugeMetricCheckBox.isChecked(); + } } -- cgit v1.2.3-59-g8ed1b