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

Commit 93fe3a34 authored by Yao Chen's avatar Yao Chen
Browse files

Add unit tests for CountMetricProducer, EventMetricProducer

And other miscellaneous fixes.
+ clang-format
+ 2 bug fixes, one in dump-report command, one in ResourcePowerManagerPuller

Test: statsd_test

Change-Id: Ibd164d948ad62adcc529d813df1210781e38be47
parent d7f98747
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -157,8 +157,10 @@ LOCAL_SRC_FILES := \
    tests/LogReader_test.cpp \
    tests/MetricsManager_test.cpp \
    tests/UidMap_test.cpp \
    tests/OringDurationTracker_test.cpp \
    tests/MaxDurationTracker_test.cpp
    tests/metrics/OringDurationTracker_test.cpp \
    tests/metrics/MaxDurationTracker_test.cpp \
    tests/metrics/CountMetricProducer_test.cpp \
    tests/metrics/EventMetricProducer_test.cpp


LOCAL_STATIC_LIBRARIES := \
+1 −1
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ ConfigMetricsReport StatsLogProcessor::onDumpReport(const ConfigKey& key) {
        *dest = m;
    }
    auto temp = mUidMap->getOutput(key);
    report.set_allocated_uid_map(&temp);
    report.mutable_uid_map()->Swap(&temp);
    return report;
}

