Loading apex/statsd/aidl/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -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: [ Loading cmds/statsd/src/external/Perfetto.h +0 −4 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ #pragma once #include <android/os/StatsLogEventWrapper.h> using android::os::StatsLogEventWrapper; namespace android { namespace os { namespace statsd { Loading cmds/statsd/src/logd/LogEvent.cpp +0 −64 Original line number Diff line number Diff line Loading @@ -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; Loading cmds/statsd/src/logd/LogEvent.h +0 −12 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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. */ Loading cmds/statsd/tests/LogEvent_test.cpp +0 −162 Original line number Diff line number Diff line Loading @@ -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 Loading
apex/statsd/aidl/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -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: [ Loading
cmds/statsd/src/external/Perfetto.h +0 −4 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ #pragma once #include <android/os/StatsLogEventWrapper.h> using android::os::StatsLogEventWrapper; namespace android { namespace os { namespace statsd { Loading
cmds/statsd/src/logd/LogEvent.cpp +0 −64 Original line number Diff line number Diff line Loading @@ -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; Loading
cmds/statsd/src/logd/LogEvent.h +0 −12 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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. */ Loading
cmds/statsd/tests/LogEvent_test.cpp +0 −162 Original line number Diff line number Diff line Loading @@ -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