Loading cmds/statsd/Android.bp +0 −3 Original line number Diff line number Diff line Loading @@ -253,9 +253,6 @@ cc_test { "tests/e2e/GaugeMetric_e2e_push_test.cpp", "tests/e2e/GaugeMetric_e2e_pull_test.cpp", "tests/e2e/ValueMetric_pull_e2e_test.cpp", "tests/e2e/DimensionInCondition_e2e_combination_AND_cond_test.cpp", "tests/e2e/DimensionInCondition_e2e_combination_OR_cond_test.cpp", "tests/e2e/DimensionInCondition_e2e_simple_cond_test.cpp", "tests/e2e/Anomaly_count_e2e_test.cpp", "tests/e2e/Anomaly_duration_sum_e2e_test.cpp", "tests/e2e/ConfigTtl_e2e_test.cpp", Loading cmds/statsd/src/condition/CombinationConditionTracker.cpp +2 −27 Original line number Diff line number Diff line Loading @@ -110,20 +110,14 @@ bool CombinationConditionTracker::init(const vector<Predicate>& allConditionConf void CombinationConditionTracker::isConditionMet( const ConditionKey& conditionParameters, const vector<sp<ConditionTracker>>& allConditions, const std::vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, const bool isPartialLink, vector<ConditionState>& conditionCache, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const { vector<ConditionState>& conditionCache) const { // So far, this is fine as there is at most one child having sliced output. for (const int childIndex : mChildren) { if (conditionCache[childIndex] == ConditionState::kNotEvaluated) { allConditions[childIndex]->isConditionMet(conditionParameters, allConditions, dimensionFields, isSubOutputDimensionFields, isPartialLink, conditionCache, dimensionsKeySet); conditionCache); } } conditionCache[mIndex] = Loading Loading @@ -178,25 +172,6 @@ void CombinationConditionTracker::evaluateCondition( } } ConditionState CombinationConditionTracker::getMetConditionDimension( const std::vector<sp<ConditionTracker>>& allConditions, const std::vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const { vector<ConditionState> conditionCache(allConditions.size(), ConditionState::kNotEvaluated); // So far, this is fine as there is at most one child having sliced output. for (const int childIndex : mChildren) { conditionCache[childIndex] = conditionCache[childIndex] | allConditions[childIndex]->getMetConditionDimension( allConditions, dimensionFields, isSubOutputDimensionFields, dimensionsKeySet); } evaluateCombinationCondition(mChildren, mLogicalOperation, conditionCache); if (conditionCache[mIndex] == ConditionState::kTrue && dimensionsKeySet.empty()) { dimensionsKeySet.insert(DEFAULT_DIMENSION_KEY); } return conditionCache[mIndex]; } bool CombinationConditionTracker::equalOutputDimensions( const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensions) const { Loading cmds/statsd/src/condition/CombinationConditionTracker.h +1 −10 Original line number Diff line number Diff line Loading @@ -43,17 +43,8 @@ public: void isConditionMet(const ConditionKey& conditionParameters, const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, const bool isPartialLink, std::vector<ConditionState>& conditionCache, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const override; ConditionState getMetConditionDimension( const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const override; std::vector<ConditionState>& conditionCache) const override; // Only one child predicate can have dimension. const std::set<HashableDimensionKey>* getChangedToTrueDimensions( Loading cmds/statsd/src/condition/ConditionTracker.h +1 −16 Original line number Diff line number Diff line Loading @@ -84,29 +84,14 @@ public: // condition. // [allConditions]: all condition trackers. This is needed because the condition evaluation is // done recursively // [dimensionFields]: the needed dimension fields which should be all or subset of the condition // tracker output dimension. // [isSubOutputDimensionFields]: true if the needed dimension fields which is strictly subset of // the condition tracker output dimension. // [isPartialLink]: true if the link specified by 'conditionParameters' contains all the fields // in the condition tracker output dimension. // [conditionCache]: the cache holding the condition evaluation values. // [dimensionsKeySet]: the dimensions where the sliced condition is true. For combination // condition, it assumes that only one child predicate is sliced. virtual void isConditionMet( const ConditionKey& conditionParameters, const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, const bool isPartialLink, std::vector<ConditionState>& conditionCache, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const = 0; virtual ConditionState getMetConditionDimension( const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const = 0; std::vector<ConditionState>& conditionCache) const = 0; // return the list of LogMatchingTracker index that this ConditionTracker uses. virtual const std::set<int>& getLogTrackerIndex() const { Loading cmds/statsd/src/condition/ConditionWizard.cpp +4 −16 Original line number Diff line number Diff line Loading @@ -25,27 +25,15 @@ using std::string; using std::vector; ConditionState ConditionWizard::query(const int index, const ConditionKey& parameters, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, const bool isPartialLink, std::unordered_set<HashableDimensionKey>* dimensionKeySet) { const bool isPartialLink) { vector<ConditionState> cache(mAllConditions.size(), ConditionState::kNotEvaluated); mAllConditions[index]->isConditionMet( parameters, mAllConditions, dimensionFields, isSubOutputDimensionFields, isPartialLink, cache, *dimensionKeySet); parameters, mAllConditions, isPartialLink, cache); return cache[index]; } ConditionState ConditionWizard::getMetConditionDimension( const int index, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, std::unordered_set<HashableDimensionKey>* dimensionsKeySet) const { return mAllConditions[index]->getMetConditionDimension(mAllConditions, dimensionFields, isSubOutputDimensionFields, *dimensionsKeySet); } const set<HashableDimensionKey>* ConditionWizard::getChangedToTrueDimensions( const int index) const { return mAllConditions[index]->getChangedToTrueDimensions(mAllConditions); Loading Loading
cmds/statsd/Android.bp +0 −3 Original line number Diff line number Diff line Loading @@ -253,9 +253,6 @@ cc_test { "tests/e2e/GaugeMetric_e2e_push_test.cpp", "tests/e2e/GaugeMetric_e2e_pull_test.cpp", "tests/e2e/ValueMetric_pull_e2e_test.cpp", "tests/e2e/DimensionInCondition_e2e_combination_AND_cond_test.cpp", "tests/e2e/DimensionInCondition_e2e_combination_OR_cond_test.cpp", "tests/e2e/DimensionInCondition_e2e_simple_cond_test.cpp", "tests/e2e/Anomaly_count_e2e_test.cpp", "tests/e2e/Anomaly_duration_sum_e2e_test.cpp", "tests/e2e/ConfigTtl_e2e_test.cpp", Loading
cmds/statsd/src/condition/CombinationConditionTracker.cpp +2 −27 Original line number Diff line number Diff line Loading @@ -110,20 +110,14 @@ bool CombinationConditionTracker::init(const vector<Predicate>& allConditionConf void CombinationConditionTracker::isConditionMet( const ConditionKey& conditionParameters, const vector<sp<ConditionTracker>>& allConditions, const std::vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, const bool isPartialLink, vector<ConditionState>& conditionCache, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const { vector<ConditionState>& conditionCache) const { // So far, this is fine as there is at most one child having sliced output. for (const int childIndex : mChildren) { if (conditionCache[childIndex] == ConditionState::kNotEvaluated) { allConditions[childIndex]->isConditionMet(conditionParameters, allConditions, dimensionFields, isSubOutputDimensionFields, isPartialLink, conditionCache, dimensionsKeySet); conditionCache); } } conditionCache[mIndex] = Loading Loading @@ -178,25 +172,6 @@ void CombinationConditionTracker::evaluateCondition( } } ConditionState CombinationConditionTracker::getMetConditionDimension( const std::vector<sp<ConditionTracker>>& allConditions, const std::vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const { vector<ConditionState> conditionCache(allConditions.size(), ConditionState::kNotEvaluated); // So far, this is fine as there is at most one child having sliced output. for (const int childIndex : mChildren) { conditionCache[childIndex] = conditionCache[childIndex] | allConditions[childIndex]->getMetConditionDimension( allConditions, dimensionFields, isSubOutputDimensionFields, dimensionsKeySet); } evaluateCombinationCondition(mChildren, mLogicalOperation, conditionCache); if (conditionCache[mIndex] == ConditionState::kTrue && dimensionsKeySet.empty()) { dimensionsKeySet.insert(DEFAULT_DIMENSION_KEY); } return conditionCache[mIndex]; } bool CombinationConditionTracker::equalOutputDimensions( const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensions) const { Loading
cmds/statsd/src/condition/CombinationConditionTracker.h +1 −10 Original line number Diff line number Diff line Loading @@ -43,17 +43,8 @@ public: void isConditionMet(const ConditionKey& conditionParameters, const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, const bool isPartialLink, std::vector<ConditionState>& conditionCache, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const override; ConditionState getMetConditionDimension( const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const override; std::vector<ConditionState>& conditionCache) const override; // Only one child predicate can have dimension. const std::set<HashableDimensionKey>* getChangedToTrueDimensions( Loading
cmds/statsd/src/condition/ConditionTracker.h +1 −16 Original line number Diff line number Diff line Loading @@ -84,29 +84,14 @@ public: // condition. // [allConditions]: all condition trackers. This is needed because the condition evaluation is // done recursively // [dimensionFields]: the needed dimension fields which should be all or subset of the condition // tracker output dimension. // [isSubOutputDimensionFields]: true if the needed dimension fields which is strictly subset of // the condition tracker output dimension. // [isPartialLink]: true if the link specified by 'conditionParameters' contains all the fields // in the condition tracker output dimension. // [conditionCache]: the cache holding the condition evaluation values. // [dimensionsKeySet]: the dimensions where the sliced condition is true. For combination // condition, it assumes that only one child predicate is sliced. virtual void isConditionMet( const ConditionKey& conditionParameters, const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, const bool isPartialLink, std::vector<ConditionState>& conditionCache, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const = 0; virtual ConditionState getMetConditionDimension( const std::vector<sp<ConditionTracker>>& allConditions, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, std::unordered_set<HashableDimensionKey>& dimensionsKeySet) const = 0; std::vector<ConditionState>& conditionCache) const = 0; // return the list of LogMatchingTracker index that this ConditionTracker uses. virtual const std::set<int>& getLogTrackerIndex() const { Loading
cmds/statsd/src/condition/ConditionWizard.cpp +4 −16 Original line number Diff line number Diff line Loading @@ -25,27 +25,15 @@ using std::string; using std::vector; ConditionState ConditionWizard::query(const int index, const ConditionKey& parameters, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, const bool isPartialLink, std::unordered_set<HashableDimensionKey>* dimensionKeySet) { const bool isPartialLink) { vector<ConditionState> cache(mAllConditions.size(), ConditionState::kNotEvaluated); mAllConditions[index]->isConditionMet( parameters, mAllConditions, dimensionFields, isSubOutputDimensionFields, isPartialLink, cache, *dimensionKeySet); parameters, mAllConditions, isPartialLink, cache); return cache[index]; } ConditionState ConditionWizard::getMetConditionDimension( const int index, const vector<Matcher>& dimensionFields, const bool isSubOutputDimensionFields, std::unordered_set<HashableDimensionKey>* dimensionsKeySet) const { return mAllConditions[index]->getMetConditionDimension(mAllConditions, dimensionFields, isSubOutputDimensionFields, *dimensionsKeySet); } const set<HashableDimensionKey>* ConditionWizard::getChangedToTrueDimensions( const int index) const { return mAllConditions[index]->getChangedToTrueDimensions(mAllConditions); Loading