Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21a287ba authored by Ruchir Rastogi's avatar Ruchir Rastogi
Browse files

Refactor MetricActivation initialization

Specifically, MetricActivation state (mEventActivationMap and
mEventDeactivationMap) is now passed into the MetricProducer
constructor. This contrasts with the previous implementation in
which activations were accounted for after the MetricProducer
was constructed.

Additionally, the code to prepare the first bucket has been moved
into the constructor for gauge and value metrics. This last part
resulted in the modification of some tests.

Test: bit statsd_test:*
Test: atest CtsStatsdHostTestCases (no additional tests fail)
Bug: 131240626
Change-Id: I474ee8b1c51b187fbff4520deaf34b27e403bd14
parent e3355784
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ using std::map;
using std::string;
using std::unordered_map;
using std::vector;
using std::shared_ptr;

namespace android {
namespace os {
@@ -67,8 +68,13 @@ const int FIELD_ID_END_BUCKET_ELAPSED_MILLIS = 6;
CountMetricProducer::CountMetricProducer(const ConfigKey& key, const CountMetric& metric,
                                         const int conditionIndex,
                                         const sp<ConditionWizard>& wizard,
                                         const int64_t timeBaseNs, const int64_t startTimeNs)
    : MetricProducer(metric.id(), key, timeBaseNs, conditionIndex, wizard) {
                                         const int64_t timeBaseNs, const int64_t startTimeNs,
                                         const unordered_map<int, shared_ptr<Activation>>&
                                                 eventActivationMap,
                                         const unordered_map<int, vector<shared_ptr<Activation>>>&
                                                 eventDeactivationMap)
    : MetricProducer(metric.id(), key, timeBaseNs, conditionIndex, wizard, eventActivationMap,
                     eventDeactivationMap) {
    if (metric.has_bucket()) {
        mBucketSizeNs =
                TimeUnitToBucketSizeInMillisGuardrailed(key.GetUid(), metric.bucket()) * 1000000;
+5 −1
Original line number Diff line number Diff line
@@ -42,7 +42,11 @@ class CountMetricProducer : public MetricProducer {
public:
    CountMetricProducer(const ConfigKey& key, const CountMetric& countMetric,
                        const int conditionIndex, const sp<ConditionWizard>& wizard,
                        const int64_t timeBaseNs, const int64_t startTimeNs);
                        const int64_t timeBaseNs, const int64_t startTimeNs,
                        const std::unordered_map<int, std::shared_ptr<Activation>>&
                                eventActivationMap = {},
                        const std::unordered_map<int, std::vector<std::shared_ptr<Activation>>>&
                                eventDeactivationMap = {});

    virtual ~CountMetricProducer();

+10 −8
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ using android::util::ProtoOutputStream;
using std::string;
using std::unordered_map;
using std::vector;
using std::shared_ptr;

namespace android {
namespace os {
@@ -62,14 +63,15 @@ const int FIELD_ID_BUCKET_NUM = 4;
const int FIELD_ID_START_BUCKET_ELAPSED_MILLIS = 5;
const int FIELD_ID_END_BUCKET_ELAPSED_MILLIS = 6;

DurationMetricProducer::DurationMetricProducer(const ConfigKey& key, const DurationMetric& metric,
                                               const int conditionIndex, const size_t startIndex,
                                               const size_t stopIndex, const size_t stopAllIndex,
                                               const bool nesting,
                                               const sp<ConditionWizard>& wizard,
                                               const FieldMatcher& internalDimensions,
                                               const int64_t timeBaseNs, const int64_t startTimeNs)
    : MetricProducer(metric.id(), key, timeBaseNs, conditionIndex, wizard),
DurationMetricProducer::DurationMetricProducer(
        const ConfigKey& key, const DurationMetric& metric, const int conditionIndex,
        const size_t startIndex, const size_t stopIndex, const size_t stopAllIndex,
        const bool nesting, const sp<ConditionWizard>& wizard,
        const FieldMatcher& internalDimensions, const int64_t timeBaseNs, const int64_t startTimeNs,
        const unordered_map<int, shared_ptr<Activation>>& eventActivationMap,
        const unordered_map<int, vector<shared_ptr<Activation>>>& eventDeactivationMap)
    : MetricProducer(metric.id(), key, timeBaseNs, conditionIndex, wizard, eventActivationMap,
                     eventDeactivationMap),
      mAggregationType(metric.aggregation_type()),
      mStartIndex(startIndex),
      mStopIndex(stopIndex),
+6 −1
Original line number Diff line number Diff line
@@ -42,7 +42,12 @@ public:
                           const int conditionIndex, const size_t startIndex,
                           const size_t stopIndex, const size_t stopAllIndex, const bool nesting,
                           const sp<ConditionWizard>& wizard,
                           const FieldMatcher& internalDimensions, const int64_t timeBaseNs, const int64_t startTimeNs);
                           const FieldMatcher& internalDimensions, const int64_t timeBaseNs,
                           const int64_t startTimeNs,
                           const unordered_map<int, shared_ptr<Activation>>&
                                   eventActivationMap = {},
                           const unordered_map<int, vector<shared_ptr<Activation>>>&
                                   eventDeactivationMap = {});

    virtual ~DurationMetricProducer();

+8 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ using std::map;
using std::string;
using std::unordered_map;
using std::vector;
using std::shared_ptr;

namespace android {
namespace os {
@@ -54,8 +55,13 @@ const int FIELD_ID_ATOMS = 2;
EventMetricProducer::EventMetricProducer(const ConfigKey& key, const EventMetric& metric,
                                         const int conditionIndex,
                                         const sp<ConditionWizard>& wizard,
                                         const int64_t startTimeNs)
    : MetricProducer(metric.id(), key, startTimeNs, conditionIndex, wizard) {
                                         const int64_t startTimeNs,
                                         const unordered_map<int, shared_ptr<Activation>>&
                                                 eventActivationMap,
                                         const unordered_map<int, vector<shared_ptr<Activation>>>&
                                                 eventDeactivationMap)
    : MetricProducer(metric.id(), key, startTimeNs, conditionIndex, wizard, eventActivationMap,
                     eventDeactivationMap) {
    if (metric.links().size() > 0) {
        for (const auto& link : metric.links()) {
            Metric2Condition mc;
Loading