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

Commit 089ad6c0 authored by Christine Tsai's avatar Christine Tsai Committed by Android (Google) Code Review
Browse files

Merge "Rename old StateTracker"

parents ca5ede19 c46fbf97
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ cc_defaults {
        "src/condition/condition_util.cpp",
        "src/condition/SimpleConditionTracker.cpp",
        "src/condition/ConditionWizard.cpp",
        "src/condition/StateTracker.cpp",
        "src/condition/StateConditionTracker.cpp",
        "src/config/ConfigKey.cpp",
        "src/config/ConfigListener.cpp",
        "src/config/ConfigManager.cpp",
@@ -227,7 +227,7 @@ cc_test {
        "tests/FieldValue_test.cpp",
        "tests/condition/CombinationConditionTracker_test.cpp",
        "tests/condition/SimpleConditionTracker_test.cpp",
        "tests/condition/StateTracker_test.cpp",
        "tests/condition/StateConditionTracker_test.cpp",
        "tests/condition/ConditionTimer_test.cpp",
        "tests/metrics/OringDurationTracker_test.cpp",
        "tests/metrics/MaxDurationTracker_test.cpp",
+12 −12
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@
#define DEBUG false  // STOPSHIP if true
#include "Log.h"

#include "StateTracker.h"
#include "StateConditionTracker.h"
#include "guardrail/StatsdStats.h"

namespace android {
@@ -27,7 +27,7 @@ using std::string;
using std::unordered_set;
using std::vector;

StateTracker::StateTracker(const ConfigKey& key, const int64_t& id, const int index,
StateConditionTracker::StateConditionTracker(const ConfigKey& key, const int64_t& id, const int index,
                           const SimplePredicate& simplePredicate,
                           const unordered_map<int64_t, int>& trackerNameIndexMap,
                           const vector<Matcher> primaryKeys)
@@ -69,19 +69,19 @@ StateTracker::StateTracker(const ConfigKey& key, const int64_t& id, const int in
    mInitialized = true;
}

StateTracker::~StateTracker() {
    VLOG("~StateTracker()");
StateConditionTracker::~StateConditionTracker() {
    VLOG("~StateConditionTracker()");
}

bool StateTracker::init(const vector<Predicate>& allConditionConfig,
bool StateConditionTracker::init(const vector<Predicate>& allConditionConfig,
                        const vector<sp<ConditionTracker>>& allConditionTrackers,
                        const unordered_map<int64_t, int>& conditionIdIndexMap,
                        vector<bool>& stack) {
    return mInitialized;
}

void StateTracker::dumpState() {
    VLOG("StateTracker %lld DUMP:", (long long)mConditionId);
void StateConditionTracker::dumpState() {
    VLOG("StateConditionTracker %lld DUMP:", (long long)mConditionId);
    for (const auto& value : mSlicedState) {
        VLOG("\t%s -> %s", value.first.toString().c_str(), value.second.toString().c_str());
    }
@@ -95,7 +95,7 @@ void StateTracker::dumpState() {
    }
}

bool StateTracker::hitGuardRail(const HashableDimensionKey& newKey) {
bool StateConditionTracker::hitGuardRail(const HashableDimensionKey& newKey) {
    if (mSlicedState.find(newKey) != mSlicedState.end()) {
        // if the condition is not sliced or the key is not new, we are good!
        return false;
@@ -114,7 +114,7 @@ bool StateTracker::hitGuardRail(const HashableDimensionKey& newKey) {
    return false;
}

void StateTracker::evaluateCondition(const LogEvent& event,
void StateConditionTracker::evaluateCondition(const LogEvent& event,
                                     const vector<MatchingState>& eventMatcherValues,
                                     const vector<sp<ConditionTracker>>& mAllConditions,
                                     vector<ConditionState>& conditionCache,
@@ -135,7 +135,7 @@ void StateTracker::evaluateCondition(const LogEvent& event,
        return;
    }

    VLOG("StateTracker evaluate event %s", event.ToString().c_str());
    VLOG("StateConditionTracker evaluate event %s", event.ToString().c_str());

    // Primary key can exclusive fields must be simple fields. so there won't be more than
    // one keys matched.
@@ -151,7 +151,7 @@ void StateTracker::evaluateCondition(const LogEvent& event,
    }
    hitGuardRail(primaryKey);

    VLOG("StateTracker: key %s state %s", primaryKey.toString().c_str(), state.toString().c_str());
    VLOG("StateConditionTracker: key %s state %s", primaryKey.toString().c_str(), state.toString().c_str());

    auto it = mSlicedState.find(primaryKey);
    if (it == mSlicedState.end()) {
@@ -176,7 +176,7 @@ void StateTracker::evaluateCondition(const LogEvent& event,
    return;
}

void StateTracker::isConditionMet(
void StateConditionTracker::isConditionMet(
        const ConditionKey& conditionParameters, const vector<sp<ConditionTracker>>& allConditions,
        const bool isPartialLink,
        vector<ConditionState>& conditionCache) const {
+6 −6
Original line number Diff line number Diff line
@@ -25,14 +25,14 @@ namespace android {
namespace os {
namespace statsd {

class StateTracker : public virtual ConditionTracker {
class StateConditionTracker : public virtual ConditionTracker {
public:
    StateTracker(const ConfigKey& key, const int64_t& id, const int index,
    StateConditionTracker(const ConfigKey& key, const int64_t& id, const int index,
                 const SimplePredicate& simplePredicate,
                 const std::unordered_map<int64_t, int>& trackerNameIndexMap,
                 const vector<Matcher> primaryKeys);

    ~StateTracker();
    ~StateConditionTracker();

    bool init(const std::vector<Predicate>& allConditionConfig,
              const std::vector<sp<ConditionTracker>>& allConditionTrackers,
@@ -46,8 +46,8 @@ public:
                           std::vector<bool>& changedCache) override;

    /**
     * Note: dimensionFields will be ignored in StateTracker, because we demand metrics
     * must take the entire dimension fields from StateTracker. This is to make implementation
     * Note: dimensionFields will be ignored in StateConditionTracker, because we demand metrics
     * must take the entire dimension fields from StateConditionTracker. This is to make implementation
     * simple and efficient.
     *
     * For example: wakelock duration by uid process states:
@@ -109,7 +109,7 @@ private:
    // maps from [primary_key] to [primary_key, exclusive_state].
    std::unordered_map<HashableDimensionKey, HashableDimensionKey> mSlicedState;

    FRIEND_TEST(StateTrackerTest, TestStateChange);
    FRIEND_TEST(StateConditionTrackerTest, TestStateChange);
};

}  // namespace statsd
+6 −6
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@

#include "../condition/CombinationConditionTracker.h"
#include "../condition/SimpleConditionTracker.h"
#include "../condition/StateTracker.h"
#include "../condition/StateConditionTracker.h"
#include "../external/StatsPullerManager.h"
#include "../matchers/CombinationLogMatchingTracker.h"
#include "../matchers/SimpleLogMatchingTracker.h"
@@ -182,13 +182,13 @@ bool initLogTrackers(const StatsdConfig& config, const UidMap& uidMap,
}

/**
 * A StateTracker is built from a SimplePredicate which has only "start", and no "stop"
 * A StateConditionTracker is built from a SimplePredicate which has only "start", and no "stop"
 * or "stop_all". The start must be an atom matcher that matches a state atom. It must
 * have dimension, the dimension must be the state atom's primary fields plus exclusive state
 * field. For example, the StateTracker is used in tracking UidProcessState and ScreenState.
 * field. For example, the StateConditionTracker is used in tracking UidProcessState and ScreenState.
 *
 */
bool isStateTracker(const SimplePredicate& simplePredicate, vector<Matcher>* primaryKeys) {
bool isStateConditionTracker(const SimplePredicate& simplePredicate, vector<Matcher>* primaryKeys) {
    // 1. must not have "stop". must have "dimension"
    if (!simplePredicate.has_stop() && simplePredicate.has_dimensions()) {
        auto it = android::util::AtomsInfo::kStateAtomsFieldOptions.find(
@@ -240,8 +240,8 @@ bool initConditions(const ConfigKey& key, const StatsdConfig& config,
        switch (condition.contents_case()) {
            case Predicate::ContentsCase::kSimplePredicate: {
                vector<Matcher> primaryKeys;
                if (isStateTracker(condition.simple_predicate(), &primaryKeys)) {
                    allConditionTrackers.push_back(new StateTracker(key, condition.id(), index,
                if (isStateConditionTracker(condition.simple_predicate(), &primaryKeys)) {
                    allConditionTrackers.push_back(new StateConditionTracker(key, condition.id(), index,
                                                                    condition.simple_predicate(),
                                                                    logTrackerMap, primaryKeys));
                } else {
+1 −1
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ bool initStatsdConfig(const ConfigKey& key, const StatsdConfig& config, UidMap&
                      vector<int>& metricsWithActivation,
                      std::set<int64_t>& noReportMetricIds);

bool isStateTracker(const SimplePredicate& simplePredicate, std::vector<Matcher>* primaryKeys);
bool isStateConditionTracker(const SimplePredicate& simplePredicate, std::vector<Matcher>* primaryKeys);

}  // namespace statsd
}  // namespace os
Loading