Merge "Extract tag ID from log_msg and fill in stats log proto Test: tested locally"

This commit is contained in:
TreeHugger Robot
2017-09-27 02:57:40 +00:00
committed by Android (Google) Code Review

View File

@@ -25,11 +25,25 @@ using android::os::statsd::KeyValuePair;
using android::os::statsd::TagId;
using android::os::statsd::TagId_IsValid;
EventMetricData parse(log_msg msg) {
static inline uint32_t get4LE(const char* src) {
return src[0] | (src[1] << 8) | (src[2] << 16) | (src[3] << 24);
}
EventMetricData parse(log_msg msg)
{
// dump all statsd logs to dropbox for now.
// TODO: Add filtering, aggregation, etc.
EventMetricData eventMetricData;
// set tag.
char* eventData = msg.msg();
uint32_t tag = get4LE(eventData);
if (!TagId_IsValid(tag)) {
// return when an invalid tag is found.
return eventMetricData;
}
eventMetricData.set_tag(static_cast<TagId>(tag));
// set timestamp of the event.
KeyValuePair* keyValuePair = eventMetricData.add_key_value_pair();
keyValuePair->set_key(EVENT_TIMESTAMP);
@@ -45,32 +59,23 @@ EventMetricData parse(log_msg msg) {
memset(&elem, 0, sizeof(elem));
size_t index = 0;
int32_t key = -1;
int32_t tag = -1;
do {
elem = android_log_read_next(context);
switch ((int)elem.type) {
case EVENT_TYPE_INT:
if (index == 0) {
tag = elem.data.int32;
if (TagId_IsValid(tag)) {
eventMetricData.set_tag(static_cast<TagId>(tag));
} else {
break;
}
} else if (index % 2 == 1) {
if (index % 2 == 0) {
key = elem.data.int32;
} else if (KeyId_IsValid(key)) {
int32_t val = elem.data.int32;
KeyValuePair* keyValuePair = eventMetricData.add_key_value_pair();
keyValuePair->set_key(static_cast<KeyId>(key));
keyValuePair->set_value_int(val);
} else {
}
index++;
break;
case EVENT_TYPE_FLOAT:
if (index % 2 == 0 && KeyId_IsValid(key)) {
if (index % 2 == 1 && KeyId_IsValid(key)) {
float val = elem.data.float32;
KeyValuePair* keyValuePair = eventMetricData.add_key_value_pair();
keyValuePair->set_key(static_cast<KeyId>(key));
@@ -79,7 +84,7 @@ EventMetricData parse(log_msg msg) {
index++;
break;
case EVENT_TYPE_STRING:
if (index % 2 == 0 && KeyId_IsValid(key)) {
if (index % 2 == 1 && KeyId_IsValid(key)) {
char* val = elem.data.string;
KeyValuePair* keyValuePair = eventMetricData.add_key_value_pair();
keyValuePair->set_key(static_cast<KeyId>(key));
@@ -88,7 +93,7 @@ EventMetricData parse(log_msg msg) {
index++;
break;
case EVENT_TYPE_LONG:
if (index % 2 == 0 && KeyId_IsValid(key)) {
if (index % 2 == 1 && KeyId_IsValid(key)) {
int64_t val = elem.data.int64;
KeyValuePair* keyValuePair = eventMetricData.add_key_value_pair();
keyValuePair->set_key(static_cast<KeyId>(key));