blob: ec91509aaf406e4e47682c69e3ed7cb980b58535 [file] [log] [blame]
Yao Chenab273e22017-09-06 12:53:50 -07001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070016
Yao Chenab273e22017-09-06 12:53:50 -070017syntax = "proto2";
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070018option optimize_for = LITE_RUNTIME;
Yao Chenab273e22017-09-06 12:53:50 -070019
20package android.os.statsd;
21
Yao Chenab273e22017-09-06 12:53:50 -070022option java_package = "com.android.os";
23option java_outer_classname = "StatsLog";
24
Yao Chen70b98632017-10-17 10:41:14 -070025import "frameworks/base/cmds/statsd/src/stats_events_copy.proto";
Yao Chenab273e22017-09-06 12:53:50 -070026
yro00698da2017-09-15 10:06:40 -070027message KeyValuePair {
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070028 optional int32 key = 1;
Yao Chenab273e22017-09-06 12:53:50 -070029
yro00698da2017-09-15 10:06:40 -070030 oneof value {
31 string value_str = 2;
32 int64 value_int = 3;
33 bool value_bool = 4;
34 float value_float = 5;
Yao Chenab273e22017-09-06 12:53:50 -070035 }
Yao Chenab273e22017-09-06 12:53:50 -070036}
37
yro00698da2017-09-15 10:06:40 -070038message EventMetricData {
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070039 optional int64 timestamp_nanos = 1;
yro00698da2017-09-15 10:06:40 -070040
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070041 optional StatsEvent stats_events = 2;
yro00698da2017-09-15 10:06:40 -070042}
43
44message CountBucketInfo {
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070045 optional int64 start_bucket_nanos = 1;
yro00698da2017-09-15 10:06:40 -070046
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070047 optional int64 end_bucket_nanos = 2;
yro00698da2017-09-15 10:06:40 -070048
49 optional int64 count = 3;
50}
51
52message CountMetricData {
53 repeated KeyValuePair dimension = 1;
54
55 repeated CountBucketInfo bucket_info = 2;
56}
57
Yao Chencaf339d2017-10-06 16:01:10 -070058message DurationBucketInfo {
59 optional int64 start_bucket_nanos = 1;
60
61 optional int64 end_bucket_nanos = 2;
62
63 optional int64 duration_nanos = 3;
64}
65
66message DurationMetricData {
67 repeated KeyValuePair dimension = 1;
68
69 repeated DurationBucketInfo bucket_info = 2;
70}
71
Yangsterfa28aec2017-10-30 10:29:52 -070072message ValueBucketInfo {
73 optional int64 start_bucket_nanos = 1;
74
75 optional int64 end_bucket_nanos = 2;
76
77 optional int64 value = 3;
78}
79
80message ValueMetricData {
81 repeated KeyValuePair dimension = 1;
82
83 repeated ValueBucketInfo bucket_info = 2;
84}
85
86message GaugeBucketInfo {
87 optional int64 start_bucket_nanos = 1;
88
89 optional int64 end_bucket_nanos = 2;
90
91 optional int64 gauge = 3;
92}
93
94message GaugeMetricData {
95 repeated KeyValuePair dimension = 1;
96
97 repeated GaugeBucketInfo bucket_info = 2;
98}
99
Yao Chencaf339d2017-10-06 16:01:10 -0700100message UidMapping {
101 message AppInfo {
102 optional string app = 1;
103
104 optional int32 version = 2;
105
106 optional int32 uid = 3;
107 }
108
109 repeated AppInfo initial = 1;
110
111 message Change {
112 optional bool deletion = 1;
113
Yangsterfa28aec2017-10-30 10:29:52 -0700114 optional int64 timestamp_nanos = 2;
Yao Chencaf339d2017-10-06 16:01:10 -0700115 optional string app = 3;
116 optional int32 uid = 4;
117
118 optional int32 version = 5;
119 }
120 repeated Change changes = 2;
121}
122
yro00698da2017-09-15 10:06:40 -0700123message StatsLogReport {
Yao Chenab273e22017-09-06 12:53:50 -0700124 optional int32 metric_id = 1;
125
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700126 optional int64 start_report_nanos = 2;
yro00698da2017-09-15 10:06:40 -0700127
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700128 optional int64 end_report_nanos = 3;
yro00698da2017-09-15 10:06:40 -0700129
130 message EventMetricDataWrapper {
131 repeated EventMetricData data = 1;
132 }
133 message CountMetricDataWrapper {
134 repeated CountMetricData data = 1;
135 }
Yao Chencaf339d2017-10-06 16:01:10 -0700136 message DurationMetricDataWrapper {
Yao Chen729093d2017-10-16 10:33:26 -0700137 repeated DurationMetricData data = 1;
Yao Chencaf339d2017-10-06 16:01:10 -0700138 }
Yangsterfa28aec2017-10-30 10:29:52 -0700139 message ValueMetricDataWrapper {
140 repeated ValueMetricData data = 1;
141 }
142 message GaugeMetricDataWrapper {
143 repeated GaugeMetricData data = 1;
144 }
yro00698da2017-09-15 10:06:40 -0700145 oneof data {
146 EventMetricDataWrapper event_metrics = 4;
147 CountMetricDataWrapper count_metrics = 5;
Yao Chencaf339d2017-10-06 16:01:10 -0700148 DurationMetricDataWrapper duration_metrics = 6;
Yangsterfa28aec2017-10-30 10:29:52 -0700149 ValueMetricDataWrapper value_metrics = 7;
150 GaugeMetricDataWrapper gauge_metrics = 8;
yro00698da2017-09-15 10:06:40 -0700151 }
Yao Chenab273e22017-09-06 12:53:50 -0700152}
Yangsterfa28aec2017-10-30 10:29:52 -0700153
154message ConfigMetricsReport {
155 message ConfigKey {
156 optional int32 uid = 1;
157 optional string name = 2;
158 }
159 optional ConfigKey config_key = 1;
160
161 repeated StatsLogReport metrics = 2;
162
163 optional UidMapping uid_map = 3;
164}