summaryrefslogtreecommitdiff
path: root/cmds/statsd/tests/LogEvent_test.cpp
diff options
context:
space:
mode:
authorDivya Sharma <divyash@codeaurora.org>2018-02-27 08:32:05 -0800
committerDivya Sharma <divyash@codeaurora.org>2018-02-27 08:32:05 -0800
commit4e4914b22b779e6376bb00ae20636175b2a70d8c (patch)
treef4ebc5eae2c99e20aceefcc9ffc3de19782f0fbe /cmds/statsd/tests/LogEvent_test.cpp
parentdbed40a3cd31af821ea99c605664908d67df2747 (diff)
parented5d4d06907844e1c87a6ee17c4f2868a8cc6d56 (diff)
PPR1.180219.001_AOSP_Merge
Conflicts: core/res/res/values/config.xml core/res/res/values/symbols.xml packages/SystemUI/res/values/config.xml packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java telecomm/java/android/telecom/Call.java telecomm/java/android/telecom/Connection.java telecomm/java/android/telecom/ConnectionService.java Change-Id: I524d38a61608069028b3496a189118d8eff75f4b
Diffstat (limited to 'cmds/statsd/tests/LogEvent_test.cpp')
-rw-r--r--cmds/statsd/tests/LogEvent_test.cpp670
1 files changed, 132 insertions, 538 deletions
diff --git a/cmds/statsd/tests/LogEvent_test.cpp b/cmds/statsd/tests/LogEvent_test.cpp
index fd28460e8e01..b64921501275 100644
--- a/cmds/statsd/tests/LogEvent_test.cpp
+++ b/cmds/statsd/tests/LogEvent_test.cpp
@@ -22,548 +22,142 @@ namespace android {
namespace os {
namespace statsd {
-TEST(LogEventTest, testEmptyEvent) {
- const int32_t TAG_ID = 123;
- LogEvent event(TAG_ID, 0);
- event.init();
-
- DimensionsValue dimensionsValue;
- EXPECT_FALSE(event.GetSimpleAtomDimensionsValueProto(234, &dimensionsValue));
- FieldMatcher dimensions;
- dimensions.set_field(event.GetTagId());
- EXPECT_FALSE(event.GetAtomDimensionsValueProto(dimensions, &dimensionsValue));
-
- dimensions.add_child()->set_field(3);
- dimensions.mutable_child(0)->set_position(Position::FIRST);
- EXPECT_FALSE(event.GetAtomDimensionsValueProto(dimensions, &dimensionsValue));
-
- dimensions.mutable_child(0)->set_position(Position::ANY);
- EXPECT_FALSE(event.GetAtomDimensionsValueProto(dimensions, &dimensionsValue));
-
- dimensions.mutable_child(0)->set_position(Position::LAST);
- EXPECT_FALSE(event.GetAtomDimensionsValueProto(dimensions, &dimensionsValue));
+TEST(LogEventTest, TestLogParsing) {
+ LogEvent event1(1, 2000);
+
+ std::vector<AttributionNode> nodes;
+
+ AttributionNode node1;
+ node1.set_uid(1000);
+ node1.set_tag("tag1");
+ nodes.push_back(node1);
+
+ AttributionNode node2;
+ node2.set_uid(2000);
+ node2.set_tag("tag2");
+ nodes.push_back(node2);
+
+ event1.write(nodes);
+ event1.write("hello");
+ event1.write((int32_t)10);
+ event1.write((int64_t)20);
+ event1.write((float)1.1);
+ event1.init();
+
+ const auto& items = event1.getValues();
+ EXPECT_EQ((size_t)8, items.size());
+ EXPECT_EQ(1, event1.GetTagId());
+
+ const FieldValue& item0 = event1.getValues()[0];
+ EXPECT_EQ(0x2010101, item0.mField.getField());
+ EXPECT_EQ(Type::INT, item0.mValue.getType());
+ EXPECT_EQ(1000, item0.mValue.int_value);
+
+ const FieldValue& item1 = event1.getValues()[1];
+ EXPECT_EQ(0x2010182, item1.mField.getField());
+ EXPECT_EQ(Type::STRING, item1.mValue.getType());
+ EXPECT_EQ("tag1", item1.mValue.str_value);
+
+ const FieldValue& item2 = event1.getValues()[2];
+ EXPECT_EQ(0x2018201, item2.mField.getField());
+ EXPECT_EQ(Type::INT, item2.mValue.getType());
+ EXPECT_EQ(2000, item2.mValue.int_value);
+
+ const FieldValue& item3 = event1.getValues()[3];
+ EXPECT_EQ(0x2018282, item3.mField.getField());
+ EXPECT_EQ(Type::STRING, item3.mValue.getType());
+ EXPECT_EQ("tag2", item3.mValue.str_value);
+
+ const FieldValue& item4 = event1.getValues()[4];
+ EXPECT_EQ(0x20000, item4.mField.getField());
+ EXPECT_EQ(Type::STRING, item4.mValue.getType());
+ EXPECT_EQ("hello", item4.mValue.str_value);
+
+ const FieldValue& item5 = event1.getValues()[5];
+ EXPECT_EQ(0x30000, item5.mField.getField());
+ EXPECT_EQ(Type::INT, item5.mValue.getType());
+ EXPECT_EQ(10, item5.mValue.int_value);
+
+ const FieldValue& item6 = event1.getValues()[6];
+ EXPECT_EQ(0x40000, item6.mField.getField());
+ EXPECT_EQ(Type::LONG, item6.mValue.getType());
+ EXPECT_EQ((int64_t)20, item6.mValue.long_value);
+
+ const FieldValue& item7 = event1.getValues()[7];
+ EXPECT_EQ(0x50000, item7.mField.getField());
+ EXPECT_EQ(Type::FLOAT, item7.mValue.getType());
+ EXPECT_EQ((float)1.1, item7.mValue.float_value);
}
-TEST(LogEventTest, testRepeatedAttributionNode) {
- const int32_t TAG_ID = 123;
- LogEvent event(TAG_ID, 0);
- AttributionNode attribution_node1;
- attribution_node1.set_uid(1111);
- attribution_node1.set_tag("locationService");
-
- AttributionNode attribution_node2;
- attribution_node2.set_uid(2222);
- attribution_node2.set_tag("locationService2");
-
- AttributionNode attribution_node3;
- attribution_node3.set_uid(3333);
- attribution_node3.set_tag("locationService3");
- std::vector<AttributionNode> attribution_nodes =
- {attribution_node1, attribution_node2, attribution_node3};
-
- // 1nd field: int32.
- EXPECT_TRUE(event.write(int32_t(11)));
- // 2rd field: float.
- EXPECT_TRUE(event.write(3.45f));
- // Here it assume that the atom proto contains a repeated AttributionNode field.
- // 3rd field: attribution node. This is repeated field.
- EXPECT_TRUE(event.write(attribution_nodes));
- // 4th field: bool.
- EXPECT_TRUE(event.write(true));
- // 5th field: long.
- EXPECT_TRUE(event.write(uint64_t(1234)));
-
- event.init();
-
- DimensionsValue dimensionsValue;
- // Query single primitive fields.
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(1, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_int(), 11);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(2, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_float(), 3.45f);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(4, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 4);
- // The bool value is stored in value_int field as logD does not support bool.
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_int(), true);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(5, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 5);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_long(), long(1234));
-
- // First attribution.
- FieldMatcher first_uid_dimensions;
- first_uid_dimensions.set_field(event.GetTagId());
- first_uid_dimensions.add_child()->set_field(3);
- first_uid_dimensions.mutable_child(0)->set_position(Position::FIRST);
- first_uid_dimensions.mutable_child(0)->add_child()->set_field(1);
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(first_uid_dimensions, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 1111);
-
- FieldMatcher first_tag_dimensions = first_uid_dimensions;
- first_tag_dimensions.mutable_child(0)->mutable_child(0)->set_field(2);
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(first_tag_dimensions, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_str(), "locationService");
-
- FieldMatcher first_attribution_dimensions = first_uid_dimensions;
- first_attribution_dimensions.mutable_child(0)->add_child()->set_field(2);
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(first_attribution_dimensions, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 1111);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).value_str(), "locationService");
-
- FieldMatcher last_attribution_dimensions = first_attribution_dimensions;
- last_attribution_dimensions.mutable_child(0)->set_position(Position::LAST);
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(last_attribution_dimensions, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 3333);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).value_str(), "locationService3");
-
- FieldMatcher any_attribution_dimensions = first_attribution_dimensions;
- any_attribution_dimensions.mutable_child(0)->set_position(Position::ANY);
- std::vector<DimensionsValue> dimensionsValues;
- event.GetAtomDimensionsValueProtos(any_attribution_dimensions, &dimensionsValues);
- EXPECT_EQ(dimensionsValues.size(), 3u);
- EXPECT_EQ(dimensionsValues[0].field(), event.GetTagId());
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 1111);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).value_str(), "locationService");
- EXPECT_EQ(dimensionsValues[1].field(), event.GetTagId());
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 2222);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).value_str(), "locationService2");
- EXPECT_EQ(dimensionsValues[2].field(), event.GetTagId());
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 3333);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).value_str(), "locationService3");
-
- FieldMatcher mixed_dimensions = any_attribution_dimensions;
- mixed_dimensions.add_child()->set_field(1000);
- mixed_dimensions.add_child()->set_field(6); // missing field.
- mixed_dimensions.add_child()->set_field(3); // position not set.
- mixed_dimensions.add_child()->set_field(5);
- mixed_dimensions.add_child()->set_field(1);
- dimensionsValues.clear();
- event.GetAtomDimensionsValueProtos(mixed_dimensions, &dimensionsValues);
- EXPECT_EQ(dimensionsValues.size(), 3u);
- EXPECT_EQ(dimensionsValues[0].field(), event.GetTagId());
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value_size(), 3);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple().dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple().dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple().dimensions_value(0).value_int(),
- 1111);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple().dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(0).value_tuple().dimensions_value(1).value_str(),
- "locationService");
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(1).field(), 5);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(1).value_long(), long(1234));
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(2).field(), 1);
- EXPECT_EQ(dimensionsValues[0].value_tuple().dimensions_value(2).value_int(), 11);
-
- EXPECT_EQ(dimensionsValues[1].field(), event.GetTagId());
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value_size(), 3);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple().dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple().dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple().dimensions_value(0).value_int(),
- 2222);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple().dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(0).value_tuple().dimensions_value(1).value_str(),
- "locationService2");
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(1).field(), 5);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(1).value_long(), long(1234));
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(2).field(), 1);
- EXPECT_EQ(dimensionsValues[1].value_tuple().dimensions_value(2).value_int(), 11);
-
- EXPECT_EQ(dimensionsValues[2].field(), event.GetTagId());
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value_size(), 3);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple().dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple().dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple().dimensions_value(0).value_int(),
- 3333);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple().dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(0).value_tuple().dimensions_value(1).value_str(),
- "locationService3");
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(1).field(), 5);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(1).value_long(), long(1234));
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(2).field(), 1);
- EXPECT_EQ(dimensionsValues[2].value_tuple().dimensions_value(2).value_int(), 11);
-
- FieldMatcher wrong_dimensions = mixed_dimensions;
- // Wrong tagId.
- wrong_dimensions.set_field(event.GetTagId() + 100);
- dimensionsValues.clear();
- event.GetAtomDimensionsValueProtos(wrong_dimensions, &dimensionsValues);
- EXPECT_TRUE(dimensionsValues.empty());
+TEST(LogEventTest, TestLogParsing2) {
+ LogEvent event1(1, 2000);
+
+ std::vector<AttributionNode> nodes;
+
+ event1.write("hello");
+
+ // repeated msg can be in the middle
+ AttributionNode node1;
+ node1.set_uid(1000);
+ node1.set_tag("tag1");
+ nodes.push_back(node1);
+
+ AttributionNode node2;
+ node2.set_uid(2000);
+ node2.set_tag("tag2");
+ nodes.push_back(node2);
+ event1.write(nodes);
+
+ event1.write((int32_t)10);
+ event1.write((int64_t)20);
+ event1.write((float)1.1);
+ event1.init();
+
+ const auto& items = event1.getValues();
+ EXPECT_EQ((size_t)8, items.size());
+ EXPECT_EQ(1, event1.GetTagId());
+
+ const FieldValue& item = event1.getValues()[0];
+ EXPECT_EQ(0x00010000, item.mField.getField());
+ EXPECT_EQ(Type::STRING, item.mValue.getType());
+ EXPECT_EQ("hello", item.mValue.str_value);
+
+ const FieldValue& item0 = event1.getValues()[1];
+ EXPECT_EQ(0x2020101, item0.mField.getField());
+ EXPECT_EQ(Type::INT, item0.mValue.getType());
+ EXPECT_EQ(1000, item0.mValue.int_value);
+
+ const FieldValue& item1 = event1.getValues()[2];
+ EXPECT_EQ(0x2020182, item1.mField.getField());
+ EXPECT_EQ(Type::STRING, item1.mValue.getType());
+ EXPECT_EQ("tag1", item1.mValue.str_value);
+
+ const FieldValue& item2 = event1.getValues()[3];
+ EXPECT_EQ(0x2028201, item2.mField.getField());
+ EXPECT_EQ(Type::INT, item2.mValue.getType());
+ EXPECT_EQ(2000, item2.mValue.int_value);
+
+ const FieldValue& item3 = event1.getValues()[4];
+ EXPECT_EQ(0x2028282, item3.mField.getField());
+ EXPECT_EQ(Type::STRING, item3.mValue.getType());
+ EXPECT_EQ("tag2", item3.mValue.str_value);
+
+ const FieldValue& item5 = event1.getValues()[5];
+ EXPECT_EQ(0x30000, item5.mField.getField());
+ EXPECT_EQ(Type::INT, item5.mValue.getType());
+ EXPECT_EQ(10, item5.mValue.int_value);
+
+ const FieldValue& item6 = event1.getValues()[6];
+ EXPECT_EQ(0x40000, item6.mField.getField());
+ EXPECT_EQ(Type::LONG, item6.mValue.getType());
+ EXPECT_EQ((int64_t)20, item6.mValue.long_value);
+
+ const FieldValue& item7 = event1.getValues()[7];
+ EXPECT_EQ(0x50000, item7.mField.getField());
+ EXPECT_EQ(Type::FLOAT, item7.mValue.getType());
+ EXPECT_EQ((float)1.1, item7.mValue.float_value);
}
-TEST(LogEventTest, testMessageField) {
- const int32_t TAG_ID = 123;
- LogEvent event(TAG_ID, 0);
- AttributionNode attribution_node1;
- attribution_node1.set_uid(1111);
- attribution_node1.set_tag("locationService");
-
- AttributionNode attribution_node2;
- attribution_node2.set_uid(2222);
- attribution_node2.set_tag("locationService2");
-
- // 1nd field: int32.
- EXPECT_TRUE(event.write(int32_t(11)));
- // 2rd field: float.
- EXPECT_TRUE(event.write(3.45f));
- // Here it assume that the atom proto contains two optional AttributionNode fields.
- // 3rd field: attribution node. This is not repeated field.
- EXPECT_TRUE(event.write(attribution_node1));
- // 4th field: another attribution field. This is not repeated field.
- EXPECT_TRUE(event.write(attribution_node2));
- // 5th field: bool.
- EXPECT_TRUE(event.write(true));
- // 6th field: long.
- EXPECT_TRUE(event.write(uint64_t(1234)));
-
- event.init();
-
- FieldMatcher uid_dimensions1;
- uid_dimensions1.set_field(event.GetTagId());
- uid_dimensions1.add_child()->set_field(3);
- uid_dimensions1.mutable_child(0)->add_child()->set_field(1);
-
- FieldMatcher tag_dimensions1;
- tag_dimensions1.set_field(event.GetTagId());
- tag_dimensions1.add_child()->set_field(3);
- tag_dimensions1.mutable_child(0)->add_child()->set_field(2);
-
- FieldMatcher attribution_dimensions1;
- attribution_dimensions1.set_field(event.GetTagId());
- attribution_dimensions1.add_child()->set_field(3);
- attribution_dimensions1.mutable_child(0)->add_child()->set_field(1);
- attribution_dimensions1.mutable_child(0)->add_child()->set_field(2);
-
- FieldMatcher uid_dimensions2 = uid_dimensions1;
- uid_dimensions2.mutable_child(0)->set_field(4);
-
- FieldMatcher tag_dimensions2 = tag_dimensions1;
- tag_dimensions2.mutable_child(0)->set_field(4);
-
- FieldMatcher attribution_dimensions2 = attribution_dimensions1;
- attribution_dimensions2.mutable_child(0)->set_field(4);
-
- FieldMatcher mixed_dimensions = attribution_dimensions1;
- mixed_dimensions.add_child()->set_field(4);
- mixed_dimensions.mutable_child(1)->add_child()->set_field(1);
- mixed_dimensions.add_child()->set_field(1000);
- mixed_dimensions.add_child()->set_field(5);
- mixed_dimensions.add_child()->set_field(1);
-
- DimensionsValue dimensionsValue;
-
- // Query single primitive fields.
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(1, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_int(), 11);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(2, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_float(), 3.45f);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(5, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 5);
- // The bool value is stored in value_int field as logD does not support bool.
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_int(), true);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(6, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 6);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_long(), long(1234));
-
- // Query atom field 3: attribution node uid field only.
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(uid_dimensions1, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 1111);
-
- // Query atom field 3: attribution node tag field only.
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(tag_dimensions1, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_str(), "locationService");
-
- // Query atom field 3: attribution node uid + tag fields.
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(attribution_dimensions1, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 1111);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).value_str(), "locationService");
-
- // Query atom field 4: attribution node uid field only.
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(uid_dimensions2, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 4);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 2222);
-
- // Query atom field 4: attribution node tag field only.
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(tag_dimensions2, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 4);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_str(), "locationService2");
-
- // Query atom field 4: attribution node uid + tag fields.
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(attribution_dimensions2, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 4);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 2222);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).value_str(), "locationService2");
-
- // Query multiple fields:
- // 1/ Field 3: attribution uid + tag.
- // 2/ Field 4: attribution uid only.
- // 3/ Field not exist.
- // 4/ Primitive fields #5
- // 5/ Primitive fields #1
- EXPECT_TRUE(event.GetAtomDimensionsValueProto(mixed_dimensions, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 4);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value_size(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(0).value_int(), 1111);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_tuple()
- .dimensions_value(1).value_str(), "locationService");
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(1).field(), 4);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(1).value_tuple()
- .dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(1).value_tuple()
- .dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(1).value_tuple()
- .dimensions_value(0).value_int(), 2222);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(2).field(), 5);
- // The bool value is stored in value_int field as logD does not support bool.
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(2).value_int(), true);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(3).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(3).value_int(), 11);
-}
-
-TEST(LogEventTest, testAllPrimitiveFields) {
- const int32_t TAG_ID = 123;
- LogEvent event(TAG_ID, 0);
-
- // 1nd field: int32.
- EXPECT_TRUE(event.write(int32_t(11)));
- // 2rd field: float.
- EXPECT_TRUE(event.write(3.45f));
- // 3th field: string.
- EXPECT_TRUE(event.write("test"));
- // 4th field: bool.
- EXPECT_TRUE(event.write(true));
- // 5th field: bool.
- EXPECT_TRUE(event.write(false));
- // 6th field: long.
- EXPECT_TRUE(event.write(uint64_t(1234)));
-
- event.init();
-
- DimensionsValue dimensionsValue;
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(1, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_int(), 11);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(2, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 2);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_float(), 3.45f);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(3, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 3);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_str(), "test");
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(4, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 4);
- // The bool value is stored in value_int field as logD does not support bool.
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_int(), true);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(5, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 5);
- // The bool value is stored in value_int field as logD does not support bool.
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_int(), false);
-
- EXPECT_TRUE(event.GetSimpleAtomDimensionsValueProto(6, &dimensionsValue));
- EXPECT_EQ(dimensionsValue.field(), event.GetTagId());
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value_size(), 1);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).field(), 6);
- EXPECT_EQ(dimensionsValue.value_tuple().dimensions_value(0).value_long(), long(1234));
-
- // Field not exist.
- EXPECT_FALSE(event.GetSimpleAtomDimensionsValueProto(7, &dimensionsValue));
-}
-
-TEST(LogEventTest, testWriteAtomProtoToStream) {
- AttributionNode attribution_node1;
- attribution_node1.set_uid(1111);
- attribution_node1.set_tag("locationService");
-
- AttributionNode attribution_node2;
- attribution_node2.set_uid(2222);
- attribution_node2.set_tag("locationService2");
-
- AttributionNode attribution_node3;
- attribution_node3.set_uid(3333);
- attribution_node3.set_tag("locationService3");
- std::vector<AttributionNode> attribution_nodes =
- {attribution_node1, attribution_node2, attribution_node3};
-
- LogEvent event(1, 0);
- EXPECT_TRUE(event.write("222"));
- EXPECT_TRUE(event.write(attribution_nodes));
- EXPECT_TRUE(event.write(345));
- EXPECT_TRUE(event.write(attribution_node3));
- EXPECT_TRUE(event.write("hello"));
- event.init();
-
- util::ProtoOutputStream protoOutput;
- // For now only see whether it will crash.
- // TODO(yanglu): test parsing from stream.
- event.ToProto(protoOutput);
-}
} // namespace statsd
} // namespace os