271 lines
10 KiB
Protocol Buffer
271 lines
10 KiB
Protocol Buffer
|
|
// Copyright 2022 Google LLC
|
||
|
|
//
|
||
|
|
// 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.
|
||
|
|
// Logging protos for MobileDataDownload
|
||
|
|
|
||
|
|
syntax = "proto2";
|
||
|
|
|
||
|
|
package mobiledatadownload.logs;
|
||
|
|
|
||
|
|
import "log_enums.proto";
|
||
|
|
|
||
|
|
//option jspb_use_correct_proto2_semantics = false; // <internal>
|
||
|
|
option java_package = "com.google.mobiledatadownload";
|
||
|
|
option java_outer_classname = "LogProto";
|
||
|
|
|
||
|
|
// Info about the Android client that logged.
|
||
|
|
// Next tag: 3
|
||
|
|
message AndroidClientInfo {
|
||
|
|
// Version of the module we are currently running. aMDD will log its own
|
||
|
|
// version that it shares between GMSCore module and library.
|
||
|
|
|
||
|
|
optional int32 module_version = 1 [default = -1];
|
||
|
|
|
||
|
|
// Package name of the hosting application.
|
||
|
|
// It is to differentiate logs from GMS service and library.
|
||
|
|
optional string host_package_name = 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Attributes of the device and/or MDD
|
||
|
|
// Recommended to log this message with each MDD log defined below. This will
|
||
|
|
// allow slicing MDD stats on the state of the device.
|
||
|
|
//
|
||
|
|
// TODO: Make Fields of this proto available as RASTA conditions for
|
||
|
|
// experimentation.
|
||
|
|
//
|
||
|
|
// Next tag: 3
|
||
|
|
message MddDeviceInfo {
|
||
|
|
// Indicates low storage space condition on the device.
|
||
|
|
// Currently in O-, it is the result of Android's ACTION_DEVICE_STORAGE_LOW
|
||
|
|
// intent when the storage state was logged.
|
||
|
|
// For O+, MDD will define its own threshold for low storage: b/77856395
|
||
|
|
optional bool device_storage_low = 1;
|
||
|
|
|
||
|
|
reserved 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Metadata associated with each data download event specific to a file group.
|
||
|
|
//
|
||
|
|
// Next tag: 9
|
||
|
|
message DataDownloadFileGroupStats {
|
||
|
|
// Name of the file group.
|
||
|
|
optional string file_group_name = 1;
|
||
|
|
|
||
|
|
// Client set version number used to identify the file group.
|
||
|
|
// Note that this does not uniquely identify the contents of the file group.
|
||
|
|
// It simply reflects a snapshot of client config changes.
|
||
|
|
// For example: say there's a file group 'language-detector-model' that
|
||
|
|
// downloads a different file per user locale.
|
||
|
|
// data_file_group {
|
||
|
|
// file_group_name = 'language-detector-model'
|
||
|
|
// file_group_version_number = 1
|
||
|
|
// file {
|
||
|
|
// url = 'en-model'
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
// data_file_group {
|
||
|
|
// file_group_name = 'language-detector-model'
|
||
|
|
// file_group_version_number = 1
|
||
|
|
// file {
|
||
|
|
// url = 'es-model'
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
// Note that even though the actual contents of the file group are different
|
||
|
|
// for each locale, the version is the same because this config was pushed
|
||
|
|
// at the same snapshot.
|
||
|
|
optional int32 file_group_version_number = 2;
|
||
|
|
|
||
|
|
// The package name of the group owner.
|
||
|
|
optional string owner_package = 3;
|
||
|
|
|
||
|
|
// The total number of files in the file group.
|
||
|
|
//
|
||
|
|
// NOTE: This count is only included for storage and file group stats logging
|
||
|
|
optional int32 file_count = 4;
|
||
|
|
|
||
|
|
// The number of inline files in the file group.
|
||
|
|
//
|
||
|
|
// NOTE: This count is only included for storage and file group stats logging
|
||
|
|
optional int32 inline_file_count = 8;
|
||
|
|
|
||
|
|
// Whether the file group has an account associated with it or not. This will
|
||
|
|
// allow us to slice metrics by having account or not. For more info see
|
||
|
|
// <internal>
|
||
|
|
optional bool has_account = 5;
|
||
|
|
|
||
|
|
// The build id for the file group. Unique identifier for a file group config
|
||
|
|
// created when using MDD Ingress API.
|
||
|
|
// For more details see <internal>.
|
||
|
|
optional int64 build_id = 6;
|
||
|
|
|
||
|
|
// The VariantID of the DataFileGroup. This is set up server side via code
|
||
|
|
// review. For more details see <internal>.
|
||
|
|
// Examples: "en", "de-universal", etc.
|
||
|
|
optional string variant_id = 7;
|
||
|
|
}
|
||
|
|
|
||
|
|
// The status of a MDD file group. This data is logged periodically to get
|
||
|
|
// a snapshot of the status of a file group on devices.
|
||
|
|
// Next tag: 5
|
||
|
|
message MddFileGroupStatus {
|
||
|
|
// Download status of the whole file group. This is an AND over the
|
||
|
|
// download status of each file within the file group.
|
||
|
|
optional MddFileGroupDownloadStatus.Code file_group_download_status = 1;
|
||
|
|
|
||
|
|
// Time since epoch when this file group was first added to mdd.
|
||
|
|
//
|
||
|
|
// Set to -1 if this time is unknown (for legacy groups).
|
||
|
|
//
|
||
|
|
// This matches the field "group_new_files_received_timestamp" in metadata
|
||
|
|
// <internal>
|
||
|
|
optional int64 group_added_timestamp_in_seconds = 2;
|
||
|
|
|
||
|
|
// Time since epoch when this file group was downloaded by mdd.
|
||
|
|
//
|
||
|
|
// Set to -1 if this time is unknown (for legacy groups) and non-downloaded
|
||
|
|
// groups
|
||
|
|
//
|
||
|
|
// This matches the field "group_downloaded_timestamp_in_millis" in metadata
|
||
|
|
// <internal>
|
||
|
|
optional int64 group_downloaded_timestamp_in_seconds = 3;
|
||
|
|
|
||
|
|
// Number of days since this status was last logged (number of days since
|
||
|
|
// daily maintenance was last run).
|
||
|
|
//
|
||
|
|
// Set to -1 if there is an invalid or unknown value.
|
||
|
|
//
|
||
|
|
// See <internal> for more info.
|
||
|
|
optional int32 days_since_last_log = 4;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Various health reports.
|
||
|
|
// Ideally, this should be defined as an empty message that allows extensions
|
||
|
|
// and each inner proto should be defined as its extension.
|
||
|
|
// TODO: Figure out if there are limitations in nano-proto that might
|
||
|
|
// not allow this.
|
||
|
|
//
|
||
|
|
// Next tag: 74
|
||
|
|
message MddLogData {
|
||
|
|
// MDD data download file group stats.
|
||
|
|
optional DataDownloadFileGroupStats data_download_file_group_stats = 10;
|
||
|
|
|
||
|
|
// Sampling interval used while logging this message. The default value 0 is
|
||
|
|
// not a valid value for messages using this filed since it a special value
|
||
|
|
// denoting that message should not be logged. Hence value of 0 means it was
|
||
|
|
// not filled in.
|
||
|
|
optional int64 sampling_interval = 21;
|
||
|
|
|
||
|
|
// Additional info necessary for stable sampling.
|
||
|
|
optional StableSamplingInfo stable_sampling_info = 72;
|
||
|
|
|
||
|
|
// Data download file group download status (logged periodically).
|
||
|
|
optional MddFileGroupStatus mdd_file_group_status = 32;
|
||
|
|
|
||
|
|
// Attributes of the device and/or MDD at the time we log other stats.
|
||
|
|
optional MddDeviceInfo device_info = 40;
|
||
|
|
|
||
|
|
// Android client info.
|
||
|
|
optional AndroidClientInfo android_client_info = 51;
|
||
|
|
|
||
|
|
optional MddStorageStats mdd_storage_stats = 46;
|
||
|
|
|
||
|
|
// MDD download result log.
|
||
|
|
optional MddDownloadResultLog mdd_download_result_log = 63;
|
||
|
|
|
||
|
|
reserved 1 to 9, 11 to 20, 22 to 31, 33 to 39, 41 to 45, 47 to 50, 52 to 62,
|
||
|
|
64 to 71, 73;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Info on sampling method used for log events. Stable sampling means if a
|
||
|
|
// device is selected to log, it will log all events. See <internal>
|
||
|
|
// Next tag: 5
|
||
|
|
message StableSamplingInfo {
|
||
|
|
// Whether a stable sampling method (as described in <internal>)
|
||
|
|
// was used.
|
||
|
|
optional bool stable_sampling_used = 1;
|
||
|
|
|
||
|
|
// When stable sampling was first enabled on the device. This will be useful
|
||
|
|
// when rolling out and processing logs over multiple days.
|
||
|
|
optional int64 stable_sampling_first_enabled_timestamp_ms = 2;
|
||
|
|
|
||
|
|
// Whether or not this device would log with the 1% cohort. Devices in the 1%
|
||
|
|
// cohort are *always* logging, and will always log without further code
|
||
|
|
// changes. When a device has this set to true, it's expected that the device
|
||
|
|
// is *always* logging and the sampling rate should not be changed to
|
||
|
|
// something that results in this device being excluded from the logging group
|
||
|
|
// (see invalid_sampling_rate_used).
|
||
|
|
//
|
||
|
|
// Most dashboards/metrics depending on linking together multiple events from
|
||
|
|
// the same device should filter to devices/events that have this set to true
|
||
|
|
// (with the caveat that we won't use all data from all devices reporting).
|
||
|
|
// This is useful when we need to change sampling rates, e.g. for an
|
||
|
|
// experiment.
|
||
|
|
optional bool part_of_always_logging_group = 3;
|
||
|
|
|
||
|
|
// If we are using stable sampling, we expect a sampling rate where '100 %
|
||
|
|
// sample_interval == 0'. This ensures that devices logging at 1 percent
|
||
|
|
// sampling interval, will continue to log at other chosen sampling rates too.
|
||
|
|
// This should only be false if we've incorrectly configured our sampling
|
||
|
|
// rates (e.g. a sampling rate of 101 would mean that the 1 percent cohort
|
||
|
|
// devices would not log).
|
||
|
|
optional bool invalid_sampling_rate_used = 4;
|
||
|
|
}
|
||
|
|
|
||
|
|
// MDD download result log.
|
||
|
|
message MddDownloadResultLog {
|
||
|
|
optional MddDownloadResult.Code result = 1;
|
||
|
|
// File group information.
|
||
|
|
optional DataDownloadFileGroupStats data_download_file_group_stats = 2;
|
||
|
|
}
|
||
|
|
|
||
|
|
// MDD Storage stats
|
||
|
|
// Next tag 9
|
||
|
|
message MddStorageStats {
|
||
|
|
repeated DataDownloadFileGroupStats data_download_file_group_stats = 1;
|
||
|
|
|
||
|
|
// NOTE: The four repeated fields total_bytes_used, total_inline_bytes_used,
|
||
|
|
// downloaded_group_bytes_used, and downloaded_group_inline_bytes_used have
|
||
|
|
// the same length and an element from all fields with the same index
|
||
|
|
// refers to the same file group.
|
||
|
|
|
||
|
|
// total_bytes_used[x] represents the total bytes used on disk by the
|
||
|
|
// file group index x.
|
||
|
|
repeated uint64 total_bytes_used = 2;
|
||
|
|
|
||
|
|
// total_inline_bytes_used[x] represents the total bytes used on disk by
|
||
|
|
// _inline_ files of file group index x.
|
||
|
|
repeated uint64 total_inline_bytes_used = 7 [packed = true];
|
||
|
|
|
||
|
|
// Similarly, the downloaded_group_bytes_used[x]
|
||
|
|
// represents the bytes used in the corresponding downloaded file group.
|
||
|
|
repeated uint64 downloaded_group_bytes_used = 3;
|
||
|
|
|
||
|
|
// Similarly, the downloaded_group_inline_bytes_used[x] represents the
|
||
|
|
// bytes of _inline_ files used in the corresponding downloaded file group.
|
||
|
|
repeated uint64 downloaded_group_inline_bytes_used = 8 [packed = true];
|
||
|
|
|
||
|
|
// Total bytes used by all MDD file groups.
|
||
|
|
// Measured by adding up file sizes for all files that are known to MDD.
|
||
|
|
optional uint64 total_mdd_bytes_used = 4;
|
||
|
|
|
||
|
|
// Total bytes used by MDD download directory.
|
||
|
|
optional uint64 total_mdd_directory_bytes_used = 5;
|
||
|
|
|
||
|
|
// Number of days since this status was last logged (number of days since
|
||
|
|
// daily maintenance was last run).
|
||
|
|
//
|
||
|
|
// Set to -1 if there is an invalid or unknown value.
|
||
|
|
//
|
||
|
|
// See <internal> for more info.
|
||
|
|
optional int32 days_since_last_log = 6;
|
||
|
|
}
|