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

Commit 15f6bbc2 authored by Yangster-mac's avatar Yangster-mac
Browse files

Flush the bucket when creating the metric producer.

Use int64 for value field.
E2e test for gauge/value metric.

BUG: b/74445671

Test: statsd test.
Change-Id: I823a0bade8f89834bdfb9cf48864852a47d7b63b
parent 4df92ef6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -205,6 +205,8 @@ LOCAL_SRC_FILES := \
    tests/e2e/Alarm_e2e_test.cpp \
    tests/e2e/Attribution_e2e_test.cpp \
    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 \
+2 −1
Original line number Diff line number Diff line
@@ -365,7 +365,8 @@ sp<StatsLogProcessor> CreateStatsLogProcessor(const long timeBaseSec, const Stat
    sp<AlarmMonitor> anomalyAlarmMonitor;
    sp<AlarmMonitor> periodicAlarmMonitor;
    sp<StatsLogProcessor> processor = new StatsLogProcessor(
        uidMap, anomalyAlarmMonitor, periodicAlarmMonitor, timeBaseSec, [](const ConfigKey&){});
        uidMap, anomalyAlarmMonitor, periodicAlarmMonitor, timeBaseSec * NS_PER_SEC,
        [](const ConfigKey&){});
    processor->OnConfigUpdated(timeBaseSec * NS_PER_SEC, key, config);
    return processor;
}
+7 −3
Original line number Diff line number Diff line
@@ -72,13 +72,13 @@ const int FIELD_ID_CURRENT_REPORT_WALL_CLOCK_NANOS = 6;
StatsLogProcessor::StatsLogProcessor(const sp<UidMap>& uidMap,
                                     const sp<AlarmMonitor>& anomalyAlarmMonitor,
                                     const sp<AlarmMonitor>& periodicAlarmMonitor,
                                     const long timeBaseSec,
                                     const int64_t timeBaseNs,
                                     const std::function<void(const ConfigKey&)>& sendBroadcast)
    : mUidMap(uidMap),
      mAnomalyAlarmMonitor(anomalyAlarmMonitor),
      mPeriodicAlarmMonitor(periodicAlarmMonitor),
      mSendBroadcast(sendBroadcast),
      mTimeBaseSec(timeBaseSec),
      mTimeBaseNs(timeBaseNs),
      mLastLogTimestamp(0) {
}

@@ -210,7 +210,7 @@ void StatsLogProcessor::OnConfigUpdatedLocked(
        const int64_t timestampNs, const ConfigKey& key, const StatsdConfig& config) {
    VLOG("Updated configuration for key %s", key.ToString().c_str());
    sp<MetricsManager> newMetricsManager =
        new MetricsManager(key, config, mTimeBaseSec, (timestampNs - 1) / NS_PER_SEC + 1, mUidMap,
        new MetricsManager(key, config, mTimeBaseNs, timestampNs, mUidMap,
                           mAnomalyAlarmMonitor, mPeriodicAlarmMonitor);
    auto it = mMetricsManagers.find(key);
    if (it != mMetricsManagers.end()) {
@@ -438,6 +438,10 @@ void StatsLogProcessor::WriteDataToDisk() {
    WriteDataToDiskLocked();
}

void StatsLogProcessor::informPullAlarmFired(const int64_t timestampNs) {
    mStatsPullerManager.OnAlarmFired(timestampNs);
}

}  // namespace statsd
}  // namespace os
}  // namespace android
+9 −2
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ class StatsLogProcessor : public ConfigListener {
public:
    StatsLogProcessor(const sp<UidMap>& uidMap, const sp<AlarmMonitor>& anomalyAlarmMonitor,
                      const sp<AlarmMonitor>& subscriberTriggerAlarmMonitor,
                      const long timeBaseSec,
                      const int64_t timeBaseNs,
                      const std::function<void(const ConfigKey&)>& sendBroadcast);
    virtual ~StatsLogProcessor();

@@ -70,6 +70,7 @@ public:

    void dumpStates(FILE* out, bool verbose);

    void informPullAlarmFired(const int64_t timestampNs);

private:
    // For testing only.
@@ -125,7 +126,7 @@ private:
    // to retrieve the stored data.
    std::function<void(const ConfigKey& key)> mSendBroadcast;

    const long mTimeBaseSec;
    const int64_t mTimeBaseNs;

    int64_t mLastLogTimestamp;

@@ -145,6 +146,12 @@ private:
    FRIEND_TEST(AttributionE2eTest, TestAttributionMatchAndSliceByFirstUid);
    FRIEND_TEST(AttributionE2eTest, TestAttributionMatchAndSliceByChain);
    FRIEND_TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent);
    FRIEND_TEST(GaugeMetricE2eTest, TestRandomSamplePulledEvents);
    FRIEND_TEST(GaugeMetricE2eTest, TestRandomSamplePulledEvent_LateAlarm);
    FRIEND_TEST(GaugeMetricE2eTest, TestAllConditionChangesSamplePulledEvents);
    FRIEND_TEST(ValueMetricE2eTest, TestPulledEvents);
    FRIEND_TEST(ValueMetricE2eTest, TestPulledEvents_LateAlarm);

    FRIEND_TEST(DimensionInConditionE2eTest, TestCreateCountMetric_NoLink_OR_CombinationCondition);
    FRIEND_TEST(DimensionInConditionE2eTest, TestCreateCountMetric_Link_OR_CombinationCondition);
    FRIEND_TEST(DimensionInConditionE2eTest, TestDurationMetric_NoLink_OR_CombinationCondition);
+2 −2
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ StatsService::StatsService(const sp<Looper>& handlerLooper)
    StatsPuller::SetUidMap(mUidMap);
    mConfigManager = new ConfigManager();
    mProcessor = new StatsLogProcessor(mUidMap, mAnomalyAlarmMonitor, mPeriodicAlarmMonitor,
                                       getElapsedRealtimeSec(), [this](const ConfigKey& key) {
                                       getElapsedRealtimeNs(), [this](const ConfigKey& key) {
        sp<IStatsCompanionService> sc = getStatsCompanionService();
        auto receiver = mConfigManager->GetConfigReceiver(key);
        if (sc == nullptr) {
@@ -745,7 +745,7 @@ Status StatsService::informPollAlarmFired() {
                                         "Only system uid can call informPollAlarmFired");
    }

    mStatsPullerManager.OnAlarmFired();
    mProcessor->informPullAlarmFired(getElapsedRealtimeNs());

    VLOG("StatsService::informPollAlarmFired succeeded");

Loading