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

Commit c66080c3 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Don't create StateTrackers for whitelisted atoms" into rvc-dev am:...

Merge "Don't create StateTrackers for whitelisted atoms" into rvc-dev am: c20fcfee am: 6090c549 am: b50522fa

Change-Id: I99923762419fb58d33c87351f8ec95d515c8f6cd
parents d56c89a7 b50522fa
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -442,7 +442,7 @@ protected:
    bool mIsActive;
    bool mIsActive;


    // The slice_by_state atom ids defined in statsd_config.
    // The slice_by_state atom ids defined in statsd_config.
    std::vector<int32_t> mSlicedStateAtoms;
    const std::vector<int32_t> mSlicedStateAtoms;


    // Maps atom ids and state values to group_ids (<atom_id, <value, group_id>>).
    // Maps atom ids and state values to group_ids (<atom_id, <value, group_id>>).
    const std::unordered_map<int32_t, std::unordered_map<int, int64_t>> mStateGroupMap;
    const std::unordered_map<int32_t, std::unordered_map<int, int64_t>> mStateGroupMap;
+10 −1
Original line number Original line Diff line number Diff line
@@ -791,10 +791,19 @@ bool initMetrics(const ConfigKey& key, const StatsdConfig& config, const int64_t
        }
        }
        noReportMetricIds.insert(no_report_metric);
        noReportMetricIds.insert(no_report_metric);
    }
    }

    const set<int> whitelistedAtomIds(config.whitelisted_atom_ids().begin(),
                                      config.whitelisted_atom_ids().end());
    for (const auto& it : allMetricProducers) {
    for (const auto& it : allMetricProducers) {
        // Register metrics to StateTrackers
        // Register metrics to StateTrackers
        for (int atomId : it->getSlicedStateAtoms()) {
        for (int atomId : it->getSlicedStateAtoms()) {
            // Register listener for non-whitelisted atoms only. Using whitelisted atom as a sliced
            // state atom is not allowed.
            if (whitelistedAtomIds.find(atomId) == whitelistedAtomIds.end()) {
                StateManager::getInstance().registerListener(atomId, it);
                StateManager::getInstance().registerListener(atomId, it);
            } else {
                return false;
            }
        }
        }
    }
    }
    return true;
    return true;
+29 −0
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@
#include "src/metrics/MetricProducer.h"
#include "src/metrics/MetricProducer.h"
#include "src/metrics/ValueMetricProducer.h"
#include "src/metrics/ValueMetricProducer.h"
#include "src/metrics/metrics_manager_util.h"
#include "src/metrics/metrics_manager_util.h"
#include "src/state/StateManager.h"
#include "statsd_test_util.h"
#include "statsd_test_util.h"


using namespace testing;
using namespace testing;
@@ -615,6 +616,34 @@ TEST(MetricsManagerTest, TestCheckLogCredentialsWhitelistedAtom) {
    EXPECT_TRUE(metricsManager.checkLogCredentials(event));
    EXPECT_TRUE(metricsManager.checkLogCredentials(event));
}
}


TEST(MetricsManagerTest, TestWhitelistedAtomStateTracker) {
    sp<UidMap> uidMap;
    sp<StatsPullerManager> pullerManager = new StatsPullerManager();
    sp<AlarmMonitor> anomalyAlarmMonitor;
    sp<AlarmMonitor> periodicAlarmMonitor;

    StatsdConfig config = buildGoodConfig();
    config.add_allowed_log_source("AID_SYSTEM");
    config.add_whitelisted_atom_ids(3);
    config.add_whitelisted_atom_ids(4);

    State state;
    state.set_id(1);
    state.set_atom_id(3);

    *config.add_state() = state;

    config.mutable_count_metric(0)->add_slice_by_state(state.id());

    StateManager::getInstance().clear();

    MetricsManager metricsManager(kConfigKey, config, timeBaseSec, timeBaseSec, uidMap,
                                  pullerManager, anomalyAlarmMonitor, periodicAlarmMonitor);

    EXPECT_EQ(0, StateManager::getInstance().getStateTrackersCount());
    EXPECT_FALSE(metricsManager.isConfigValid());
}

}  // namespace statsd
}  // namespace statsd
}  // namespace os
}  // namespace os
}  // namespace android
}  // namespace android