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

Commit a02bfab6 authored by Tej Singh's avatar Tej Singh
Browse files

Add bytes interface to LogEvent for pulled atoms

This adds a writeBytes interface to LogEvent for native pulled atoms,
which have been using write(string). The function still takes in a
string, but instead uses the write_char_array interface to avoid
stopping on null termination.

Test: modified tests and ran statsd_test
Test: statsd_testdrive 10055 to test against gpu app stats
Bug: 141965020
Change-Id: Iaedfb73310769165d8b61affb55e784f109355cf
parent 29f3a0b6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ cc_defaults {
        "libprotoutil",
        "libservices",
        "libstatslog",
        "libstatssocket",
        "libsysutils",
        "libtimestats_proto",
        "libutils",
+9 −3
Original line number Diff line number Diff line
@@ -92,9 +92,15 @@ static bool pullGpuStatsAppInfo(const sp<IGpuService>& gpuService,
                android::util::GPU_STATS_APP_INFO, getWallClockNs(), getElapsedRealtimeNs());
        if (!event->write(info.appPackageName)) return false;
        if (!event->write((int64_t)info.driverVersionCode)) return false;
        if (!event->write(int64VectorToProtoByteString(info.glDriverLoadingTime))) return false;
        if (!event->write(int64VectorToProtoByteString(info.vkDriverLoadingTime))) return false;
        if (!event->write(int64VectorToProtoByteString(info.angleDriverLoadingTime))) return false;
        if (!event->writeBytes(int64VectorToProtoByteString(info.glDriverLoadingTime)))  {
            return false;
        }
        if (!event->writeBytes(int64VectorToProtoByteString(info.vkDriverLoadingTime))) {
            return false;
        }
        if (!event->writeBytes(int64VectorToProtoByteString(info.angleDriverLoadingTime))) {
            return false;
        }
        if (!event->write(info.cpuVulkanInUse)) return false;
        if (!event->write(info.falsePrerotation)) return false;
        event->init();
+7 −0
Original line number Diff line number Diff line
@@ -332,6 +332,13 @@ bool LogEvent::write(float value) {
    return false;
}

bool LogEvent::writeBytes(const string& value) {
    if (mContext) {
        return android_log_write_char_array(mContext, value.c_str(), value.length()) >= 0;
    }
    return false;
}

bool LogEvent::writeKeyValuePairs(int32_t uid,
                                  const std::map<int32_t, int32_t>& int_map,
                                  const std::map<int32_t, int64_t>& long_map,
+2 −1
Original line number Diff line number Diff line
@@ -21,9 +21,9 @@
#include <android/frameworks/stats/1.0/types.h>
#include <android/os/StatsLogEventWrapper.h>
#include <android/util/ProtoOutputStream.h>
#include <log/log_event_list.h>
#include <log/log_read.h>
#include <private/android_logger.h>
#include <stats_event_list.h>
#include <utils/Errors.h>

#include <string>
@@ -157,6 +157,7 @@ public:
    bool write(float value);
    bool write(const std::vector<AttributionNodeInternal>& nodes);
    bool write(const AttributionNodeInternal& node);
    bool writeBytes(const std::string& value);
    bool writeKeyValuePairs(int32_t uid,
                            const std::map<int32_t, int32_t>& int_map,
                            const std::map<int32_t, int64_t>& long_map,
+2 −2
Original line number Diff line number Diff line
@@ -582,7 +582,7 @@ TEST(LogEventTest, TestBinaryFieldAtom) {
    event1.write((int32_t)stats::launcher::LauncherAction::LONGPRESS);
    event1.write((int32_t)stats::launcher::LauncherState::OVERVIEW);
    event1.write((int64_t)stats::launcher::LauncherState::ALLAPPS);
    event1.write(extension_str);
    event1.writeBytes(extension_str);
    event1.init();

    ProtoOutputStream proto;
@@ -621,7 +621,7 @@ TEST(LogEventTest, TestBinaryFieldAtom_empty) {
    event1.write((int32_t)stats::launcher::LauncherAction::LONGPRESS);
    event1.write((int32_t)stats::launcher::LauncherState::OVERVIEW);
    event1.write((int64_t)stats::launcher::LauncherState::ALLAPPS);
    event1.write(extension_str);
    event1.writeBytes(extension_str);
    event1.init();

    ProtoOutputStream proto;