summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nandana Dutt <nandana@google.com> 2019-02-07 12:26:08 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-02-07 12:26:08 +0000
commit2d0c0e786f0cf33653ac210805348e7430f9dec9 (patch)
treef00afb87a2503f783d088853864a652181ef8d6d
parent65650acdbc34809446612d1ddac191e308b5b266 (diff)
parent9ed7c41017a6d7f1f66e122435c5e736a6a8d6f2 (diff)
Merge "Revert "Remove the IncidentHeaderProto dependency from statsd.""
-rw-r--r--cmds/incidentd/Android.bp6
-rw-r--r--cmds/incidentd/tests/Reporter_test.cpp23
-rw-r--r--cmds/incidentd/tests/Section_test.cpp22
-rw-r--r--cmds/statsd/src/subscriber/IncidentdReporter.cpp49
-rw-r--r--libs/incident/Android.bp3
-rw-r--r--libs/incident/include/android/os/IncidentReportArgs.h4
-rw-r--r--libs/incident/src/IncidentReportArgs.cpp10
7 files changed, 28 insertions, 89 deletions
diff --git a/cmds/incidentd/Android.bp b/cmds/incidentd/Android.bp
index 3dc10939fed7..40da583e4f6c 100644
--- a/cmds/incidentd/Android.bp
+++ b/cmds/incidentd/Android.bp
@@ -94,10 +94,8 @@ cc_test {
data: ["testdata/**/*"],
- static_libs: [
- "libgmock",
- "libplatformprotos",
- ],
+ static_libs: ["libgmock"],
+
shared_libs: [
"libbase",
"libbinder",
diff --git a/cmds/incidentd/tests/Reporter_test.cpp b/cmds/incidentd/tests/Reporter_test.cpp
index b5e41d767295..f54f738fb62b 100644
--- a/cmds/incidentd/tests/Reporter_test.cpp
+++ b/cmds/incidentd/tests/Reporter_test.cpp
@@ -35,16 +35,6 @@ using namespace std;
using ::testing::StrEq;
using ::testing::Test;
-namespace {
-void getHeaderData(const IncidentHeaderProto& headerProto, vector<uint8_t>* out) {
- out->clear();
- auto serialized = headerProto.SerializeAsString();
- if (serialized.empty()) return;
- out->resize(serialized.length());
- std::copy(serialized.begin(), serialized.end(), out->begin());
-}
-}
-
class TestListener : public IIncidentReportStatusListener {
public:
int startInvoked;
@@ -153,10 +143,7 @@ TEST_F(ReporterTest, RunReportWithHeaders) {
args2.addSection(2);
IncidentHeaderProto header;
header.set_alert_id(12);
-
- vector<uint8_t> out;
- getHeaderData(header, &out);
- args2.addHeader(out);
+ args2.addHeader(header);
sp<ReportRequest> r1 = new ReportRequest(args1, l, tf.fd);
sp<ReportRequest> r2 = new ReportRequest(args2, l, tf.fd);
@@ -182,12 +169,8 @@ TEST_F(ReporterTest, RunReportToGivenDirectory) {
IncidentHeaderProto header1, header2;
header1.set_alert_id(12);
header2.set_reason("abcd");
-
- vector<uint8_t> out;
- getHeaderData(header1, &out);
- args.addHeader(out);
- getHeaderData(header2, &out);
- args.addHeader(out);
+ args.addHeader(header1);
+ args.addHeader(header2);
sp<ReportRequest> r = new ReportRequest(args, l, -1);
reporter->batch.add(r);
diff --git a/cmds/incidentd/tests/Section_test.cpp b/cmds/incidentd/tests/Section_test.cpp
index 24454ed15d40..9b684a060286 100644
--- a/cmds/incidentd/tests/Section_test.cpp
+++ b/cmds/incidentd/tests/Section_test.cpp
@@ -82,16 +82,6 @@ protected:
virtual IBinder* onAsBinder() override { return nullptr; };
};
-namespace {
-void getHeaderData(const IncidentHeaderProto& headerProto, vector<uint8_t>* out) {
- out->clear();
- auto serialized = headerProto.SerializeAsString();
- if (serialized.empty()) return;
- out->resize(serialized.length());
- std::copy(serialized.begin(), serialized.end(), out->begin());
-}
-}
-
TEST_F(SectionTest, HeaderSection) {
HeaderSection hs;
@@ -104,15 +94,9 @@ TEST_F(SectionTest, HeaderSection) {
head1.set_reason("axe");
head2.set_reason("pup");
- vector<uint8_t> out;
- getHeaderData(head1, &out);
- args1.addHeader(out);
-
- getHeaderData(head2, &out);
- args1.addHeader(out);
-
- getHeaderData(head2, &out);
- args2.addHeader(out);
+ args1.addHeader(head1);
+ args1.addHeader(head2);
+ args2.addHeader(head2);
requests.add(new ReportRequest(args1, new SimpleListener(), -1));
requests.add(new ReportRequest(args2, new SimpleListener(), tf.fd));
diff --git a/cmds/statsd/src/subscriber/IncidentdReporter.cpp b/cmds/statsd/src/subscriber/IncidentdReporter.cpp
index 42cac0cc4122..6e4b2c86c837 100644
--- a/cmds/statsd/src/subscriber/IncidentdReporter.cpp
+++ b/cmds/statsd/src/subscriber/IncidentdReporter.cpp
@@ -17,67 +17,32 @@
#include "Log.h"
#include "IncidentdReporter.h"
+#include "frameworks/base/libs/incident/proto/android/os/header.pb.h"
#include <android/os/IIncidentManager.h>
#include <android/os/IncidentReportArgs.h>
-#include <android/util/ProtoOutputStream.h>
#include <binder/IBinder.h>
#include <binder/IServiceManager.h>
-#include <vector>
-
namespace android {
namespace os {
namespace statsd {
-using android::util::ProtoOutputStream;
-using std::vector;
-
-using util::FIELD_TYPE_MESSAGE;
-using util::FIELD_TYPE_INT32;
-using util::FIELD_TYPE_INT64;
-
-// field ids in IncidentHeaderProto
-const int FIELD_ID_ALERT_ID = 1;
-const int FIELD_ID_CONFIG_KEY = 3;
-const int FIELD_ID_CONFIG_KEY_UID = 1;
-const int FIELD_ID_CONFIG_KEY_ID = 2;
-
-namespace {
-void getProtoData(const int64_t& rule_id, const ConfigKey& configKey, vector<uint8_t>* protoData) {
- ProtoOutputStream headerProto;
- headerProto.write(FIELD_TYPE_INT64 | FIELD_ID_ALERT_ID, (long long)rule_id);
- uint64_t token =
- headerProto.start(FIELD_TYPE_MESSAGE | FIELD_ID_CONFIG_KEY);
- headerProto.write(FIELD_TYPE_INT32 | FIELD_ID_CONFIG_KEY_UID, configKey.GetUid());
- headerProto.write(FIELD_TYPE_INT64 | FIELD_ID_CONFIG_KEY_ID, (long long)configKey.GetId());
- headerProto.end(token);
-
- protoData->resize(headerProto.size());
- size_t pos = 0;
- auto iter = headerProto.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&((*protoData)[pos]), iter.readBuffer(), toRead);
- pos += toRead;
- iter.rp()->move(toRead);
- }
-}
-} // namespace
-
bool GenerateIncidentReport(const IncidentdDetails& config, const int64_t& rule_id,
const ConfigKey& configKey) {
if (config.section_size() == 0) {
VLOG("The alert %lld contains zero section in config(%d,%lld)", (unsigned long long)rule_id,
- configKey.GetUid(), (long long)configKey.GetId());
+ configKey.GetUid(), (long long) configKey.GetId());
return false;
}
IncidentReportArgs incidentReport;
- vector<uint8_t> protoData;
- getProtoData(rule_id, configKey, &protoData);
- incidentReport.addHeader(protoData);
+ android::os::IncidentHeaderProto header;
+ header.set_alert_id(rule_id);
+ header.mutable_config_key()->set_uid(configKey.GetUid());
+ header.mutable_config_key()->set_id(configKey.GetId());
+ incidentReport.addHeader(header);
for (int i = 0; i < config.section_size(); i++) {
incidentReport.addSection(config.section(i));
diff --git a/libs/incident/Android.bp b/libs/incident/Android.bp
index 905e3039ff88..0619a9c100dd 100644
--- a/libs/incident/Android.bp
+++ b/libs/incident/Android.bp
@@ -36,6 +36,7 @@ cc_library_shared {
srcs: [
":libincident_aidl",
+ "proto/android/os/header.proto",
"proto/android/os/metadata.proto",
"src/IncidentReportArgs.cpp",
],
@@ -46,4 +47,4 @@ cc_library_shared {
},
export_include_dirs: ["include"],
-} \ No newline at end of file
+}
diff --git a/libs/incident/include/android/os/IncidentReportArgs.h b/libs/incident/include/android/os/IncidentReportArgs.h
index 5e8eac1833ce..ee1e33c43b89 100644
--- a/libs/incident/include/android/os/IncidentReportArgs.h
+++ b/libs/incident/include/android/os/IncidentReportArgs.h
@@ -24,6 +24,8 @@
#include <set>
#include <vector>
+#include "frameworks/base/libs/incident/proto/android/os/header.pb.h"
+
namespace android {
namespace os {
@@ -47,7 +49,7 @@ public:
void setAll(bool all);
void setDest(int dest);
void addSection(int section);
- void addHeader(const vector<uint8_t>& headerProto);
+ void addHeader(const IncidentHeaderProto& headerProto);
inline bool all() const { return mAll; }
bool containsSection(int section) const;
diff --git a/libs/incident/src/IncidentReportArgs.cpp b/libs/incident/src/IncidentReportArgs.cpp
index 06b7a5b682b1..26261ef929ae 100644
--- a/libs/incident/src/IncidentReportArgs.cpp
+++ b/libs/incident/src/IncidentReportArgs.cpp
@@ -161,9 +161,15 @@ IncidentReportArgs::addSection(int section)
}
void
-IncidentReportArgs::addHeader(const vector<uint8_t>& headerProto)
+IncidentReportArgs::addHeader(const IncidentHeaderProto& headerProto)
{
- mHeaders.push_back(headerProto);
+ vector<uint8_t> header;
+ auto serialized = headerProto.SerializeAsString();
+ if (serialized.empty()) return;
+ for (auto it = serialized.begin(); it != serialized.end(); it++) {
+ header.push_back((uint8_t)*it);
+ }
+ mHeaders.push_back(header);
}
bool