diff options
| author | 2018-01-18 11:19:24 +0000 | |
|---|---|---|
| committer | 2018-01-18 11:19:24 +0000 | |
| commit | eb3442cf8ab6b2548e9503f29de34c441eb1b0b2 (patch) | |
| tree | 4200a66e10123ec626dc522baef96c7883e34299 | |
| parent | 9c1d6baba7367e1f867663c338871f0ae08e0742 (diff) | |
| parent | 468ff04fd4cb43a384a3d4948cccd4438be7202a (diff) | |
Merge "Proto change for dimension from condition."
| -rw-r--r-- | cmds/statsd/src/config/ConfigManager.cpp | 12 | ||||
| -rw-r--r-- | cmds/statsd/src/metrics/CountMetricProducer.cpp | 11 | ||||
| -rw-r--r-- | cmds/statsd/src/metrics/DurationMetricProducer.cpp | 11 | ||||
| -rw-r--r-- | cmds/statsd/src/metrics/GaugeMetricProducer.cpp | 9 | ||||
| -rw-r--r-- | cmds/statsd/src/metrics/ValueMetricProducer.cpp | 11 | ||||
| -rw-r--r-- | cmds/statsd/src/metrics/metrics_manager_util.cpp | 15 | ||||
| -rw-r--r-- | cmds/statsd/src/stats_log.proto | 16 | ||||
| -rw-r--r-- | cmds/statsd/src/statsd_config.proto | 32 | ||||
| -rw-r--r-- | cmds/statsd/tests/MetricsManager_test.cpp | 10 | ||||
| -rw-r--r-- | cmds/statsd/tests/e2e/Attribution_e2e_test.cpp | 14 | ||||
| -rw-r--r-- | cmds/statsd/tests/e2e/GaugeMetric_e2e_test.cpp | 19 | ||||
| -rw-r--r-- | cmds/statsd/tests/e2e/MetricConditionLink_e2e_test.cpp | 19 | ||||
| -rw-r--r-- | cmds/statsd/tests/e2e/WakelockDuration_e2e_test.cpp | 9 | ||||
| -rw-r--r-- | cmds/statsd/tests/statsd_test_util.h | 2 | ||||
| -rw-r--r-- | cmds/statsd/tools/dogfood/src/com/android/statsd/dogfood/DisplayProtoUtils.java | 18 | ||||
| -rw-r--r-- | cmds/statsd/tools/loadtest/src/com/android/statsd/loadtest/DisplayProtoUtils.java | 18 |
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("-") |