summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-01-18 11:19:24 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-01-18 11:19:24 +0000
commiteb3442cf8ab6b2548e9503f29de34c441eb1b0b2 (patch)
tree4200a66e10123ec626dc522baef96c7883e34299
parent9c1d6baba7367e1f867663c338871f0ae08e0742 (diff)
parent468ff04fd4cb43a384a3d4948cccd4438be7202a (diff)
Merge "Proto change for dimension from condition."
-rw-r--r--cmds/statsd/src/config/ConfigManager.cpp12
-rw-r--r--cmds/statsd/src/metrics/CountMetricProducer.cpp11
-rw-r--r--cmds/statsd/src/metrics/DurationMetricProducer.cpp11
-rw-r--r--cmds/statsd/src/metrics/GaugeMetricProducer.cpp9
-rw-r--r--cmds/statsd/src/metrics/ValueMetricProducer.cpp11
-rw-r--r--cmds/statsd/src/metrics/metrics_manager_util.cpp15
-rw-r--r--cmds/statsd/src/stats_log.proto16
-rw-r--r--cmds/statsd/src/statsd_config.proto32
-rw-r--r--cmds/statsd/tests/MetricsManager_test.cpp10
-rw-r--r--cmds/statsd/tests/e2e/Attribution_e2e_test.cpp14
-rw-r--r--cmds/statsd/tests/e2e/GaugeMetric_e2e_test.cpp19
-rw-r--r--cmds/statsd/tests/e2e/MetricConditionLink_e2e_test.cpp19
-rw-r--r--cmds/statsd/tests/e2e/WakelockDuration_e2e_test.cpp9
-rw-r--r--cmds/statsd/tests/statsd_test_util.h2
-rw-r--r--cmds/statsd/tools/dogfood/src/com/android/statsd/dogfood/DisplayProtoUtils.java18
-rw-r--r--cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/DisplayProtoUtils.java18
16 files changed, 137 insertions, 89 deletions
diff --git a/cmds/statsd/src/config/ConfigManager.cpp b/cmds/statsd/src/config/ConfigManager.cpp
index 554ff8a85094..1481921d013a 100644
--- a/cmds/statsd/src/config/ConfigManager.cpp
+++ b/cmds/statsd/src/config/ConfigManager.cpp
@@ -255,7 +255,7 @@ StatsdConfig build_fake_config() {
metric->set_id(2); // "METRIC_2"
metric->set_what(104);
metric->set_bucket(ONE_MINUTE);
- FieldMatcher* dimensions = metric->mutable_dimensions();
+ FieldMatcher* dimensions = metric->mutable_dimensions_in_what();
dimensions->set_field(UID_PROCESS_STATE_TAG_ID);
dimensions->add_child()->set_field(UID_PROCESS_STATE_UID_KEY);
@@ -278,7 +278,7 @@ StatsdConfig build_fake_config() {
metric->set_what(104);
metric->set_bucket(ONE_MINUTE);
- dimensions = metric->mutable_dimensions();
+ dimensions = metric->mutable_dimensions_in_what();
dimensions->set_field(UID_PROCESS_STATE_TAG_ID);
dimensions->add_child()->set_field(UID_PROCESS_STATE_UID_KEY);
metric->set_condition(202);
@@ -288,7 +288,7 @@ StatsdConfig build_fake_config() {
metric->set_id(4);
metric->set_what(107);
metric->set_bucket(ONE_MINUTE);
- dimensions = metric->mutable_dimensions();
+ dimensions = metric->mutable_dimensions_in_what();
dimensions->set_field(WAKE_LOCK_TAG_ID);
dimensions->add_child()->set_field(WAKE_LOCK_UID_KEY_ID);
@@ -306,7 +306,7 @@ StatsdConfig build_fake_config() {
durationMetric->set_id(5);
durationMetric->set_bucket(ONE_MINUTE);
durationMetric->set_aggregation_type(DurationMetric_AggregationType_SUM);
- dimensions = durationMetric->mutable_dimensions();
+ dimensions = durationMetric->mutable_dimensions_in_what();
dimensions->set_field(WAKE_LOCK_TAG_ID);
dimensions->add_child()->set_field(WAKE_LOCK_UID_KEY_ID);
durationMetric->set_what(205);
@@ -323,7 +323,7 @@ StatsdConfig build_fake_config() {
durationMetric->set_id(6);
durationMetric->set_bucket(ONE_MINUTE);
durationMetric->set_aggregation_type(DurationMetric_AggregationType_MAX_SPARSE);
- dimensions = durationMetric->mutable_dimensions();
+ dimensions = durationMetric->mutable_dimensions_in_what();
dimensions->set_field(WAKE_LOCK_TAG_ID);
dimensions->add_child()->set_field(WAKE_LOCK_UID_KEY_ID);
durationMetric->set_what(205);
@@ -376,7 +376,7 @@ StatsdConfig build_fake_config() {
valueMetric->mutable_value_field()->set_field(KERNEL_WAKELOCK_TAG_ID);
valueMetric->mutable_value_field()->add_child()->set_field(KERNEL_WAKELOCK_COUNT_KEY);
valueMetric->set_condition(201);
- dimensions = valueMetric->mutable_dimensions();
+ dimensions = valueMetric->mutable_dimensions_in_what();
dimensions->set_field(KERNEL_WAKELOCK_TAG_ID);
dimensions->add_child()->set_field(KERNEL_WAKELOCK_NAME_KEY);
// This is for testing easier. We should never set bucket size this small.
diff --git a/cmds/statsd/src/metrics/CountMetricProducer.cpp b/cmds/statsd/src/metrics/CountMetricProducer.cpp
index 3e98098ad62a..ef272103a1b6 100644
--- a/cmds/statsd/src/metrics/CountMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/CountMetricProducer.cpp
@@ -50,8 +50,9 @@ const int FIELD_ID_COUNT_METRICS = 5;
// for CountMetricDataWrapper
const int FIELD_ID_DATA = 1;
// for CountMetricData
-const int FIELD_ID_DIMENSION = 1;
-const int FIELD_ID_BUCKET_INFO = 2;
+const int FIELD_ID_DIMENSION_IN_WHAT = 1;
+const int FIELD_ID_DIMENSION_IN_CONDITION = 2;
+const int FIELD_ID_BUCKET_INFO = 3;
// for CountBucketInfo
const int FIELD_ID_START_BUCKET_NANOS = 1;
const int FIELD_ID_END_BUCKET_NANOS = 2;
@@ -70,7 +71,7 @@ CountMetricProducer::CountMetricProducer(const ConfigKey& key, const CountMetric
}
// TODO: use UidMap if uid->pkg_name is required
- mDimensions = metric.dimensions();
+ mDimensions = metric.dimensions_in_what();
if (metric.links().size() > 0) {
mConditionLinks.insert(mConditionLinks.begin(), metric.links().begin(),
@@ -98,7 +99,7 @@ void CountMetricProducer::onDumpReportLocked(const uint64_t dumpTimeNs, StatsLog
auto count_metrics = report->mutable_count_metrics();
for (const auto& counter : mPastBuckets) {
CountMetricData* metricData = count_metrics->add_data();
- *metricData->mutable_dimension() = counter.first.getDimensionsValue();
+ *metricData->mutable_dimensions_in_what() = counter.first.getDimensionsValue();
for (const auto& bucket : counter.second) {
CountBucketInfo* bucketInfo = metricData->add_bucket_info();
bucketInfo->set_start_bucket_nanos(bucket.mBucketStartNs);
@@ -127,7 +128,7 @@ void CountMetricProducer::onDumpReportLocked(const uint64_t dumpTimeNs,
// First fill dimension.
long long dimensionToken = protoOutput->start(
- FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED | FIELD_ID_DIMENSION);
+ FIELD_TYPE_MESSAGE | FIELD_ID_DIMENSION_IN_WHAT);
writeDimensionsValueProtoToStream(hashableKey.getDimensionsValue(), protoOutput);
protoOutput->end(dimensionToken);
diff --git a/cmds/statsd/src/metrics/DurationMetricProducer.cpp b/cmds/statsd/src/metrics/DurationMetricProducer.cpp
index b54629780318..58dd46400a9f 100644
--- a/cmds/statsd/src/metrics/DurationMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/DurationMetricProducer.cpp
@@ -49,8 +49,9 @@ const int FIELD_ID_DURATION_METRICS = 6;
// for DurationMetricDataWrapper
const int FIELD_ID_DATA = 1;
// for DurationMetricData
-const int FIELD_ID_DIMENSION = 1;
-const int FIELD_ID_BUCKET_INFO = 2;
+const int FIELD_ID_DIMENSION_IN_WHAT = 1;
+const int FIELD_ID_DIMENSION_IN_CONDITION = 2;
+const int FIELD_ID_BUCKET_INFO = 3;
// for DurationBucketInfo
const int FIELD_ID_START_BUCKET_NANOS = 1;
const int FIELD_ID_END_BUCKET_NANOS = 2;
@@ -80,7 +81,7 @@ DurationMetricProducer::DurationMetricProducer(const ConfigKey& key, const Durat
}
// TODO: use UidMap if uid->pkg_name is required
- mDimensions = metric.dimensions();
+ mDimensions = metric.dimensions_in_what();
if (metric.links().size() > 0) {
mConditionLinks.insert(mConditionLinks.begin(), metric.links().begin(),
@@ -154,7 +155,7 @@ void DurationMetricProducer::onDumpReportLocked(const uint64_t dumpTimeNs, Stats
auto duration_metrics = report->mutable_duration_metrics();
for (const auto& pair : mPastBuckets) {
DurationMetricData* metricData = duration_metrics->add_data();
- *metricData->mutable_dimension() = pair.first.getDimensionsValue();
+ *metricData->mutable_dimensions_in_what() = pair.first.getDimensionsValue();
for (const auto& bucket : pair.second) {
auto bucketInfo = metricData->add_bucket_info();
bucketInfo->set_start_bucket_nanos(bucket.mBucketStartNs);
@@ -183,7 +184,7 @@ void DurationMetricProducer::onDumpReportLocked(const uint64_t dumpTimeNs,
// First fill dimension.
long long dimensionToken = protoOutput->start(
- FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED | FIELD_ID_DIMENSION);
+ FIELD_TYPE_MESSAGE | FIELD_ID_DIMENSION_IN_WHAT);
writeDimensionsValueProtoToStream(hashableKey.getDimensionsValue(), protoOutput);
protoOutput->end(dimensionToken);
diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
index ae47bd898cf9..17305e3857b6 100644
--- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
@@ -51,8 +51,9 @@ const int FIELD_ID_GAUGE_METRICS = 8;
// for GaugeMetricDataWrapper
const int FIELD_ID_DATA = 1;
// for GaugeMetricData
-const int FIELD_ID_DIMENSION = 1;
-const int FIELD_ID_BUCKET_INFO = 2;
+const int FIELD_ID_DIMENSION_IN_WHAT = 1;
+const int FIELD_ID_DIMENSION_IN_CONDITION = 2;
+const int FIELD_ID_BUCKET_INFO = 3;
// for GaugeBucketInfo
const int FIELD_ID_START_BUCKET_NANOS = 1;
const int FIELD_ID_END_BUCKET_NANOS = 2;
@@ -79,7 +80,7 @@ GaugeMetricProducer::GaugeMetricProducer(const ConfigKey& key, const GaugeMetric
mFieldFilter = metric.gauge_fields_filter();
// TODO: use UidMap if uid->pkg_name is required
- mDimensions = metric.dimensions();
+ mDimensions = metric.dimensions_in_what();
if (metric.links().size() > 0) {
mConditionLinks.insert(mConditionLinks.begin(), metric.links().begin(),
@@ -138,7 +139,7 @@ void GaugeMetricProducer::onDumpReportLocked(const uint64_t dumpTimeNs,
// First fill dimension.
long long dimensionToken = protoOutput->start(
- FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED | FIELD_ID_DIMENSION);
+ FIELD_TYPE_MESSAGE | FIELD_ID_DIMENSION_IN_WHAT);
writeDimensionsValueProtoToStream(hashableKey.getDimensionsValue(), protoOutput);
protoOutput->end(dimensionToken);
diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.cpp b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
index 74bd6f97d535..c7550f7d4711 100644
--- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
@@ -54,8 +54,9 @@ const int FIELD_ID_VALUE_METRICS = 7;
// for ValueMetricDataWrapper
const int FIELD_ID_DATA = 1;
// for ValueMetricData
-const int FIELD_ID_DIMENSION = 1;
-const int FIELD_ID_BUCKET_INFO = 2;
+const int FIELD_ID_DIMENSION_IN_WHAT = 1;
+const int FIELD_ID_DIMENSION_IN_CONDITION = 2;
+const int FIELD_ID_BUCKET_INFO = 3;
// for ValueBucketInfo
const int FIELD_ID_START_BUCKET_NANOS = 1;
const int FIELD_ID_END_BUCKET_NANOS = 2;
@@ -80,7 +81,7 @@ ValueMetricProducer::ValueMetricProducer(const ConfigKey& key, const ValueMetric
}
mBucketSizeNs = bucketSizeMills * 1000000;
- mDimensions = metric.dimensions();
+ mDimensions = metric.dimensions_in_what();
if (metric.links().size() > 0) {
mConditionLinks.insert(mConditionLinks.begin(), metric.links().begin(),
@@ -123,7 +124,7 @@ void ValueMetricProducer::onDumpReportLocked(const uint64_t dumpTimeNs, StatsLog
auto value_metrics = report->mutable_value_metrics();
for (const auto& pair : mPastBuckets) {
ValueMetricData* metricData = value_metrics->add_data();
- *metricData->mutable_dimension() = pair.first.getDimensionsValue();
+ *metricData->mutable_dimensions_in_what() = pair.first.getDimensionsValue();
for (const auto& bucket : pair.second) {
ValueBucketInfo* bucketInfo = metricData->add_bucket_info();
bucketInfo->set_start_bucket_nanos(bucket.mBucketStartNs);
@@ -149,7 +150,7 @@ void ValueMetricProducer::onDumpReportLocked(const uint64_t dumpTimeNs,
// First fill dimension.
long long dimensionToken = protoOutput->start(
- FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED | FIELD_ID_DIMENSION);
+ FIELD_TYPE_MESSAGE | FIELD_ID_DIMENSION_IN_WHAT);
writeDimensionsValueProtoToStream(hashableKey.getDimensionsValue(), protoOutput);
protoOutput->end(dimensionToken);
diff --git a/cmds/statsd/src/metrics/metrics_manager_util.cpp b/cmds/statsd/src/metrics/metrics_manager_util.cpp
index bc887ac0ba8f..a0173ee9922f 100644
--- a/cmds/statsd/src/metrics/metrics_manager_util.cpp
+++ b/cmds/statsd/src/metrics/metrics_manager_util.cpp
@@ -227,7 +227,8 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const long ti
int metricIndex = allMetricProducers.size();
metricMap.insert({metric.id(), metricIndex});
int trackerIndex;
- if (!handleMetricWithLogTrackers(metric.what(), metricIndex, metric.has_dimensions(),
+ if (!handleMetricWithLogTrackers(metric.what(), metricIndex,
+ metric.has_dimensions_in_what(),
allAtomMatchers, logTrackerMap, trackerToMetricMap,
trackerIndex)) {
return false;
@@ -279,7 +280,7 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const long ti
int trackerIndices[3] = {-1, -1, -1};
if (!simplePredicate.has_start() ||
!handleMetricWithLogTrackers(simplePredicate.start(), metricIndex,
- metric.has_dimensions(), allAtomMatchers,
+ metric.has_dimensions_in_what(), allAtomMatchers,
logTrackerMap, trackerToMetricMap, trackerIndices[0])) {
ALOGE("Duration metrics must specify a valid the start event matcher");
return false;
@@ -287,14 +288,14 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const long ti
if (simplePredicate.has_stop() &&
!handleMetricWithLogTrackers(simplePredicate.stop(), metricIndex,
- metric.has_dimensions(), allAtomMatchers,
+ metric.has_dimensions_in_what(), allAtomMatchers,
logTrackerMap, trackerToMetricMap, trackerIndices[1])) {
return false;
}
if (simplePredicate.has_stop_all() &&
!handleMetricWithLogTrackers(simplePredicate.stop_all(), metricIndex,
- metric.has_dimensions(), allAtomMatchers,
+ metric.has_dimensions_in_what(), allAtomMatchers,
logTrackerMap, trackerToMetricMap, trackerIndices[2])) {
return false;
}
@@ -371,7 +372,8 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const long ti
int metricIndex = allMetricProducers.size();
metricMap.insert({metric.id(), metricIndex});
int trackerIndex;
- if (!handleMetricWithLogTrackers(metric.what(), metricIndex, metric.has_dimensions(),
+ if (!handleMetricWithLogTrackers(metric.what(), metricIndex,
+ metric.has_dimensions_in_what(),
allAtomMatchers, logTrackerMap, trackerToMetricMap,
trackerIndex)) {
return false;
@@ -429,7 +431,8 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const long ti
int metricIndex = allMetricProducers.size();
metricMap.insert({metric.id(), metricIndex});
int trackerIndex;
- if (!handleMetricWithLogTrackers(metric.what(), metricIndex, metric.has_dimensions(),
+ if (!handleMetricWithLogTrackers(metric.what(), metricIndex,
+ metric.has_dimensions_in_what(),
allAtomMatchers, logTrackerMap, trackerToMetricMap,
trackerIndex)) {
return false;
diff --git a/cmds/statsd/src/stats_log.proto b/cmds/statsd/src/stats_log.proto
index 2596a5f4fdc4..393f795a97fe 100644
--- a/cmds/statsd/src/stats_log.proto
+++ b/cmds/statsd/src/stats_log.proto
@@ -56,7 +56,9 @@ message CountBucketInfo {
}
message CountMetricData {
- optional DimensionsValue dimension = 1;
+ optional DimensionsValue dimensions_in_what = 1;
+
+ optional DimensionsValue dimensions_in_condition = 3;
repeated CountBucketInfo bucket_info = 2;
}
@@ -70,7 +72,9 @@ message DurationBucketInfo {
}
message DurationMetricData {
- optional DimensionsValue dimension = 1;
+ optional DimensionsValue dimensions_in_what = 1;
+
+ optional DimensionsValue dimensions_in_condition = 3;
repeated DurationBucketInfo bucket_info = 2;
}
@@ -84,7 +88,9 @@ message ValueBucketInfo {
}
message ValueMetricData {
- optional DimensionsValue dimension = 1;
+ optional DimensionsValue dimensions_in_what = 1;
+
+ optional DimensionsValue dimensions_in_condition = 3;
repeated ValueBucketInfo bucket_info = 2;
}
@@ -98,7 +104,9 @@ message GaugeBucketInfo {
}
message GaugeMetricData {
- optional DimensionsValue dimension = 1;
+ optional DimensionsValue dimensions_in_what = 1;
+
+ optional DimensionsValue dimensions_in_condition = 3;
repeated GaugeBucketInfo bucket_info = 2;
}
diff --git a/cmds/statsd/src/statsd_config.proto b/cmds/statsd/src/statsd_config.proto
index d45a6b038ccb..ae8a835f0d12 100644
--- a/cmds/statsd/src/statsd_config.proto
+++ b/cmds/statsd/src/statsd_config.proto
@@ -178,11 +178,13 @@ message CountMetric {
optional int64 condition = 3;
- optional FieldMatcher dimensions = 4;
+ optional FieldMatcher dimensions_in_what = 4;
- optional TimeUnit bucket = 5;
+ optional FieldMatcher dimensions_in_condition = 5;
- repeated MetricConditionLink links = 6;
+ optional TimeUnit bucket = 6;
+
+ repeated MetricConditionLink links = 7;
}
message DurationMetric {
@@ -201,9 +203,11 @@ message DurationMetric {
}
optional AggregationType aggregation_type = 5 [default = SUM];
- optional FieldMatcher dimensions = 6;
+ optional FieldMatcher dimensions_in_what = 6;
- optional TimeUnit bucket = 7;
+ optional FieldMatcher dimensions_in_condition = 7;
+
+ optional TimeUnit bucket = 8;
}
message GaugeMetric {
@@ -215,11 +219,13 @@ message GaugeMetric {
optional int64 condition = 4;
- optional FieldMatcher dimensions = 5;
+ optional FieldMatcher dimensions_in_what = 5;
- optional TimeUnit bucket = 6;
+ optional FieldMatcher dimensions_in_condition = 6;
- repeated MetricConditionLink links = 7;
+ optional TimeUnit bucket = 7;
+
+ repeated MetricConditionLink links = 8;
}
message ValueMetric {
@@ -231,14 +237,16 @@ message ValueMetric {
optional int64 condition = 4;
- optional FieldMatcher dimensions = 5;
+ optional FieldMatcher dimensions_in_what = 5;
- optional TimeUnit bucket = 6;
+ optional FieldMatcher dimensions_in_condition = 6;
- repeated MetricConditionLink links = 7;
+ optional TimeUnit bucket = 7;
+
+ repeated MetricConditionLink links = 8;
enum AggregationType { SUM = 1; }
- optional AggregationType aggregation_type = 8 [default = SUM];
+ optional AggregationType aggregation_type = 9 [default = SUM];
}
message Alert {
diff --git a/cmds/statsd/tests/MetricsManager_test.cpp b/cmds/statsd/tests/MetricsManager_test.cpp
index fe0f59d30c81..f90ca409e84c 100644
--- a/cmds/statsd/tests/MetricsManager_test.cpp
+++ b/cmds/statsd/tests/MetricsManager_test.cpp
@@ -81,8 +81,8 @@ StatsdConfig buildGoodConfig() {
metric->set_id(3);
metric->set_what(StringToId("SCREEN_IS_ON"));
metric->set_bucket(ONE_MINUTE);
- metric->mutable_dimensions()->set_field(2 /*SCREEN_STATE_CHANGE*/);
- metric->mutable_dimensions()->add_child()->set_field(1);
+ metric->mutable_dimensions_in_what()->set_field(2 /*SCREEN_STATE_CHANGE*/);
+ metric->mutable_dimensions_in_what()->add_child()->set_field(1);
config.add_no_report_metric(3);
@@ -132,8 +132,8 @@ StatsdConfig buildAlertWithUnknownMetric() {
metric->set_id(3);
metric->set_what(StringToId("SCREEN_IS_ON"));
metric->set_bucket(ONE_MINUTE);
- metric->mutable_dimensions()->set_field(2 /*SCREEN_STATE_CHANGE*/);
- metric->mutable_dimensions()->add_child()->set_field(1);
+ metric->mutable_dimensions_in_what()->set_field(2 /*SCREEN_STATE_CHANGE*/);
+ metric->mutable_dimensions_in_what()->add_child()->set_field(1);
auto alert = config.add_alert();
alert->set_id(3);
@@ -217,7 +217,7 @@ StatsdConfig buildDimensionMetricsWithMultiTags() {
metric->set_what(StringToId("BATTERY_LOW"));
metric->set_bucket(ONE_MINUTE);
// This case is interesting. We want to dimension across two atoms.
- metric->mutable_dimensions()->add_child()->set_field(1);
+ metric->mutable_dimensions_in_what()->add_child()->set_field(1);
auto alert = config.add_alert();
alert->set_id(103);
diff --git a/cmds/statsd/tests/e2e/Attribution_e2e_test.cpp b/cmds/statsd/tests/e2e/Attribution_e2e_test.cpp
index 39c95496055a..a56db28e64b3 100644
--- a/cmds/statsd/tests/e2e/Attribution_e2e_test.cpp
+++ b/cmds/statsd/tests/e2e/Attribution_e2e_test.cpp
@@ -44,7 +44,7 @@ StatsdConfig CreateStatsdConfig() {
auto countMetric = config.add_count_metric();
countMetric->set_id(123456);
countMetric->set_what(wakelockAcquireMatcher.id());
- *countMetric->mutable_dimensions() =
+ *countMetric->mutable_dimensions_in_what() =
CreateAttributionUidAndTagDimensions(
android::util::WAKELOCK_STATE_CHANGED, {Position::FIRST});
countMetric->set_bucket(ONE_MINUTE);
@@ -155,7 +155,8 @@ TEST(AttributionE2eTest, TestAttributionMatchAndSlice) {
auto data = countMetrics.data(0);
ValidateAttributionUidAndTagDimension(
- data.dimension(), android::util::WAKELOCK_STATE_CHANGED, 111, "App1");
+ data.dimensions_in_what(), android::util::WAKELOCK_STATE_CHANGED, 111,
+ "App1");
EXPECT_EQ(data.bucket_info_size(), 2);
EXPECT_EQ(data.bucket_info(0).count(), 2);
EXPECT_EQ(data.bucket_info(0).start_bucket_nanos(), bucketStartTimeNs);
@@ -166,7 +167,8 @@ TEST(AttributionE2eTest, TestAttributionMatchAndSlice) {
data = countMetrics.data(1);
ValidateAttributionUidAndTagDimension(
- data.dimension(), android::util::WAKELOCK_STATE_CHANGED, 222, "GMSCoreModule1");
+ data.dimensions_in_what(), android::util::WAKELOCK_STATE_CHANGED, 222,
+ "GMSCoreModule1");
EXPECT_EQ(data.bucket_info_size(), 2);
EXPECT_EQ(data.bucket_info(0).count(), 1);
EXPECT_EQ(data.bucket_info(0).start_bucket_nanos(), bucketStartTimeNs);
@@ -177,7 +179,8 @@ TEST(AttributionE2eTest, TestAttributionMatchAndSlice) {
data = countMetrics.data(2);
ValidateAttributionUidAndTagDimension(
- data.dimension(), android::util::WAKELOCK_STATE_CHANGED, 222, "GMSCoreModule3");
+ data.dimensions_in_what(), android::util::WAKELOCK_STATE_CHANGED, 222,
+ "GMSCoreModule3");
EXPECT_EQ(data.bucket_info_size(), 1);
EXPECT_EQ(data.bucket_info(0).count(), 1);
EXPECT_EQ(data.bucket_info(0).start_bucket_nanos(), bucketStartTimeNs + 3 * bucketSizeNs);
@@ -185,7 +188,8 @@ TEST(AttributionE2eTest, TestAttributionMatchAndSlice) {
data = countMetrics.data(3);
ValidateAttributionUidAndTagDimension(
- data.dimension(), android::util::WAKELOCK_STATE_CHANGED, 444, "GMSCoreModule2");
+ data.dimensions_in_what(), android::util::WAKELOCK_STATE_CHANGED, 444,
+ "GMSCoreModule2");
EXPECT_EQ(data.bucket_info_size(), 1);
EXPECT_EQ(data.bucket_info(0).count(), 1);
EXPECT_EQ(data.bucket_info(0).start_bucket_nanos(), bucketStartTimeNs + 2 * bucketSizeNs);
diff --git a/cmds/statsd/tests/e2e/GaugeMetric_e2e_test.cpp b/cmds/statsd/tests/e2e/GaugeMetric_e2e_test.cpp
index 10a6c363eab3..82502976a383 100644
--- a/cmds/statsd/tests/e2e/GaugeMetric_e2e_test.cpp
+++ b/cmds/statsd/tests/e2e/GaugeMetric_e2e_test.cpp
@@ -51,7 +51,7 @@ StatsdConfig CreateStatsdConfigForPushedEvent() {
fieldMatcher->add_child()->set_field(3); // type (enum)
fieldMatcher->add_child()->set_field(4); // activity_name(str)
fieldMatcher->add_child()->set_field(7); // activity_start_msec(int64)
- *gaugeMetric->mutable_dimensions() =
+ *gaugeMetric->mutable_dimensions_in_what() =
CreateDimensions(android::util::APP_START_CHANGED, {1 /* uid field */ });
gaugeMetric->set_bucket(ONE_MINUTE);
@@ -148,10 +148,10 @@ TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent) {
EXPECT_EQ(gaugeMetrics.data_size(), 2);
auto data = gaugeMetrics.data(0);
- EXPECT_EQ(data.dimension().field(), android::util::APP_START_CHANGED);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value(0).field(), 1 /* uid field */);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value(0).value_int(), appUid1);
+ EXPECT_EQ(data.dimensions_in_what().field(), android::util::APP_START_CHANGED);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value_size(), 1);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value(0).field(), 1 /* uid field */);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value(0).value_int(), appUid1);
EXPECT_EQ(data.bucket_info_size(), 3);
EXPECT_EQ(data.bucket_info(0).start_bucket_nanos(), bucketStartTimeNs);
EXPECT_EQ(data.bucket_info(0).end_bucket_nanos(), bucketStartTimeNs + bucketSizeNs);
@@ -172,10 +172,11 @@ TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent) {
EXPECT_EQ(data.bucket_info(2).atom().app_start_changed().activity_start_msec(), 105L);
data = gaugeMetrics.data(1);
- EXPECT_EQ(data.dimension().field(), android::util::APP_START_CHANGED);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value(0).field(), 1 /* uid field */);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value(0).value_int(), appUid2);
+
+ EXPECT_EQ(data.dimensions_in_what().field(), android::util::APP_START_CHANGED);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value_size(), 1);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value(0).field(), 1 /* uid field */);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value(0).value_int(), appUid2);
EXPECT_EQ(data.bucket_info_size(), 1);
EXPECT_EQ(data.bucket_info(0).start_bucket_nanos(), bucketStartTimeNs + 2 * bucketSizeNs);
EXPECT_EQ(data.bucket_info(0).end_bucket_nanos(), bucketStartTimeNs + 3 * bucketSizeNs);
diff --git a/cmds/statsd/tests/e2e/MetricConditionLink_e2e_test.cpp b/cmds/statsd/tests/e2e/MetricConditionLink_e2e_test.cpp
index cdc44675a54d..178dd71354c4 100644
--- a/cmds/statsd/tests/e2e/MetricConditionLink_e2e_test.cpp
+++ b/cmds/statsd/tests/e2e/MetricConditionLink_e2e_test.cpp
@@ -68,7 +68,7 @@ StatsdConfig CreateStatsdConfig() {
countMetric->set_what(appCrashMatcher.id());
countMetric->set_condition(combinationPredicate->id());
// The metric is dimensioning by uid only.
- *countMetric->mutable_dimensions() =
+ *countMetric->mutable_dimensions_in_what() =
CreateDimensions(android::util::PROCESS_LIFE_CYCLE_STATE_CHANGED, {1});
countMetric->set_bucket(ONE_MINUTE);
@@ -199,12 +199,11 @@ TEST(MetricConditionLinkE2eTest, TestMultiplePredicatesAndLinks) {
EXPECT_EQ(reports.reports(0).metrics(0).count_metrics().data(0).bucket_info(0).count(), 1);
auto data = reports.reports(0).metrics(0).count_metrics().data(0);
// Validate dimension value.
- EXPECT_EQ(data.dimension().field(),
- android::util::PROCESS_LIFE_CYCLE_STATE_CHANGED);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value_size(), 1);
+ EXPECT_EQ(data.dimensions_in_what().field(), android::util::PROCESS_LIFE_CYCLE_STATE_CHANGED);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value_size(), 1);
// Uid field.
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value(0).field(), 1);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value(0).value_int(), appUid);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value(0).field(), 1);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value(0).value_int(), appUid);
reports.Clear();
processor->onDumpReport(cfgKey, bucketStartTimeNs + 2 * bucketSizeNs + 1, &reports);
@@ -216,12 +215,12 @@ TEST(MetricConditionLinkE2eTest, TestMultiplePredicatesAndLinks) {
EXPECT_EQ(reports.reports(0).metrics(0).count_metrics().data(0).bucket_info(1).count(), 3);
data = reports.reports(0).metrics(0).count_metrics().data(0);
// Validate dimension value.
- EXPECT_EQ(data.dimension().field(),
+ EXPECT_EQ(data.dimensions_in_what().field(),
android::util::PROCESS_LIFE_CYCLE_STATE_CHANGED);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value_size(), 1);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value_size(), 1);
// Uid field.
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value(0).field(), 1);
- EXPECT_EQ(data.dimension().value_tuple().dimensions_value(0).value_int(), appUid);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value(0).field(), 1);
+ EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value(0).value_int(), appUid);
}
#else
diff --git a/cmds/statsd/tests/e2e/WakelockDuration_e2e_test.cpp b/cmds/statsd/tests/e2e/WakelockDuration_e2e_test.cpp
index fcdaafce6627..e656b98c66ad 100644
--- a/cmds/statsd/tests/e2e/WakelockDuration_e2e_test.cpp
+++ b/cmds/statsd/tests/e2e/WakelockDuration_e2e_test.cpp
@@ -51,7 +51,7 @@ StatsdConfig CreateStatsdConfig(DurationMetric::AggregationType aggregationType)
durationMetric->set_condition(screenIsOffPredicate.id());
durationMetric->set_aggregation_type(aggregationType);
// The metric is dimensioning by first attribution node and only by uid.
- *durationMetric->mutable_dimensions() =
+ *durationMetric->mutable_dimensions_in_what() =
CreateAttributionUidDimensions(
android::util::WAKELOCK_STATE_CHANGED, {Position::FIRST});
durationMetric->set_bucket(ONE_MINUTE);
@@ -125,7 +125,8 @@ TEST(WakelockDurationE2eTest, TestAggregatedPredicateDimensions) {
auto data = reports.reports(0).metrics(0).duration_metrics().data(0);
// Validate dimension value.
ValidateAttributionUidDimension(
- data.dimension(), android::util::WAKELOCK_STATE_CHANGED, 111);
+ data.dimensions_in_what(),
+ android::util::WAKELOCK_STATE_CHANGED, 111);
// Validate bucket info.
EXPECT_EQ(reports.reports(0).metrics(0).duration_metrics().data(0).bucket_info_size(), 1);
data = reports.reports(0).metrics(0).duration_metrics().data(0);
@@ -143,7 +144,7 @@ TEST(WakelockDurationE2eTest, TestAggregatedPredicateDimensions) {
data = reports.reports(0).metrics(0).duration_metrics().data(0);
// Validate dimension value.
ValidateAttributionUidDimension(
- data.dimension(), android::util::WAKELOCK_STATE_CHANGED, 111);
+ data.dimensions_in_what(), android::util::WAKELOCK_STATE_CHANGED, 111);
// Two output buckets.
// The wakelock holding interval in the 1st bucket starts from the screen off event and to
// the end of the 1st bucket.
@@ -172,7 +173,7 @@ TEST(WakelockDurationE2eTest, TestAggregatedPredicateDimensions) {
EXPECT_EQ(reports.reports(0).metrics(0).duration_metrics().data(0).bucket_info_size(), 6);
data = reports.reports(0).metrics(0).duration_metrics().data(0);
ValidateAttributionUidDimension(
- data.dimension(), android::util::WAKELOCK_STATE_CHANGED, 111);
+ data.dimensions_in_what(), android::util::WAKELOCK_STATE_CHANGED, 111);
// The last wakelock holding spans 4 buckets.
EXPECT_EQ((unsigned long long)data.bucket_info(2).duration_nanos(), bucketSizeNs - 100);
EXPECT_EQ((unsigned long long)data.bucket_info(3).duration_nanos(), bucketSizeNs);
diff --git a/cmds/statsd/tests/statsd_test_util.h b/cmds/statsd/tests/statsd_test_util.h
index 7eb93b9d5fcd..1fc33ded13c1 100644
--- a/cmds/statsd/tests/statsd_test_util.h
+++ b/cmds/statsd/tests/statsd_test_util.h
@@ -138,7 +138,7 @@ template <typename T>
void sortMetricDataByDimensionsValue(const T& metricData, T* sortedMetricData) {
std::map<HashableDimensionKey, int> dimensionIndexMap;
for (int i = 0; i < metricData.data_size(); ++i) {
- dimensionIndexMap.insert(std::make_pair(metricData.data(i).dimension(), i));
+ dimensionIndexMap.insert(std::make_pair(metricData.data(i).dimensions_in_what(), i));
}
for (const auto& itr : dimensionIndexMap) {
*sortedMetricData->add_data() = metricData.data(itr.second);
diff --git a/cmds/statsd/tools/dogfood/src/com/android/statsd/dogfood/DisplayProtoUtils.java b/cmds/statsd/tools/dogfood/src/com/android/statsd/dogfood/DisplayProtoUtils.java
index 93dba71716a5..33c8abf03462 100644
--- a/cmds/statsd/tools/dogfood/src/com/android/statsd/dogfood/DisplayProtoUtils.java
+++ b/cmds/statsd/tools/dogfood/src/com/android/statsd/dogfood/DisplayProtoUtils.java
@@ -97,9 +97,14 @@ public class DisplayProtoUtils {
= log.getDurationMetrics();
sb.append("Dimension size: ").append(durationMetricDataWrapper.getDataCount()).append("\n");
for (StatsLog.DurationMetricData duration : durationMetricDataWrapper.getDataList()) {
- sb.append("dimension: ");
- displayDimension(sb, duration.getDimension());
+ sb.append("dimension_in_what: ");
+ displayDimension(sb, duration.getDimensionsInWhat());
sb.append("\n");
+ if (duration.hasDimensionsInCondition()) {
+ sb.append("dimension_in_condition: ");
+ displayDimension(sb, duration.getDimensionsInCondition());
+ sb.append("\n");
+ }
for (StatsLog.DurationBucketInfo info : duration.getBucketInfoList()) {
sb.append("\t[").append(getDateStr(info.getStartBucketNanos())).append("-")
@@ -124,9 +129,14 @@ public class DisplayProtoUtils {
= log.getCountMetrics();
sb.append("Dimension size: ").append(countMetricDataWrapper.getDataCount()).append("\n");
for (StatsLog.CountMetricData count : countMetricDataWrapper.getDataList()) {
- sb.append("dimension: ");
- displayDimension(sb, count.getDimension());
+ sb.append("dimension_in_what: ");
+ displayDimension(sb, count.getDimensionsInWhat());
sb.append("\n");
+ if (count.hasDimensionsInCondition()) {
+ sb.append("dimension_in_condition: ");
+ displayDimension(sb, count.getDimensionsInCondition());
+ sb.append("\n");
+ }
for (StatsLog.CountBucketInfo info : count.getBucketInfoList()) {
sb.append("\t[").append(getDateStr(info.getStartBucketNanos())).append("-")
diff --git a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/DisplayProtoUtils.java b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/DisplayProtoUtils.java
index 862ebe143e86..75489ade6432 100644
--- a/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/DisplayProtoUtils.java
+++ b/cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/DisplayProtoUtils.java
@@ -108,9 +108,14 @@ public class DisplayProtoUtils {
= log.getDurationMetrics();
sb.append("Dimension size: ").append(durationMetricDataWrapper.getDataCount()).append("\n");
for (StatsLog.DurationMetricData duration : durationMetricDataWrapper.getDataList()) {
- sb.append("dimension: ");
- displayDimension(sb, duration.getDimension());
+ sb.append("dimension_in_what: ");
+ displayDimension(sb, duration.getDimensionsInWhat());
sb.append("\n");
+ if (duration.hasDimensionsInCondition()) {
+ sb.append("dimension_in_condition: ");
+ displayDimension(sb, duration.getDimensionsInCondition());
+ sb.append("\n");
+ }
for (StatsLog.DurationBucketInfo info : duration.getBucketInfoList()) {
sb.append("\t[").append(getDateStr(info.getStartBucketNanos())).append("-")
@@ -135,9 +140,14 @@ public class DisplayProtoUtils {
= log.getCountMetrics();
sb.append("Dimension size: ").append(countMetricDataWrapper.getDataCount()).append("\n");
for (StatsLog.CountMetricData count : countMetricDataWrapper.getDataList()) {
- sb.append("dimension: ");
- displayDimension(sb, count.getDimension());
+ sb.append("dimension_in_what: ");
+ displayDimension(sb, count.getDimensionsInWhat());
sb.append("\n");
+ if (count.hasDimensionsInCondition()) {
+ sb.append("dimension_in_condition: ");
+ displayDimension(sb, count.getDimensionsInCondition());
+ sb.append("\n");
+ }
for (StatsLog.CountBucketInfo info : count.getBucketInfoList()) {
sb.append("\t[").append(getDateStr(info.getStartBucketNanos())).append("-")