diff options
author | Bill Peckham <bpeckham@google.com> | 2018-11-05 17:12:23 -0800 |
---|---|---|
committer | Bill Peckham <bpeckham@google.com> | 2018-11-05 17:12:23 -0800 |
commit | ba167de93776a7e5d1b347d1ee646e161cf24ce5 (patch) | |
tree | f1ced04b88bd977af08011e6c7e4124ebe8aa293 /cmds/statsd/src/metrics/metrics_manager_util.cpp | |
parent | f893260618712d3894d1279e27ee121d4be8817f (diff) | |
parent | 828551df83149d4b5754757d8b2dc36f55f24cad (diff) |
Merge QP1A.181022.001
Change-Id: I0e200ff664739f0bce5a55806ac4fc95fbbff52d
Diffstat (limited to 'cmds/statsd/src/metrics/metrics_manager_util.cpp')
-rw-r--r-- | cmds/statsd/src/metrics/metrics_manager_util.cpp | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/cmds/statsd/src/metrics/metrics_manager_util.cpp b/cmds/statsd/src/metrics/metrics_manager_util.cpp index 75d6df95852d..136ba074d589 100644 --- a/cmds/statsd/src/metrics/metrics_manager_util.cpp +++ b/cmds/statsd/src/metrics/metrics_manager_util.cpp @@ -25,6 +25,7 @@ #include "../external/StatsPullerManager.h" #include "../matchers/CombinationLogMatchingTracker.h" #include "../matchers/SimpleLogMatchingTracker.h" +#include "../matchers/EventMatcherWizard.h" #include "../metrics/CountMetricProducer.h" #include "../metrics/DurationMetricProducer.h" #include "../metrics/EventMetricProducer.h" @@ -294,6 +295,7 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const int64_t unordered_map<int, std::vector<int>>& trackerToMetricMap, unordered_map<int64_t, int>& metricMap, std::set<int64_t>& noReportMetricIds) { sp<ConditionWizard> wizard = new ConditionWizard(allConditionTrackers); + sp<EventMatcherWizard> matcherWizard = new EventMatcherWizard(allAtomMatchers); const int allMetricsCount = config.count_metric_size() + config.duration_metric_size() + config.event_metric_size() + config.value_metric_size(); allMetricProducers.reserve(allMetricsCount); @@ -563,7 +565,8 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const int64_t } sp<MetricProducer> gaugeProducer = new GaugeMetricProducer( - key, metric, conditionIndex, wizard, pullTagId, triggerAtomId, atomTagId, + key, metric, conditionIndex, wizard, + trackerIndex, matcherWizard, pullTagId, triggerAtomId, atomTagId, timeBaseTimeNs, currentTimeNs, pullerManager); allMetricProducers.push_back(gaugeProducer); } @@ -682,6 +685,44 @@ bool initAlarms(const StatsdConfig& config, const ConfigKey& key, return true; } +bool initMetricActivations(const ConfigKey& key, const StatsdConfig& config, + const int64_t currentTimeNs, + const unordered_map<int64_t, int> &logEventTrackerMap, + const unordered_map<int64_t, int> &metricProducerMap, + vector<sp<MetricProducer>>& allMetricProducers, + unordered_map<int, std::vector<int>>& activationAtomTrackerToMetricMap, + vector<int>& metricsWithActivation) { + for (int i = 0; i < config.metric_activation_size(); ++i) { + const MetricActivation& metric_activation = config.metric_activation(i); + auto itr = metricProducerMap.find(metric_activation.metric_id()); + if (itr == metricProducerMap.end()) { + ALOGE("Metric id not found in metric activation: %lld", + (long long)metric_activation.metric_id()); + return false; + } + const int metricTrackerIndex = itr->second; + if (metricTrackerIndex < 0 || metricTrackerIndex >= (int)allMetricProducers.size()) { + ALOGE("Invalid metric tracker index."); + return false; + } + metricsWithActivation.push_back(metricTrackerIndex); + for (int j = 0; j < metric_activation.event_activation_size(); ++j) { + const EventActivation& activation = metric_activation.event_activation(j); + auto logTrackerIt = logEventTrackerMap.find(activation.atom_matcher_id()); + if (logTrackerIt == logEventTrackerMap.end()) { + ALOGE("Atom matcher not found for event activation."); + return false; + } + const int atomMatcherIndex = logTrackerIt->second; + activationAtomTrackerToMetricMap[atomMatcherIndex].push_back( + metricTrackerIndex); + allMetricProducers[metricTrackerIndex]->addActivation( + atomMatcherIndex, activation.ttl_seconds()); + } + } + return true; +} + bool initStatsdConfig(const ConfigKey& key, const StatsdConfig& config, UidMap& uidMap, const sp<StatsPullerManager>& pullerManager, const sp<AlarmMonitor>& anomalyAlarmMonitor, @@ -695,6 +736,8 @@ bool initStatsdConfig(const ConfigKey& key, const StatsdConfig& config, UidMap& unordered_map<int, std::vector<int>>& conditionToMetricMap, unordered_map<int, std::vector<int>>& trackerToMetricMap, unordered_map<int, std::vector<int>>& trackerToConditionMap, + unordered_map<int, std::vector<int>>& activationAtomTrackerToMetricMap, + vector<int>& metricsWithActivation, std::set<int64_t>& noReportMetricIds) { unordered_map<int64_t, int> logTrackerMap; unordered_map<int64_t, int> conditionTrackerMap; @@ -729,6 +772,11 @@ bool initStatsdConfig(const ConfigKey& key, const StatsdConfig& config, UidMap& ALOGE("initAlarms failed"); return false; } + if (!initMetricActivations(key, config, currentTimeNs, logTrackerMap, metricProducerMap, + allMetricProducers, activationAtomTrackerToMetricMap, metricsWithActivation)) { + ALOGE("initMetricActivations failed"); + return false; + } return true; } |