Merge "Add FieldsFilter to EventMetric" into main am: 084c7f1ad7
Original change: https://android-review.googlesource.com/c/platform/packages/modules/StatsD/+/3520712
Change-Id: Id6612ffd17e7eab961116b5aedf32df277d6feff
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/statsd/src/HashableDimensionKey.cpp b/statsd/src/HashableDimensionKey.cpp
index 03a4229..df8c9d6 100644
--- a/statsd/src/HashableDimensionKey.cpp
+++ b/statsd/src/HashableDimensionKey.cpp
@@ -227,8 +227,8 @@
return num_matches > 0;
}
-void filterGaugeValues(const std::vector<Matcher>& matcherFields,
- const std::vector<FieldValue>& values, std::vector<FieldValue>* output) {
+void filterValues(const std::vector<Matcher>& matcherFields, const std::vector<FieldValue>& values,
+ std::vector<FieldValue>* output) {
for (const auto& field : matcherFields) {
for (const auto& value : values) {
if (value.mField.matches(field)) {
diff --git a/statsd/src/HashableDimensionKey.h b/statsd/src/HashableDimensionKey.h
index 4792e8d..292081e 100644
--- a/statsd/src/HashableDimensionKey.h
+++ b/statsd/src/HashableDimensionKey.h
@@ -227,8 +227,8 @@
* In contrast to the above function, this function will not do any modification to the original
* data. Considering it as taking a snapshot on the atom event.
*/
-void filterGaugeValues(const std::vector<Matcher>& matchers, const std::vector<FieldValue>& values,
- std::vector<FieldValue>* output);
+void filterValues(const std::vector<Matcher>& matchers, const std::vector<FieldValue>& values,
+ std::vector<FieldValue>* output);
void getDimensionForCondition(const std::vector<FieldValue>& eventValues,
const Metric2Condition& links,
diff --git a/statsd/src/guardrail/stats_log_enums.proto b/statsd/src/guardrail/stats_log_enums.proto
index e186b0c..2019c27 100644
--- a/statsd/src/guardrail/stats_log_enums.proto
+++ b/statsd/src/guardrail/stats_log_enums.proto
@@ -99,7 +99,7 @@
INVALID_CONFIG_REASON_KLL_METRIC_MISSING_KLL_FIELD = 41;
INVALID_CONFIG_REASON_KLL_METRIC_KLL_FIELD_HAS_POSITION_ALL = 42;
INVALID_CONFIG_REASON_KLL_METRIC_HAS_INCORRECT_KLL_FIELD = 43;
- INVALID_CONFIG_REASON_GAUGE_METRIC_INCORRECT_FIELD_FILTER = 44;
+ INVALID_CONFIG_REASON_METRIC_INCORRECT_FIELD_FILTER = 44;
INVALID_CONFIG_REASON_GAUGE_METRIC_TRIGGER_NO_PULL_ATOM = 45;
INVALID_CONFIG_REASON_GAUGE_METRIC_TRIGGER_NO_FIRST_N_SAMPLES = 46;
INVALID_CONFIG_REASON_GAUGE_METRIC_FIRST_N_SAMPLES_WITH_WRONG_EVENT = 47 [deprecated = true];
diff --git a/statsd/src/metrics/EventMetricProducer.cpp b/statsd/src/metrics/EventMetricProducer.cpp
index de7c8d4..bb4c2a6 100644
--- a/statsd/src/metrics/EventMetricProducer.cpp
+++ b/statsd/src/metrics/EventMetricProducer.cpp
@@ -75,7 +75,8 @@
: MetricProducer(metric.id(), key, startTimeNs, conditionIndex, initialConditionCache, wizard,
protoHash, eventActivationMap, eventDeactivationMap, slicedStateAtoms,
stateGroupMap, /*splitBucketForAppUpgrade=*/nullopt, configMetadataProvider),
- mSamplingPercentage(metric.sampling_percentage()) {
+ mSamplingPercentage(metric.sampling_percentage()),
+ mFieldMatchers(translateFieldsFilter(metric.fields_filter())) {
if (metric.links().size() > 0) {
for (const auto& link : metric.links()) {
Metric2Condition mc;
@@ -291,7 +292,7 @@
}
const int64_t elapsedTimeNs = truncateTimestampIfNecessary(event);
- AtomDimensionKey key(event.GetTagId(), HashableDimensionKey(event.getValues()));
+ AtomDimensionKey key(event.GetTagId(), HashableDimensionKey(getEventFields(event)));
// TODO(b/383929503): Optimize slice_by_state performance
if (!mAggregatedAtoms.contains(key) && !mAggAtomsAndStates.contains(key)) {
sp<ConfigMetadataProvider> provider = getConfigMetadataProvider();
@@ -340,6 +341,15 @@
return DataCorruptionSeverity::kNone;
};
+vector<FieldValue> EventMetricProducer::getEventFields(const LogEvent& event) const {
+ if (mFieldMatchers.empty()) {
+ return event.getValues();
+ }
+ vector<FieldValue> eventValues;
+ filterValues(mFieldMatchers, event.getValues(), &eventValues);
+ return eventValues;
+}
+
} // namespace statsd
} // namespace os
} // namespace android
diff --git a/statsd/src/metrics/EventMetricProducer.h b/statsd/src/metrics/EventMetricProducer.h
index 6e741d4..bec8f8b 100644
--- a/statsd/src/metrics/EventMetricProducer.h
+++ b/statsd/src/metrics/EventMetricProducer.h
@@ -99,6 +99,8 @@
DataCorruptionSeverity determineCorruptionSeverity(int32_t atomId, DataCorruptedReason reason,
LostAtomType atomType) const override;
+ std::vector<FieldValue> getEventFields(const LogEvent& event) const;
+
// Maps the field/value pairs of an atom to a list of timestamps used to deduplicate atoms.
// Used when event metric DOES NOT use slice_by_state. Empty otherwise.
std::unordered_map<AtomDimensionKey, std::vector<int64_t>> mAggregatedAtoms;
@@ -111,6 +113,9 @@
mAggAtomsAndStates;
const int mSamplingPercentage;
+
+ // Allowlist of fields to report. Empty means all are reported.
+ const std::vector<Matcher> mFieldMatchers;
};
} // namespace statsd
diff --git a/statsd/src/metrics/GaugeMetricProducer.cpp b/statsd/src/metrics/GaugeMetricProducer.cpp
index c4dac4a..003ab5f 100644
--- a/statsd/src/metrics/GaugeMetricProducer.cpp
+++ b/statsd/src/metrics/GaugeMetricProducer.cpp
@@ -101,6 +101,7 @@
mAtomId(atomId),
mIsPulled(pullTagId != -1),
mMinBucketSizeNs(metric.min_bucket_size_nanos()),
+ mFieldMatchers(translateFieldsFilter(metric.gauge_fields_filter())),
mSamplingType(metric.sampling_type()),
mMaxPullDelayNs(metric.max_pull_delay_sec() > 0 ? metric.max_pull_delay_sec() * NS_PER_SEC
: StatsdStats::kPullMaxDelayNs),
@@ -120,10 +121,6 @@
}
mBucketSizeNs = bucketSizeMills * 1000000;
- if (!metric.gauge_fields_filter().include_all()) {
- translateFieldMatcher(metric.gauge_fields_filter().fields(), &mFieldMatchers);
- }
-
if (metric.has_dimensions_in_what()) {
translateFieldMatcher(metric.dimensions_in_what(), &mDimensionsInWhat);
mContainANYPositionInDimensionsInWhat = HasPositionANY(metric.dimensions_in_what());
@@ -519,7 +516,7 @@
std::shared_ptr<vector<FieldValue>> gaugeFields;
if (mFieldMatchers.size() > 0) {
gaugeFields = std::make_shared<vector<FieldValue>>();
- filterGaugeValues(mFieldMatchers, event.getValues(), gaugeFields.get());
+ filterValues(mFieldMatchers, event.getValues(), gaugeFields.get());
} else {
gaugeFields = std::make_shared<vector<FieldValue>>(event.getValues());
}
diff --git a/statsd/src/metrics/GaugeMetricProducer.h b/statsd/src/metrics/GaugeMetricProducer.h
index faa4e2d..b1f0a07 100644
--- a/statsd/src/metrics/GaugeMetricProducer.h
+++ b/statsd/src/metrics/GaugeMetricProducer.h
@@ -217,7 +217,7 @@
void updateCurrentSlicedBucketForAnomaly();
// Allowlist of fields to report. Empty means all are reported.
- std::vector<Matcher> mFieldMatchers;
+ const std::vector<Matcher> mFieldMatchers;
GaugeMetric::SamplingType mSamplingType;
diff --git a/statsd/src/metrics/parsing_utils/metrics_manager_util.cpp b/statsd/src/metrics/parsing_utils/metrics_manager_util.cpp
index 53b470d..28b38f6 100644
--- a/statsd/src/metrics/parsing_utils/metrics_manager_util.cpp
+++ b/statsd/src/metrics/parsing_utils/metrics_manager_util.cpp
@@ -853,6 +853,15 @@
InvalidConfigReason(INVALID_CONFIG_REASON_METRIC_MISSING_ID_OR_WHAT, metric.id());
return nullopt;
}
+
+ if (metric.has_fields_filter() && metric.fields_filter().has_fields() &&
+ !hasLeafNode(metric.fields_filter().fields())) {
+ ALOGW("Incorrect field filter setting in EventMetric %lld", (long long)metric.id());
+ invalidConfigReason = InvalidConfigReason(
+ INVALID_CONFIG_REASON_METRIC_INCORRECT_FIELD_FILTER, metric.id());
+ return nullopt;
+ }
+
int trackerIndex;
invalidConfigReason = handleMetricWithAtomMatchingTrackers(
metric.what(), metric.id(), metricIndex, false, allAtomMatchingTrackers,
@@ -1398,20 +1407,11 @@
return nullopt;
}
- if ((!metric.gauge_fields_filter().has_include_all() ||
- (metric.gauge_fields_filter().include_all() == false)) &&
+ if (metric.has_gauge_fields_filter() && metric.gauge_fields_filter().has_fields() &&
!hasLeafNode(metric.gauge_fields_filter().fields())) {
ALOGW("Incorrect field filter setting in GaugeMetric %lld", (long long)metric.id());
invalidConfigReason = InvalidConfigReason(
- INVALID_CONFIG_REASON_GAUGE_METRIC_INCORRECT_FIELD_FILTER, metric.id());
- return nullopt;
- }
- if ((metric.gauge_fields_filter().has_include_all() &&
- metric.gauge_fields_filter().include_all() == true) &&
- hasLeafNode(metric.gauge_fields_filter().fields())) {
- ALOGW("Incorrect field filter setting in GaugeMetric %lld", (long long)metric.id());
- invalidConfigReason = InvalidConfigReason(
- INVALID_CONFIG_REASON_GAUGE_METRIC_INCORRECT_FIELD_FILTER, metric.id());
+ INVALID_CONFIG_REASON_METRIC_INCORRECT_FIELD_FILTER, metric.id());
return nullopt;
}
diff --git a/statsd/src/stats_log_util.cpp b/statsd/src/stats_log_util.cpp
index 83e60d5..c4f63b0 100644
--- a/statsd/src/stats_log_util.cpp
+++ b/statsd/src/stats_log_util.cpp
@@ -687,6 +687,16 @@
return hex;
}
+vector<Matcher> translateFieldsFilter(const FieldFilter& fieldFilter) {
+ if (!fieldFilter.has_fields()) {
+ return {};
+ }
+
+ vector<Matcher> fieldMatchers;
+ translateFieldMatcher(fieldFilter.fields(), &fieldMatchers);
+ return fieldMatchers;
+}
+
} // namespace statsd
} // namespace os
} // namespace android
diff --git a/statsd/src/stats_log_util.h b/statsd/src/stats_log_util.h
index d7a3987..6520f8e 100644
--- a/statsd/src/stats_log_util.h
+++ b/statsd/src/stats_log_util.h
@@ -130,6 +130,8 @@
std::string toHexString(const string& bytes);
+std::vector<Matcher> translateFieldsFilter(const FieldFilter& fieldFilter);
+
} // namespace statsd
} // namespace os
} // namespace android
diff --git a/statsd/src/statsd_config.proto b/statsd/src/statsd_config.proto
index d112165..16d7ee7 100644
--- a/statsd/src/statsd_config.proto
+++ b/statsd/src/statsd_config.proto
@@ -250,6 +250,8 @@
optional FieldMatcher uid_fields = 6;
+ optional FieldFilter fields_filter = 9;
+
reserved 100;
reserved 101;
}
diff --git a/statsd/tests/e2e/EventMetric_e2e_test.cpp b/statsd/tests/e2e/EventMetric_e2e_test.cpp
index aed6954..7648159 100644
--- a/statsd/tests/e2e/EventMetric_e2e_test.cpp
+++ b/statsd/tests/e2e/EventMetric_e2e_test.cpp
@@ -869,6 +869,91 @@
EXPECT_EQ(android::app::PROCESS_STATE_IMPORTANT_FOREGROUND, data.slice_by_state(1).value());
}
+TEST_F(EventMetricE2eTest, TestEventMetricFieldsFilter) {
+ StatsdConfig config;
+
+ AtomMatcher testAtomReportedAtomMatcher =
+ CreateSimpleAtomMatcher("TestAtomReportedMatcher", util::TEST_ATOM_REPORTED);
+ *config.add_atom_matcher() = testAtomReportedAtomMatcher;
+
+ EventMetric metric =
+ createEventMetric("EventTestAtomReported", testAtomReportedAtomMatcher.id(), nullopt);
+ metric.mutable_fields_filter()->mutable_fields()->set_field(util::TEST_ATOM_REPORTED);
+ metric.mutable_fields_filter()->mutable_fields()->add_child()->set_field(2); // int_field
+ *config.add_event_metric() = metric;
+
+ ConfigKey key(123, 987);
+ uint64_t bucketStartTimeNs = 10000000000; // 0:10
+ sp<StatsLogProcessor> processor =
+ CreateStatsLogProcessor(bucketStartTimeNs, bucketStartTimeNs, config, key);
+
+ // Initialize log events before update.
+ std::vector<std::unique_ptr<LogEvent>> events;
+
+ vector<int> enumArrayNoMatch = {TestAtomReported::OFF, TestAtomReported::ON};
+ vector<int> enumArrayMatch = {TestAtomReported::ON, TestAtomReported::OFF};
+
+ events.push_back(CreateTestAtomReportedEventWithPrimitives(
+ bucketStartTimeNs + 10 * NS_PER_SEC, 1 /* intField */, 1l /* longField */,
+ 1.0f /* floatField */, "string_field1", false /* boolField */,
+ TestAtomReported::OFF /* enumField */));
+ events.push_back(CreateTestAtomReportedEventWithPrimitives(
+ bucketStartTimeNs + 20 * NS_PER_SEC, 2 /* intField */, 2l /* longField */,
+ 2.0f /* floatField */, "string_field2", true /* boolField */,
+ TestAtomReported::ON /* enumField */));
+ events.push_back(CreateTestAtomReportedEventWithPrimitives(
+ bucketStartTimeNs + 30 * NS_PER_SEC, 3 /* intField */, 3l /* longField */,
+ 3.0f /* floatField */, "string_field3", false /* boolField */,
+ TestAtomReported::ON /* enumField */));
+
+ // Send log events to StatsLogProcessor.
+ for (auto& event : events) {
+ processor->OnLogEvent(event.get());
+ }
+
+ uint64_t dumpTimeNs = bucketStartTimeNs + 100 * NS_PER_SEC;
+ ConfigMetricsReportList reports;
+ vector<uint8_t> buffer;
+ processor->onDumpReport(key, dumpTimeNs, true, true, ADB_DUMP, FAST, &buffer);
+ EXPECT_TRUE(reports.ParseFromArray(&buffer[0], buffer.size()));
+ backfillStringInReport(&reports);
+ backfillStartEndTimestamp(&reports);
+ backfillAggregatedAtoms(&reports);
+ ASSERT_EQ(reports.reports_size(), 1);
+
+ ConfigMetricsReport report = reports.reports(0);
+ ASSERT_EQ(report.metrics_size(), 1);
+ StatsLogReport testAtomEventMetricReport = report.metrics(0);
+ EXPECT_EQ(testAtomEventMetricReport.metric_id(), metric.id());
+ EXPECT_TRUE(testAtomEventMetricReport.has_event_metrics());
+ ASSERT_EQ(testAtomEventMetricReport.event_metrics().data_size(), 3);
+
+ TestAtomReported atom =
+ testAtomEventMetricReport.event_metrics().data(0).atom().test_atom_reported();
+ EXPECT_EQ(atom.int_field(), 1);
+ EXPECT_FALSE(atom.has_long_field());
+ EXPECT_FALSE(atom.has_float_field());
+ EXPECT_FALSE(atom.has_string_field());
+ EXPECT_FALSE(atom.has_boolean_field());
+ EXPECT_FALSE(atom.has_state());
+
+ atom = testAtomEventMetricReport.event_metrics().data(1).atom().test_atom_reported();
+ EXPECT_EQ(atom.int_field(), 2);
+ EXPECT_FALSE(atom.has_long_field());
+ EXPECT_FALSE(atom.has_float_field());
+ EXPECT_FALSE(atom.has_string_field());
+ EXPECT_FALSE(atom.has_boolean_field());
+ EXPECT_FALSE(atom.has_state());
+
+ atom = testAtomEventMetricReport.event_metrics().data(2).atom().test_atom_reported();
+ EXPECT_EQ(atom.int_field(), 3);
+ EXPECT_FALSE(atom.has_long_field());
+ EXPECT_FALSE(atom.has_float_field());
+ EXPECT_FALSE(atom.has_string_field());
+ EXPECT_FALSE(atom.has_boolean_field());
+ EXPECT_FALSE(atom.has_state());
+}
+
#else
GTEST_LOG_(INFO) << "This test does nothing.\n";
#endif
diff --git a/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp b/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp
index 12c3d80..9e872a1 100644
--- a/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp
+++ b/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp
@@ -53,7 +53,6 @@
gaugeMetric->set_condition(screenIsOffPredicate.id());
}
gaugeMetric->set_sampling_type(sampling_type);
- gaugeMetric->mutable_gauge_fields_filter()->set_include_all(true);
*gaugeMetric->mutable_dimensions_in_what() =
CreateDimensions(ATOM_TAG, {1 /* subsystem name */});
gaugeMetric->set_bucket(FIVE_MINUTES);
@@ -1722,7 +1721,6 @@
gaugeMetric->set_id(metricId);
gaugeMetric->set_what(cpuTimePerUidMatcher.id());
gaugeMetric->set_sampling_type(GaugeMetric::FIRST_N_SAMPLES);
- gaugeMetric->mutable_gauge_fields_filter()->set_include_all(true);
*gaugeMetric->mutable_dimensions_in_what() =
CreateDimensions(util::CPU_TIME_PER_UID, {1 /* uid */});
gaugeMetric->set_bucket(FIVE_MINUTES);
diff --git a/statsd/tests/e2e/GaugeMetric_e2e_push_test.cpp b/statsd/tests/e2e/GaugeMetric_e2e_push_test.cpp
index f735a0c..9440d5f 100644
--- a/statsd/tests/e2e/GaugeMetric_e2e_push_test.cpp
+++ b/statsd/tests/e2e/GaugeMetric_e2e_push_test.cpp
@@ -46,7 +46,6 @@
gaugeMetric->set_id(123456);
gaugeMetric->set_what(atomMatcher.id());
gaugeMetric->set_condition(isInBackgroundPredicate.id());
- gaugeMetric->mutable_gauge_fields_filter()->set_include_all(false);
gaugeMetric->set_sampling_type(sampling_type);
auto fieldMatcher = gaugeMetric->mutable_gauge_fields_filter()->mutable_fields();
fieldMatcher->set_field(util::APP_START_OCCURRED);
diff --git a/statsd/tests/e2e/PartialBucket_e2e_test.cpp b/statsd/tests/e2e/PartialBucket_e2e_test.cpp
index c3503ea..2f4e766 100644
--- a/statsd/tests/e2e/PartialBucket_e2e_test.cpp
+++ b/statsd/tests/e2e/PartialBucket_e2e_test.cpp
@@ -88,7 +88,6 @@
auto gaugeMetric = config.add_gauge_metric();
gaugeMetric->set_id(123456);
gaugeMetric->set_what(pulledAtomMatcher.id());
- gaugeMetric->mutable_gauge_fields_filter()->set_include_all(true);
*gaugeMetric->mutable_dimensions_in_what() =
CreateDimensions(util::SUBSYSTEM_SLEEP_STATE, {1 /* subsystem name */});
gaugeMetric->set_bucket(FIVE_MINUTES);
diff --git a/statsd/tests/metrics/GaugeMetricProducer_test.cpp b/statsd/tests/metrics/GaugeMetricProducer_test.cpp
index ae74dca..123921f 100644
--- a/statsd/tests/metrics/GaugeMetricProducer_test.cpp
+++ b/statsd/tests/metrics/GaugeMetricProducer_test.cpp
@@ -96,7 +96,6 @@
GaugeMetric metric;
metric.set_id(metricId);
metric.set_bucket(ONE_MINUTE);
- metric.mutable_gauge_fields_filter()->set_include_all(false);
auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields();
gaugeFieldMatcher->set_field(tagId);
gaugeFieldMatcher->add_child()->set_field(1);
@@ -127,7 +126,6 @@
GaugeMetric metric;
metric.set_id(metricId);
metric.set_bucket(ONE_MINUTE);
- metric.mutable_gauge_fields_filter()->set_include_all(false);
metric.set_max_pull_delay_sec(INT_MAX);
auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields();
gaugeFieldMatcher->set_field(tagId);
@@ -227,7 +225,6 @@
GaugeMetric metric;
metric.set_id(metricId);
metric.set_bucket(ONE_MINUTE);
- metric.mutable_gauge_fields_filter()->set_include_all(true);
metric.set_split_bucket_for_app_upgrade(true);
Alert alert;
@@ -519,7 +516,6 @@
GaugeMetric metric;
metric.set_id(1111111);
metric.set_bucket(ONE_MINUTE);
- metric.mutable_gauge_fields_filter()->set_include_all(true);
metric.set_condition(StringToId("APP_DIED"));
metric.set_max_pull_delay_sec(INT_MAX);
auto dim = metric.mutable_dimensions_in_what();
@@ -674,7 +670,6 @@
metric.set_id(metricId);
metric.set_bucket(ONE_MINUTE);
metric.set_sampling_type(GaugeMetric::FIRST_N_SAMPLES);
- metric.mutable_gauge_fields_filter()->set_include_all(false);
metric.set_max_pull_delay_sec(INT_MAX);
auto gaugeFieldMatcher = metric.mutable_gauge_fields_filter()->mutable_fields();
gaugeFieldMatcher->set_field(tagId);
@@ -799,7 +794,6 @@
metric.set_id(metricId);
metric.set_bucket(ONE_MINUTE);
metric.set_sampling_type(GaugeMetric::FIRST_N_SAMPLES);
- metric.mutable_gauge_fields_filter()->set_include_all(true);
metric.set_max_pull_delay_sec(INT_MAX);
auto dimensionMatcher = metric.mutable_dimensions_in_what();
// use field 1 as dimension.
diff --git a/statsd/tests/metrics/parsing_utils/metrics_manager_util_test.cpp b/statsd/tests/metrics/parsing_utils/metrics_manager_util_test.cpp
index 6b6ab37..766a8fa 100644
--- a/statsd/tests/metrics/parsing_utils/metrics_manager_util_test.cpp
+++ b/statsd/tests/metrics/parsing_utils/metrics_manager_util_test.cpp
@@ -592,6 +592,18 @@
EXPECT_EQ(initConfig(config), nullopt);
}
+TEST_F(MetricsManagerUtilTest, TestEventMetricIncorrectFieldFilter) {
+ StatsdConfig config;
+ int64_t metricId = 1;
+ EventMetric* metric = config.add_event_metric();
+ metric->set_id(metricId);
+ metric->set_what(1);
+ metric->mutable_fields_filter()->mutable_fields();
+
+ EXPECT_EQ(initConfig(config),
+ InvalidConfigReason(INVALID_CONFIG_REASON_METRIC_INCORRECT_FIELD_FILTER, metricId));
+}
+
TEST_F(MetricsManagerUtilTest, TestGaugeMetricInvalidSamplingPercentage) {
StatsdConfig config;
GaugeMetric* metric = config.add_gauge_metric();
@@ -1129,10 +1141,10 @@
GaugeMetric* metric = config.add_gauge_metric();
metric->set_id(metricId);
metric->set_what(1);
+ metric->mutable_gauge_fields_filter()->mutable_fields();
EXPECT_EQ(initConfig(config),
- InvalidConfigReason(INVALID_CONFIG_REASON_GAUGE_METRIC_INCORRECT_FIELD_FILTER,
- metricId));
+ InvalidConfigReason(INVALID_CONFIG_REASON_METRIC_INCORRECT_FIELD_FILTER, metricId));
}
TEST_F(MetricsManagerUtilTest, TestGaugeMetricTriggerNoPullAtom) {
@@ -1141,7 +1153,6 @@
GaugeMetric* metric = config.add_gauge_metric();
metric->set_id(metricId);
metric->set_what(StringToId("ScreenTurnedOn"));
- metric->mutable_gauge_fields_filter()->set_include_all(true);
metric->set_trigger_event(1);
*config.add_atom_matcher() = CreateScreenTurnedOnAtomMatcher();
@@ -1160,7 +1171,6 @@
*config.add_atom_matcher() =
CreateSimpleAtomMatcher(/*name=*/"Matcher", /*atomId=*/util::SUBSYSTEM_SLEEP_STATE);
- metric->mutable_gauge_fields_filter()->set_include_all(true);
metric->set_trigger_event(StringToId("Matcher"));
EXPECT_EQ(initConfig(config),
diff --git a/statsd/tests/statsd_test_util.cpp b/statsd/tests/statsd_test_util.cpp
index 3a35f0c..6ffd6c3 100644
--- a/statsd/tests/statsd_test_util.cpp
+++ b/statsd/tests/statsd_test_util.cpp
@@ -600,7 +600,6 @@
for (const int64_t state : states) {
metric.add_slice_by_state(state);
}
- metric.mutable_gauge_fields_filter()->set_include_all(true);
return metric;
}