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

Commit c7e7661b authored by Ruchir Rastogi's avatar Ruchir Rastogi Committed by Android (Google) Code Review
Browse files

Merge "Delete StatsLogEventWrapper"

parents b03066d2 4e65e387
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
// limitations under the License.
//

// TODO(b/145815909): move StatsDimensionsValue.aidl and StatsLogEventWrapper.aidl here
// TODO(b/145815909): move StatsDimensionsValue.aidl here
filegroup {
    name: "statsd_aidl",
    srcs: [
+0 −4
Original line number Diff line number Diff line
@@ -16,10 +16,6 @@

#pragma once

#include <android/os/StatsLogEventWrapper.h>

using android::os::StatsLogEventWrapper;

namespace android {
namespace os {
namespace statsd {
+0 −64
Original line number Diff line number Diff line
@@ -71,70 +71,6 @@ LogEvent::LogEvent(const LogEvent& event) {
    mValues = event.mValues;
}

LogEvent::LogEvent(const StatsLogEventWrapper& statsLogEventWrapper, int workChainIndex) {
    mTagId = statsLogEventWrapper.getTagId();
    mLogdTimestampNs = statsLogEventWrapper.getWallClockTimeNs();
    mElapsedTimestampNs = statsLogEventWrapper.getElapsedRealTimeNs();
    mLogUid = 0;
    int workChainPosOffset = 0;
    if (workChainIndex != -1) {
        const WorkChain& wc = statsLogEventWrapper.getWorkChains()[workChainIndex];
        // chains are at field 1, level 2
        int depth = 2;
        for (int i = 0; i < (int)wc.uids.size(); i++) {
            int pos[] = {1, i + 1, 1};
            mValues.push_back(FieldValue(Field(mTagId, pos, depth), Value(wc.uids[i])));
            pos[2]++;
            mValues.push_back(FieldValue(Field(mTagId, pos, depth), Value(wc.tags[i])));
            mValues.back().mField.decorateLastPos(2);
        }
        mValues.back().mField.decorateLastPos(1);
        workChainPosOffset = 1;
    }
    for (int i = 0; i < (int)statsLogEventWrapper.getElements().size(); i++) {
        Field field(statsLogEventWrapper.getTagId(), getSimpleField(i + 1 + workChainPosOffset));
        switch (statsLogEventWrapper.getElements()[i].type) {
            case android::os::StatsLogValue::STATS_LOG_VALUE_TYPE::INT:
                mValues.push_back(
                        FieldValue(field, Value(statsLogEventWrapper.getElements()[i].int_value)));
                break;
            case android::os::StatsLogValue::STATS_LOG_VALUE_TYPE::LONG:
                mValues.push_back(
                        FieldValue(field, Value(statsLogEventWrapper.getElements()[i].long_value)));
                break;
            case android::os::StatsLogValue::STATS_LOG_VALUE_TYPE::FLOAT:
                mValues.push_back(FieldValue(
                        field, Value(statsLogEventWrapper.getElements()[i].float_value)));
                break;
            case android::os::StatsLogValue::STATS_LOG_VALUE_TYPE::DOUBLE:
                mValues.push_back(FieldValue(
                        field, Value(statsLogEventWrapper.getElements()[i].double_value)));
                break;
            case android::os::StatsLogValue::STATS_LOG_VALUE_TYPE::STRING:
                mValues.push_back(
                        FieldValue(field, Value(statsLogEventWrapper.getElements()[i].str_value)));
                break;
            case android::os::StatsLogValue::STATS_LOG_VALUE_TYPE::STORAGE:
                mValues.push_back(FieldValue(
                        field, Value(statsLogEventWrapper.getElements()[i].storage_value)));
                break;
            default:
                break;
        }
    }
}

void LogEvent::createLogEvents(const StatsLogEventWrapper& statsLogEventWrapper,
                               std::vector<std::shared_ptr<LogEvent>>& logEvents) {
    if (statsLogEventWrapper.getWorkChains().size() == 0) {
        logEvents.push_back(std::make_shared<LogEvent>(statsLogEventWrapper, -1));
    } else {
        for (size_t i = 0; i < statsLogEventWrapper.getWorkChains().size(); i++) {
            logEvents.push_back(std::make_shared<LogEvent>(statsLogEventWrapper, i));
        }
    }
}

LogEvent::LogEvent(int32_t tagId, int64_t wallClockTimestampNs, int64_t elapsedTimestampNs) {
    mLogdTimestampNs = wallClockTimestampNs;
    mElapsedTimestampNs = elapsedTimestampNs;
+0 −12
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@
#include "FieldValue.h"

#include <android/frameworks/stats/1.0/types.h>
#include <android/os/StatsLogEventWrapper.h>
#include <android/util/ProtoOutputStream.h>
#include <log/log_read.h>
#include <private/android_logger.h>
@@ -79,17 +78,6 @@ public:
     */
    explicit LogEvent(uint8_t* msg, uint32_t len, uint32_t uid, bool useNewSchema);

    /**
     * Creates LogEvent from StatsLogEventWrapper.
     */
    static void createLogEvents(const StatsLogEventWrapper& statsLogEventWrapper,
                                std::vector<std::shared_ptr<LogEvent>>& logEvents);

    /**
     * Construct one LogEvent from a StatsLogEventWrapper with the i-th work chain. -1 if no chain.
     */
    explicit LogEvent(const StatsLogEventWrapper& statsLogEventWrapper, int workChainIndex);

    /**
     * Constructs a LogEvent with synthetic data for testing. Must call init() before reading.
     */
+0 −162
Original line number Diff line number Diff line
@@ -665,168 +665,6 @@ TEST(LogEventTest, TestKeyValuePairsEvent) {
    EXPECT_EQ(1.1f, item16.mValue.float_value);
}

TEST(LogEventTest, TestStatsLogEventWrapperNoChain) {
    Parcel parcel;
    // tag id
    parcel.writeInt32(1);
    // elapsed realtime
    parcel.writeInt64(1111L);
    // wallclock time
    parcel.writeInt64(2222L);
    // no chain
    parcel.writeInt32(0);
    // 2 data
    parcel.writeInt32(2);
    // int 6
    parcel.writeInt32(1);
    parcel.writeInt32(6);
    // long 10
    parcel.writeInt32(2);
    parcel.writeInt64(10);
    parcel.setDataPosition(0);

    StatsLogEventWrapper statsLogEventWrapper;
    EXPECT_EQ(NO_ERROR, statsLogEventWrapper.readFromParcel(&parcel));
    EXPECT_EQ(1, statsLogEventWrapper.getTagId());
    EXPECT_EQ(1111L, statsLogEventWrapper.getElapsedRealTimeNs());
    EXPECT_EQ(2222L, statsLogEventWrapper.getWallClockTimeNs());
    EXPECT_EQ(0, statsLogEventWrapper.getWorkChains().size());
    EXPECT_EQ(2, statsLogEventWrapper.getElements().size());
    EXPECT_EQ(6, statsLogEventWrapper.getElements()[0].int_value);
    EXPECT_EQ(10L, statsLogEventWrapper.getElements()[1].long_value);
    LogEvent event(statsLogEventWrapper, -1);
    EXPECT_EQ(1, event.GetTagId());
    EXPECT_EQ(1111L, event.GetElapsedTimestampNs());
    EXPECT_EQ(2222L, event.GetLogdTimestampNs());
    EXPECT_EQ(2, event.size());
    EXPECT_EQ(6, event.getValues()[0].mValue.int_value);
    EXPECT_EQ(10, event.getValues()[1].mValue.long_value);
}

TEST(LogEventTest, TestStatsLogEventWrapperWithChain) {
    Parcel parcel;
    // tag id
    parcel.writeInt32(1);
    // elapsed realtime
    parcel.writeInt64(1111L);
    // wallclock time
    parcel.writeInt64(2222L);
    // 3 chains
    parcel.writeInt32(3);
    // chain1, 2 nodes (1, "tag1") (2, "tag2")
    parcel.writeInt32(2);
    parcel.writeInt32(1);
    parcel.writeString16(String16("tag1"));
    parcel.writeInt32(2);
    parcel.writeString16(String16("tag2"));
    // chain2, 1 node (3, "tag3")
    parcel.writeInt32(1);
    parcel.writeInt32(3);
    parcel.writeString16(String16("tag3"));
    // chain3, 2 nodes (4, "") (5, "")
    parcel.writeInt32(2);
    parcel.writeInt32(4);
    parcel.writeString16(String16(""));
    parcel.writeInt32(5);
    parcel.writeString16(String16(""));
    // 2 data
    parcel.writeInt32(2);
    // int 6
    parcel.writeInt32(1);
    parcel.writeInt32(6);
    // long 10
    parcel.writeInt32(2);
    parcel.writeInt64(10);
    parcel.setDataPosition(0);

    StatsLogEventWrapper statsLogEventWrapper;
    EXPECT_EQ(NO_ERROR, statsLogEventWrapper.readFromParcel(&parcel));
    EXPECT_EQ(1, statsLogEventWrapper.getTagId());
    EXPECT_EQ(1111L, statsLogEventWrapper.getElapsedRealTimeNs());
    EXPECT_EQ(2222L, statsLogEventWrapper.getWallClockTimeNs());
    EXPECT_EQ(3, statsLogEventWrapper.getWorkChains().size());
    EXPECT_EQ(2, statsLogEventWrapper.getWorkChains()[0].uids.size());
    EXPECT_EQ(1, statsLogEventWrapper.getWorkChains()[0].uids[0]);
    EXPECT_EQ(2, statsLogEventWrapper.getWorkChains()[0].uids[1]);
    EXPECT_EQ(2, statsLogEventWrapper.getWorkChains()[0].tags.size());
    EXPECT_EQ("tag1", statsLogEventWrapper.getWorkChains()[0].tags[0]);
    EXPECT_EQ("tag2", statsLogEventWrapper.getWorkChains()[0].tags[1]);
    EXPECT_EQ(1, statsLogEventWrapper.getWorkChains()[1].uids.size());
    EXPECT_EQ(3, statsLogEventWrapper.getWorkChains()[1].uids[0]);
    EXPECT_EQ(1, statsLogEventWrapper.getWorkChains()[1].tags.size());
    EXPECT_EQ("tag3", statsLogEventWrapper.getWorkChains()[1].tags[0]);
    EXPECT_EQ(2, statsLogEventWrapper.getElements().size());
    EXPECT_EQ(6, statsLogEventWrapper.getElements()[0].int_value);
    EXPECT_EQ(10L, statsLogEventWrapper.getElements()[1].long_value);
    EXPECT_EQ(2, statsLogEventWrapper.getWorkChains()[2].uids.size());
    EXPECT_EQ(4, statsLogEventWrapper.getWorkChains()[2].uids[0]);
    EXPECT_EQ(5, statsLogEventWrapper.getWorkChains()[2].uids[1]);
    EXPECT_EQ(2, statsLogEventWrapper.getWorkChains()[2].tags.size());
    EXPECT_EQ("", statsLogEventWrapper.getWorkChains()[2].tags[0]);
    EXPECT_EQ("", statsLogEventWrapper.getWorkChains()[2].tags[1]);

    LogEvent event(statsLogEventWrapper, -1);
    EXPECT_EQ(1, event.GetTagId());
    EXPECT_EQ(1111L, event.GetElapsedTimestampNs());
    EXPECT_EQ(2222L, event.GetLogdTimestampNs());
    EXPECT_EQ(2, event.size());
    EXPECT_EQ(6, event.getValues()[0].mValue.int_value);
    EXPECT_EQ(10, event.getValues()[1].mValue.long_value);

    LogEvent event1(statsLogEventWrapper, 0);

    EXPECT_EQ(1, event1.GetTagId());
    EXPECT_EQ(1111L, event1.GetElapsedTimestampNs());
    EXPECT_EQ(2222L, event1.GetLogdTimestampNs());
    EXPECT_EQ(6, event1.size());
    EXPECT_EQ(1, event1.getValues()[0].mValue.int_value);
    EXPECT_EQ(0x2010101, event1.getValues()[0].mField.getField());
    EXPECT_EQ("tag1", event1.getValues()[1].mValue.str_value);
    EXPECT_EQ(0x2010182, event1.getValues()[1].mField.getField());
    EXPECT_EQ(2, event1.getValues()[2].mValue.int_value);
    EXPECT_EQ(0x2010201, event1.getValues()[2].mField.getField());
    EXPECT_EQ("tag2", event1.getValues()[3].mValue.str_value);
    EXPECT_EQ(0x2018282, event1.getValues()[3].mField.getField());
    EXPECT_EQ(6, event1.getValues()[4].mValue.int_value);
    EXPECT_EQ(0x20000, event1.getValues()[4].mField.getField());
    EXPECT_EQ(10, event1.getValues()[5].mValue.long_value);
    EXPECT_EQ(0x30000, event1.getValues()[5].mField.getField());

    LogEvent event2(statsLogEventWrapper, 1);

    EXPECT_EQ(1, event2.GetTagId());
    EXPECT_EQ(1111L, event2.GetElapsedTimestampNs());
    EXPECT_EQ(2222L, event2.GetLogdTimestampNs());
    EXPECT_EQ(4, event2.size());
    EXPECT_EQ(3, event2.getValues()[0].mValue.int_value);
    EXPECT_EQ(0x2010101, event2.getValues()[0].mField.getField());
    EXPECT_EQ("tag3", event2.getValues()[1].mValue.str_value);
    EXPECT_EQ(0x2018182, event2.getValues()[1].mField.getField());
    EXPECT_EQ(6, event2.getValues()[2].mValue.int_value);
    EXPECT_EQ(0x20000, event2.getValues()[2].mField.getField());
    EXPECT_EQ(10, event2.getValues()[3].mValue.long_value);
    EXPECT_EQ(0x30000, event2.getValues()[3].mField.getField());

    LogEvent event3(statsLogEventWrapper, 2);

    EXPECT_EQ(1, event3.GetTagId());
    EXPECT_EQ(1111L, event3.GetElapsedTimestampNs());
    EXPECT_EQ(2222L, event3.GetLogdTimestampNs());
    EXPECT_EQ(6, event3.size());
    EXPECT_EQ(4, event3.getValues()[0].mValue.int_value);
    EXPECT_EQ(0x2010101, event3.getValues()[0].mField.getField());
    EXPECT_EQ("", event3.getValues()[1].mValue.str_value);
    EXPECT_EQ(0x2010182, event3.getValues()[1].mField.getField());
    EXPECT_EQ(5, event3.getValues()[2].mValue.int_value);
    EXPECT_EQ(0x2010201, event3.getValues()[2].mField.getField());
    EXPECT_EQ("", event3.getValues()[3].mValue.str_value);
    EXPECT_EQ(0x2018282, event3.getValues()[3].mField.getField());
    EXPECT_EQ(6, event3.getValues()[4].mValue.int_value);
    EXPECT_EQ(0x20000, event3.getValues()[4].mField.getField());
    EXPECT_EQ(10, event3.getValues()[5].mValue.long_value);
    EXPECT_EQ(0x30000, event3.getValues()[5].mField.getField());
}

TEST(LogEventTest, TestBinaryFieldAtom) {
    Atom launcherAtom;
    auto launcher_event = launcherAtom.mutable_launcher_event();
Loading