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

Commit 15b86108 authored by Jeffrey Huang's avatar Jeffrey Huang
Browse files

Delete atoms.proto from statsd

Use the atoms.proto in proto_logging as the source of truth. Also
migrates statsd log api gen to use the new atoms.proto

Bug: 167962588
Test: m -j && m CtsStatsdAtomHostTestCases

Change-Id: I36ec354d273dceace5245d7634c68ac63dc5a8cd
Merged-In: I36ec354d273dceace5245d7634c68ac63dc5a8cd
parent 227a23a8
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -749,13 +749,17 @@ java_library_host {
    name: "platformprotos",
    srcs: [
        ":ipconnectivity-proto-src",
        ":libstats_internal_protos",
        "cmds/am/proto/instrumentation_data.proto",
        "cmds/statsd/src/**/*.proto",
        "core/proto/**/*.proto",
        "libs/incident/proto/**/*.proto",
    ],
    proto: {
        include_dirs: ["external/protobuf/src"],
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
        type: "full",
    },
    errorprone: {
+15 −36
Original line number Diff line number Diff line
@@ -14,34 +14,6 @@
// limitations under the License.
//

// ==========================================================
// Build the library for use on the host
// ==========================================================
cc_library_host_shared {
    name: "libstats_proto_host",
    srcs: [
        "src/atoms.proto",
        "src/atom_field_options.proto",
    ],

    shared_libs: [
        "libplatformprotos",
    ],

    proto: {
        type: "full",
        export_proto_headers: true,
        include_dirs: [
            "external/protobuf/src",
        ],
    },

    export_shared_lib_headers: [
        "libplatformprotos",
    ]

}

cc_defaults {
    name: "statsd_defaults",

@@ -271,9 +243,8 @@ cc_test {
        // atom_field_options.proto needs field_options.proto, but that is
        // not included in libprotobuf-cpp-lite, so compile it here.
        ":libprotobuf-internal-protos",
        ":libstats_internal_protos",

        "src/atom_field_options.proto",
        "src/atoms.proto",
        "src/shell/shell_data.proto",
        "src/stats_log.proto",
        "tests/AlarmMonitor_test.cpp",
@@ -337,7 +308,10 @@ cc_test {

    proto: {
        type: "lite",
        include_dirs: ["external/protobuf/src"],
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
    },

}
@@ -354,6 +328,7 @@ cc_benchmark {
        // atom_field_options.proto needs field_options.proto, but that is
        // not included in libprotobuf-cpp-lite, so compile it here.
        ":libprotobuf-internal-protos",
        ":libstats_internal_protos",

        "benchmark/duration_metric_benchmark.cpp",
        "benchmark/filter_value_benchmark.cpp",
@@ -363,14 +338,15 @@ cc_benchmark {
        "benchmark/main.cpp",
        "benchmark/metric_util.cpp",
        "benchmark/stats_write_benchmark.cpp",
        "src/atom_field_options.proto",
        "src/atoms.proto",
        "src/stats_log.proto",
    ],

    proto: {
        type: "lite",
        include_dirs: ["external/protobuf/src"],
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
    },

    cflags: [
@@ -402,11 +378,14 @@ java_library {
    sdk_version: "core_current",
    proto: {
        type: "lite",
        include_dirs: ["external/protobuf/src"],
        include_dirs: [
            "external/protobuf/src",
            "frameworks/proto_logging/stats",
        ],
    },

    srcs: [
        "src/atoms.proto",
        ":libstats_atoms_proto",
        "src/shell/shell_config.proto",
        "src/shell/shell_data.proto",
        "src/stats_log.proto",
+0 −116
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";

package android.os.statsd;
option java_package = "com.android.os";
option java_multiple_files = true;
option java_outer_classname = "AtomFieldOptions";

import "google/protobuf/descriptor.proto";

// Used to annotate an atom that represents a state change. A state change atom must have exactly
// ONE exclusive state field, and any number of primary key fields. For example, message
// UidProcessStateChanged {
//    optional int32 uid = 1 [(state_field_option).primary_field = true];
//    optional android.app.ProcessStateEnum state =
//            2 [(state_field_option).exclusive_state = true];
//  }
// Each UidProcessStateChanged atom event represents a state change for a specific uid.
// A new state automatically overrides the previous state.
//
// If the atom has 2 or more primary fields, it means the combination of the
// primary fields are the primary key.
// For example:
// message ThreadStateChanged {
//    optional int32 pid = 1  [(state_field_option).primary_field = true];
//    optional int32 tid = 2  [(state_field_option).primary_field = true];
//    optional int32 state = 3 [(state_field_option).exclusive_state = true];
// }
//
// Sometimes, there is no primary key field, when the state is GLOBAL.
// For example,
// message ScreenStateChanged {
//    optional android.view.DisplayStateEnum state =
//          1 [(state_field_option).exclusive_state = true];
// }
//
// For state atoms with attribution chain, sometimes the primary key is the first uid in the chain.
// For example:
// message AudioStateChanged {
//   repeated AttributionNode attribution_node = 1
//       [(stateFieldOption).primary_field_first_uid = true];
//
//    enum State {
//      OFF = 0;
//      ON = 1;
//      // RESET indicates all audio stopped. Used when it (re)starts (e.g. after it crashes).
//      RESET = 2;
//    }
//    optional State state = 2 [(stateFieldOption).exclusive_state = true];
// }
message StateAtomFieldOption {
    // Fields that represent the key that the state belongs to.
    // Used on simple proto fields. Do not use on attribution chains.
    optional bool primary_field = 1 [default = false];

    // The field that represents the state. It's an exclusive state.
    optional bool exclusive_state = 2 [default = false];

    // Used on an attribution chain field to indicate that the first uid is the
    // primary field.
    optional bool primary_field_first_uid = 3 [default = false];

    // Note: We cannot annotate directly on the enums because many enums are imported from other
    // proto files in the platform. proto-lite cc library does not support annotations unfortunately

    // Knowing the default state value allows state trackers to remove entries that become the
    // default state. If there is no default value specified, the default value is unknown, and all
    // states will be tracked in memory.
    optional int32 default_state_value = 4;

    // A reset state signals all states go to default value. For example, BLE reset means all active
    // BLE scans are to be turned off.
    optional int32 trigger_state_reset_value = 5;

    // If the state change needs to count nesting.
    optional bool nested = 6 [default = true];
}

// Used to generate StatsLog.write APIs.
enum LogMode {
    MODE_UNSET = 0;
    // Log fields as their actual types e.g., all primary data types.
    // Or fields that are hardcoded in stats_log_api_gen tool e.g., AttributionNode
    MODE_AUTOMATIC = 1;
    // Log fields in their proto binary format. These fields will not be parsed in statsd
    MODE_BYTES = 2;
}

extend google.protobuf.FieldOptions {
    // Flags to decorate an atom that presents a state change.
    optional StateAtomFieldOption state_field_option = 50000;

    // Flags to decorate the uid fields in an atom.
    optional bool is_uid = 50001 [default = false];

    optional LogMode log_mode = 50002 [default = MODE_AUTOMATIC];

    repeated string module = 50004;

    optional bool truncate_timestamp = 50005 [default = false];
}

cmds/statsd/src/atoms.proto

deleted100644 → 0
+0 −11275

File deleted.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ package android.os.statsd;
option java_package = "com.android.os.statsd";
option java_outer_classname = "ShellDataProto";

import "frameworks/base/cmds/statsd/src/atoms.proto";
import "frameworks/proto_logging/stats/atoms.proto";

// The output of shell subscription, including both pulled and pushed subscriptions.
message ShellData {
Loading