+11 −7
Original line number Diff line number Diff line
@@ -83,28 +83,31 @@ bool ResourcePowerManagerPuller::Pull(const int tagId, vector<shared_ptr<LogEven
        return false;
    }

    uint64_t timestamp = time(nullptr) * NS_PER_SEC;

    data->clear();
    Return<void> ret = gPowerHalV1_0->getPlatformLowPowerStats(
            [&data](hidl_vec<PowerStatePlatformSleepState> states, Status status) {
            [&data, timestamp](hidl_vec<PowerStatePlatformSleepState> states, Status status) {

                if (status != Status::SUCCESS) return;

                for (size_t i = 0; i < states.size(); i++) {
                    const PowerStatePlatformSleepState& state = states[i];

                    auto statePtr = make_shared<LogEvent>(power_state_platform_sleep_state_tag);
                    auto statePtr =
                            make_shared<LogEvent>(power_state_platform_sleep_state_tag, timestamp);
                    auto elemList = statePtr->GetAndroidLogEventList();
                    *elemList << state.name;
                    *elemList << state.residencyInMsecSinceBoot;
                    *elemList << state.totalTransitions;
                    *elemList << state.supportedOnlyInSuspend;
                    statePtr->init();
                    data->push_back(statePtr);

                    VLOG("powerstate: %s, %lld, %lld, %d", state.name.c_str(),
                         (long long)state.residencyInMsecSinceBoot,
                         (long long)state.totalTransitions, state.supportedOnlyInSuspend ? 1 : 0);
                    for (auto voter : state.voters) {
                        auto voterPtr = make_shared<LogEvent>(power_state_voter_tag);
                        auto voterPtr = make_shared<LogEvent>(power_state_voter_tag, timestamp);
                        auto elemList = voterPtr->GetAndroidLogEventList();
                        *elemList << state.name;
                        *elemList << voter.name;
@@ -128,7 +131,7 @@ bool ResourcePowerManagerPuller::Pull(const int tagId, vector<shared_ptr<LogEven
            android::hardware::power::V1_1::IPower::castFrom(gPowerHalV1_0);
    if (gPowerHal_1_1 != nullptr) {
        ret = gPowerHal_1_1->getSubsystemLowPowerStats(
                [&data](hidl_vec<PowerStateSubsystem> subsystems, Status status) {
                [&data, timestamp](hidl_vec<PowerStateSubsystem> subsystems, Status status) {

                    if (status != Status::SUCCESS) return;

@@ -137,8 +140,8 @@ bool ResourcePowerManagerPuller::Pull(const int tagId, vector<shared_ptr<LogEven
                            const PowerStateSubsystem& subsystem = subsystems[i];
                            for (size_t j = 0; j < subsystem.states.size(); j++) {
                                const PowerStateSubsystemSleepState& state = subsystem.states[j];
                                auto subsystemStatePtr =
                                        make_shared<LogEvent>(power_state_subsystem_state_tag);
                                auto subsystemStatePtr = make_shared<LogEvent>(
                                        power_state_subsystem_state_tag, timestamp);
                                auto elemList = subsystemStatePtr->GetAndroidLogEventList();
                                *elemList << subsystem.name;
                                *elemList << state.name;
@@ -146,6 +149,7 @@ bool ResourcePowerManagerPuller::Pull(const int tagId, vector<shared_ptr<LogEven
                                *elemList << state.totalTransitions;
                                *elemList << state.lastEntryTimestampMs;
                                *elemList << state.supportedOnlyInSuspend;
                                subsystemStatePtr->init();
                                data->push_back(subsystemStatePtr);
                                VLOG("subsystemstate: %s, %s, %lld, %lld, %lld",
                                     subsystem.name.c_str(), state.name.c_str(),
+30 −34
Original line number Diff line number Diff line
@@ -30,11 +30,11 @@

#include <iostream>

using std::make_shared;
using std::map;
using std::shared_ptr;
using std::string;
using std::vector;
using std::make_shared;
using std::shared_ptr;

namespace android {
namespace os {
@@ -42,26 +42,21 @@ namespace statsd {

StatsPullerManager::StatsPullerManager()
    : mCurrentPullingInterval(LONG_MAX), mPullStartTimeMs(get_pull_start_time_ms()) {
    shared_ptr<StatsPuller> statsCompanionServicePuller = make_shared<StatsCompanionServicePuller>();
    shared_ptr <StatsPuller>
        resourcePowerManagerPuller = make_shared<ResourcePowerManagerPuller>();

    mPullers.insert({android::util::KERNEL_WAKELOCK_PULLED,
                     statsCompanionServicePuller});
    mPullers.insert({android::util::WIFI_BYTES_TRANSFERRED,
                     statsCompanionServicePuller});
    mPullers.insert({android::util::MOBILE_BYTES_TRANSFERRED,
                     statsCompanionServicePuller});
    mPullers.insert({android::util::WIFI_BYTES_TRANSFERRED_BY_FG_BG,
                     statsCompanionServicePuller});
    mPullers.insert({android::util::MOBILE_BYTES_TRANSFERRED_BY_FG_BG,
                     statsCompanionServicePuller});
    mPullers.insert({android::util::POWER_STATE_PLATFORM_SLEEP_STATE_PULLED,
                     resourcePowerManagerPuller});
    mPullers.insert({android::util::POWER_STATE_VOTER_PULLED,
                     resourcePowerManagerPuller});
    mPullers.insert({android::util::POWER_STATE_SUBSYSTEM_SLEEP_STATE_PULLED,
                     resourcePowerManagerPuller});
    shared_ptr<StatsPuller> statsCompanionServicePuller =
            make_shared<StatsCompanionServicePuller>();
    shared_ptr<StatsPuller> resourcePowerManagerPuller = make_shared<ResourcePowerManagerPuller>();

    mPullers.insert({android::util::KERNEL_WAKELOCK_PULLED, statsCompanionServicePuller});
    mPullers.insert({android::util::WIFI_BYTES_TRANSFERRED, statsCompanionServicePuller});
    mPullers.insert({android::util::MOBILE_BYTES_TRANSFERRED, statsCompanionServicePuller});
    mPullers.insert({android::util::WIFI_BYTES_TRANSFERRED_BY_FG_BG, statsCompanionServicePuller});
    mPullers.insert(
            {android::util::MOBILE_BYTES_TRANSFERRED_BY_FG_BG, statsCompanionServicePuller});
    mPullers.insert(
            {android::util::POWER_STATE_PLATFORM_SLEEP_STATE_PULLED, resourcePowerManagerPuller});
    mPullers.insert({android::util::POWER_STATE_VOTER_PULLED, resourcePowerManagerPuller});
    mPullers.insert(
            {android::util::POWER_STATE_SUBSYSTEM_SLEEP_STATE_PULLED, resourcePowerManagerPuller});

    mStatsCompanionService = StatsService::getStatsCompanionService();
}
@@ -91,7 +86,8 @@ long StatsPullerManager::get_pull_start_time_ms() {
    return time(nullptr) * 1000;
}

void StatsPullerManager::RegisterReceiver(int tagId, sp<PullDataReceiver> receiver, long intervalMs) {
void StatsPullerManager::RegisterReceiver(int tagId, sp<PullDataReceiver> receiver,
                                          long intervalMs) {
    AutoMutex _l(mReceiversLock);
    vector<ReceiverInfo>& receivers = mReceivers[tagId];
    for (auto it = receivers.begin(); it != receivers.end(); it++) {
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ LogEvent::LogEvent(log_msg& msg) : mList(msg) {
    init(msg.entry_v1.sec * NS_PER_SEC + msg.entry_v1.nsec, &mList);
}

LogEvent::LogEvent(int tag) : mList(tag) {
LogEvent::LogEvent(int tag, uint64_t timestampNs) : mList(tag), mTimestampNs(timestampNs) {
}

LogEvent::~LogEvent() {
Loading