diff options
| author | 2019-02-07 12:26:08 +0000 | |
|---|---|---|
| committer | 2019-02-07 12:26:08 +0000 | |
| commit | 2d0c0e786f0cf33653ac210805348e7430f9dec9 (patch) | |
| tree | f00afb87a2503f783d088853864a652181ef8d6d | |
| parent | 65650acdbc34809446612d1ddac191e308b5b266 (diff) | |
| parent | 9ed7c41017a6d7f1f66e122435c5e736a6a8d6f2 (diff) | |
Merge "Revert "Remove the IncidentHeaderProto dependency from statsd.""
| -rw-r--r-- | cmds/incidentd/Android.bp | 6 | ||||
| -rw-r--r-- | cmds/incidentd/tests/Reporter_test.cpp | 23 | ||||
| -rw-r--r-- | cmds/incidentd/tests/Section_test.cpp | 22 | ||||
| -rw-r--r-- | cmds/statsd/src/subscriber/IncidentdReporter.cpp | 49 | ||||
| -rw-r--r-- | libs/incident/Android.bp | 3 | ||||
| -rw-r--r-- | libs/incident/include/android/os/IncidentReportArgs.h | 4 | ||||
| -rw-r--r-- | libs/incident/src/IncidentReportArgs.cpp | 10 |
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 |