Loading cmds/statsd/src/external/StatsPullerManager.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -252,9 +252,13 @@ void StatsPullerManager::RegisterPullUidProvider(const ConfigKey& configKey, mPullUidProviders[configKey] = provider; } void StatsPullerManager::UnregisterPullUidProvider(const ConfigKey& configKey) { void StatsPullerManager::UnregisterPullUidProvider(const ConfigKey& configKey, wp<PullUidProvider> provider) { std::lock_guard<std::mutex> _l(mLock); mPullUidProviders.erase(configKey); const auto& it = mPullUidProviders.find(configKey); if (it != mPullUidProviders.end() && it->second == provider) { mPullUidProviders.erase(it); } } void StatsPullerManager::OnAlarmFired(int64_t elapsedTimeNs) { Loading cmds/statsd/src/external/StatsPullerManager.h +5 −2 Original line number Diff line number Diff line Loading @@ -78,11 +78,12 @@ public: wp<PullDataReceiver> receiver); // Registers a pull uid provider for the config key. When pulling atoms, it will be used to // determine which atoms to pull from. // determine which uids to pull from. virtual void RegisterPullUidProvider(const ConfigKey& configKey, wp<PullUidProvider> provider); // Unregister a pull uid provider. virtual void UnregisterPullUidProvider(const ConfigKey& configKey); virtual void UnregisterPullUidProvider(const ConfigKey& configKey, wp<PullUidProvider> provider); // Verify if we know how to pull for this matcher bool PullerForMatcherExists(int tagId) const; Loading Loading @@ -180,6 +181,8 @@ private: FRIEND_TEST(ValueMetricE2eTest, TestPulledEvents); FRIEND_TEST(ValueMetricE2eTest, TestPulledEvents_LateAlarm); FRIEND_TEST(ValueMetricE2eTest, TestPulledEvents_WithActivation); FRIEND_TEST(StatsLogProcessorTest, TestPullUidProviderSetOnConfigUpdate); }; } // namespace statsd Loading cmds/statsd/src/metrics/MetricsManager.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -189,7 +189,7 @@ MetricsManager::~MetricsManager() { StateManager::getInstance().unregisterListener(atomId, it); } } mPullerManager->UnregisterPullUidProvider(mConfigKey); mPullerManager->UnregisterPullUidProvider(mConfigKey, this); VLOG("~MetricsManager()"); } Loading cmds/statsd/tests/MetricsManager_test.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -528,7 +528,7 @@ TEST(MetricsManagerTest, TestLogSources) { })); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); EXPECT_CALL(*pullerManager, RegisterPullUidProvider(kConfigKey, _)).Times(1); EXPECT_CALL(*pullerManager, UnregisterPullUidProvider(kConfigKey)).Times(1); EXPECT_CALL(*pullerManager, UnregisterPullUidProvider(kConfigKey, _)).Times(1); sp<AlarmMonitor> anomalyAlarmMonitor; sp<AlarmMonitor> periodicAlarmMonitor; Loading cmds/statsd/tests/StatsLogProcessor_test.cpp +23 −0 Original line number Diff line number Diff line Loading @@ -301,6 +301,29 @@ TEST(StatsLogProcessorTest, TestOnDumpReportEraseData) { EXPECT_TRUE(noData); } TEST(StatsLogProcessorTest, TestPullUidProviderSetOnConfigUpdate) { // Setup simple config key corresponding to empty config. sp<UidMap> m = new UidMap(); sp<StatsPullerManager> pullerManager = new StatsPullerManager(); sp<AlarmMonitor> anomalyAlarmMonitor; sp<AlarmMonitor> subscriberAlarmMonitor; StatsLogProcessor p( m, pullerManager, anomalyAlarmMonitor, subscriberAlarmMonitor, 0, [](const ConfigKey& key) { return true; }, [](const int&, const vector<int64_t>&) { return true; }); ConfigKey key(3, 4); StatsdConfig config = MakeConfig(false); p.OnConfigUpdated(0, key, config); EXPECT_NE(pullerManager->mPullUidProviders.find(key), pullerManager->mPullUidProviders.end()); config.add_default_pull_packages("AID_STATSD"); p.OnConfigUpdated(5, key, config); EXPECT_NE(pullerManager->mPullUidProviders.find(key), pullerManager->mPullUidProviders.end()); p.OnConfigRemoved(key); EXPECT_EQ(pullerManager->mPullUidProviders.find(key), pullerManager->mPullUidProviders.end()); } TEST(StatsLogProcessorTest, TestActiveConfigMetricDiskWriteRead) { int uid = 1111; Loading Loading
cmds/statsd/src/external/StatsPullerManager.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -252,9 +252,13 @@ void StatsPullerManager::RegisterPullUidProvider(const ConfigKey& configKey, mPullUidProviders[configKey] = provider; } void StatsPullerManager::UnregisterPullUidProvider(const ConfigKey& configKey) { void StatsPullerManager::UnregisterPullUidProvider(const ConfigKey& configKey, wp<PullUidProvider> provider) { std::lock_guard<std::mutex> _l(mLock); mPullUidProviders.erase(configKey); const auto& it = mPullUidProviders.find(configKey); if (it != mPullUidProviders.end() && it->second == provider) { mPullUidProviders.erase(it); } } void StatsPullerManager::OnAlarmFired(int64_t elapsedTimeNs) { Loading
cmds/statsd/src/external/StatsPullerManager.h +5 −2 Original line number Diff line number Diff line Loading @@ -78,11 +78,12 @@ public: wp<PullDataReceiver> receiver); // Registers a pull uid provider for the config key. When pulling atoms, it will be used to // determine which atoms to pull from. // determine which uids to pull from. virtual void RegisterPullUidProvider(const ConfigKey& configKey, wp<PullUidProvider> provider); // Unregister a pull uid provider. virtual void UnregisterPullUidProvider(const ConfigKey& configKey); virtual void UnregisterPullUidProvider(const ConfigKey& configKey, wp<PullUidProvider> provider); // Verify if we know how to pull for this matcher bool PullerForMatcherExists(int tagId) const; Loading Loading @@ -180,6 +181,8 @@ private: FRIEND_TEST(ValueMetricE2eTest, TestPulledEvents); FRIEND_TEST(ValueMetricE2eTest, TestPulledEvents_LateAlarm); FRIEND_TEST(ValueMetricE2eTest, TestPulledEvents_WithActivation); FRIEND_TEST(StatsLogProcessorTest, TestPullUidProviderSetOnConfigUpdate); }; } // namespace statsd Loading
cmds/statsd/src/metrics/MetricsManager.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -189,7 +189,7 @@ MetricsManager::~MetricsManager() { StateManager::getInstance().unregisterListener(atomId, it); } } mPullerManager->UnregisterPullUidProvider(mConfigKey); mPullerManager->UnregisterPullUidProvider(mConfigKey, this); VLOG("~MetricsManager()"); } Loading
cmds/statsd/tests/MetricsManager_test.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -528,7 +528,7 @@ TEST(MetricsManagerTest, TestLogSources) { })); sp<MockStatsPullerManager> pullerManager = new StrictMock<MockStatsPullerManager>(); EXPECT_CALL(*pullerManager, RegisterPullUidProvider(kConfigKey, _)).Times(1); EXPECT_CALL(*pullerManager, UnregisterPullUidProvider(kConfigKey)).Times(1); EXPECT_CALL(*pullerManager, UnregisterPullUidProvider(kConfigKey, _)).Times(1); sp<AlarmMonitor> anomalyAlarmMonitor; sp<AlarmMonitor> periodicAlarmMonitor; Loading
cmds/statsd/tests/StatsLogProcessor_test.cpp +23 −0 Original line number Diff line number Diff line Loading @@ -301,6 +301,29 @@ TEST(StatsLogProcessorTest, TestOnDumpReportEraseData) { EXPECT_TRUE(noData); } TEST(StatsLogProcessorTest, TestPullUidProviderSetOnConfigUpdate) { // Setup simple config key corresponding to empty config. sp<UidMap> m = new UidMap(); sp<StatsPullerManager> pullerManager = new StatsPullerManager(); sp<AlarmMonitor> anomalyAlarmMonitor; sp<AlarmMonitor> subscriberAlarmMonitor; StatsLogProcessor p( m, pullerManager, anomalyAlarmMonitor, subscriberAlarmMonitor, 0, [](const ConfigKey& key) { return true; }, [](const int&, const vector<int64_t>&) { return true; }); ConfigKey key(3, 4); StatsdConfig config = MakeConfig(false); p.OnConfigUpdated(0, key, config); EXPECT_NE(pullerManager->mPullUidProviders.find(key), pullerManager->mPullUidProviders.end()); config.add_default_pull_packages("AID_STATSD"); p.OnConfigUpdated(5, key, config); EXPECT_NE(pullerManager->mPullUidProviders.find(key), pullerManager->mPullUidProviders.end()); p.OnConfigRemoved(key); EXPECT_EQ(pullerManager->mPullUidProviders.find(key), pullerManager->mPullUidProviders.end()); } TEST(StatsLogProcessorTest, TestActiveConfigMetricDiskWriteRead) { int uid = 1111; Loading