Proto change for dimension from condition.
Test: all statsd unit tests and cts tests passed.
Change-Id: I955143aca7c76e2e22a10d7ba42eb797bd32e147
diff --git a/cmds/statsd/src/config/ConfigManager.cpp b/cmds/statsd/src/config/ConfigManager.cpp
index 554ff8a8..1481921 100644
--- a/cmds/statsd/src/config/ConfigManager.cpp
+++ b/cmds/statsd/src/config/ConfigManager.cpp
@@ -255,7 +255,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 3e98098..ef27210 100644
--- a/cmds/statsd/src/metrics/CountMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/CountMetricProducer.cpp
@@ -50,8 +50,9 @@
// 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 @@
}
// 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 @@
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 @@
// 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 b546297..58dd464 100644
--- a/cmds/statsd/src/metrics/DurationMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/DurationMetricProducer.cpp
@@ -49,8 +49,9 @@
// 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 @@
}
// 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 @@
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 @@
// 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 ae47bd8..17305e3 100644
--- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
@@ -51,8 +51,9 @@
// 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 @@
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 @@
// 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 74bd6f9..c7550f7 100644
--- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
@@ -54,8 +54,9 @@
// 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 @@
}
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 @@
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 @@
// 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 bc887ac..a0173ee 100644
--- a/cmds/statsd/src/metrics/metrics_manager_util.cpp
+++ b/cmds/statsd/src/metrics/metrics_manager_util.cpp
@@ -227,7 +227,8 @@
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 @@
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 @@
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 @@
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 @@
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 2596a5f..393f795 100644
--- a/cmds/statsd/src/stats_log.proto
+++ b/cmds/statsd/src/stats_log.proto
@@ -56,7 +56,9 @@
}
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 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 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 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 d45a6b0..ae8a835 100644
--- a/cmds/statsd/src/statsd_config.proto
+++ b/cmds/statsd/src/statsd_config.proto
@@ -178,11 +178,13 @@
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 @@
}
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 @@
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 @@
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 {