Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ed7c410 authored by Nandana Dutt's avatar Nandana Dutt
Browse files

Revert "Remove the IncidentHeaderProto dependency from statsd."

This reverts commit df6255a0.
Reason for revert: Breaks git master
Test: manual confirm

Change-Id: Ifd8f437dce826fe7d8f875fc838a250fc010049a
parent 1fc8cdea
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -94,10 +94,8 @@ cc_test {

    data: ["testdata/**/*"],

    static_libs: [
        "libgmock",
        "libplatformprotos",
    ],
    static_libs: ["libgmock"],

    shared_libs: [
        "libbase",
        "libbinder",
+3 −20
Original line number Diff line number Diff line
@@ -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);

+3 −19
Original line number Diff line number Diff line
@@ -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));
+7 −42
Original line number Diff line number Diff line
@@ -17,54 +17,17 @@
#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) {
@@ -75,9 +38,11 @@ bool GenerateIncidentReport(const IncidentdDetails& config, const int64_t& rule_

    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));
+2 −1
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ cc_library_shared {

    srcs: [
        ":libincident_aidl",
        "proto/android/os/header.proto",
        "proto/android/os/metadata.proto",
        "src/IncidentReportArgs.cpp",
    ],
Loading