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

Commit 0f6c1bcb authored by tsaichristine's avatar tsaichristine
Browse files

StateTracker handles active state changes

When a state change occurs, metrics should only make certain updates if
the metric is active. This is already handled in CountMetricProducer and
DurationMetricProducer. In ValueMetricProducer, we will return
immediately if the metric is not active during a state change.

Test: m statsd_test && adb sync data && adb shell
data/nativetest/statsd_test/statsd_test
Bug: b/153101724

Change-Id: Ib2a96600a0f1acec054638515d606716cf0ca6b6
parent 12416fba
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -187,8 +187,9 @@ void ValueMetricProducer::onStateChanged(int64_t eventTimeNs, int32_t atomId,
    VLOG("ValueMetric %lld onStateChanged time %lld, State %d, key %s, %d -> %d",
         (long long)mMetricId, (long long)eventTimeNs, atomId, primaryKey.toString().c_str(),
         oldState.mValue.int_value, newState.mValue.int_value);
    // If condition is not true, we do not need to pull for this state change.
    if (mCondition != ConditionState::kTrue) {
    // If condition is not true or metric is not active, we do not need to pull
    // for this state change.
    if (mCondition != ConditionState::kTrue || !mIsActive) {
        return;
    }

+4 −1
Original line number Diff line number Diff line
@@ -329,7 +329,10 @@ void OringDurationTracker::onConditionChanged(bool condition, const int64_t time

void OringDurationTracker::onStateChanged(const int64_t timestamp, const int32_t atomId,
                                          const FieldValue& newState) {
    // If no keys are being tracked, update the current state key and return.
    // Nothing needs to be done on a state change if we have not seen a start
    // event, the metric is currently not active, or condition is false.
    // For these cases, no keys are being tracked in mStarted, so update
    // the current state key and return.
    if (mStarted.empty()) {
        updateCurrentStateKey(atomId, newState);
        return;