blob: 145ccd9bf8f978b1035b80129c5a6ffff6240952 [file] [log] [blame]
// 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.
// [START declaration]
syntax = "proto3";
package com_android_cts_releaseparser;
// [END declaration]
// [START java_declaration]
option java_package = "com.android.cts.releaseparser";
option java_outer_classname = "ReleaseProto";
// [END java_declaration]
// [START messages]
message Option {
string name = 1;
string key = 2;
string value =3;
}
message TestModuleConfig {
string module_name = 1;
string component = 2;
string description = 3;
repeated Option options = 4;
message TargetPreparer {
string test_class = 1;
repeated Option options = 2;
}
repeated TargetPreparer target_preparers = 5;
repeated string test_file_names = 6;
message TestClass {
string test_class = 1;
string package = 2;
repeated Option options = 3;
}
repeated TestClass test_classes = 7;
repeated string test_jars = 8;
}
message Element {
string name = 1;
string value = 2;
}
message ApiAnnotation {
int32 visibility = 1;
string type = 2;
repeated Element elements = 3;
}
message ApiField {
string defining_class = 1;
string name = 2;
string type = 3;
int32 access_flags = 4;
string initial_value = 5;
repeated ApiAnnotation annotations = 6;
string value = 7;
}
message ApiMethod {
string defining_class = 1;
string name = 2;
repeated string parameters = 3;
string return_type = 4;
int32 access_flags = 5;
string known_failure_filter = 6;
repeated ApiAnnotation annotations = 7;
}
message ApiClass {
string name = 1;
string type = 2;
string super_class = 3;
repeated string interfaces = 4;
TestClassType test_class_type = 5;
int32 access_flags = 6;
repeated ApiAnnotation annotations = 7;
repeated ApiMethod methods = 8;
repeated ApiField fields = 9;
}
message ApiPackage {
string name = 1;
string package_file = 2;
string content_id = 3;
string op_codes = 4;
repeated ApiClass classes = 5;
string error = 6;
}
enum TestClassType {
UNKNOWN = 0;
JUNIT3 = 1;
JUNIT4 = 2;
PARAMETERIZED = 3;
JAVAHOST = 4;
}
message TestSuite {
string name = 1;
// Version
string version = 2;
// Build Number
string build_number = 3;
// Content ID
string content_id = 4;
enum TestType {
UNKNOWN = 0;
ANDROIDJUNIT = 1;
JAVAHOST = 2;
GTEST = 3;
LIBCORE = 4;
DALVIK = 5;
DEQP = 6;
}
message Module {
string name = 1;
string config_file = 2;
TestType test_type = 3;
string test_class = 4;
repeated ApiPackage packages = 5;
}
repeated Module modules = 5;
}
message Service {
string name = 1;
string file = 2;
repeated string arguments = 3;
string clazz = 4;
string user = 5;
string group = 6;
string writepid = 7;
repeated string options = 8;
}
message Api {
string name = 1;
string version = 2;
// map of Package Name & Package Message
map<string, ApiPackage> packages = 3;
}
message UsesFeature {
string name = 1;
string required = 2;
}
message UsesLibrary {
string name = 1;
string required = 2;
}
message AppInfo {
string package_name = 1;
string version_code = 2;
string version_name = 3;
string sdk_version = 4;
string target_sdk_version = 5;
repeated UsesFeature uses_features = 6;
repeated UsesLibrary uses_libraries = 7;
repeated string native_code = 8;
repeated string uses_permissions = 9;
repeated string activities = 10;
repeated string services = 11;
repeated string providers = 12;
map<string, string> properties = 13;
repeated ApiPackage external_api_packages = 14;
repeated ApiPackage internal_api_packages = 15;
PackageFileContent package_file_content = 16;
string package_signature = 17;
}
message ImageSection {
uint32 offset = 1;
uint32 size = 2;
}
// art/runtime/image.h
message ArtInfo {
bool valid = 1;
// skip magic_[4]
string version = 2;
uint32 image_begin = 3;
uint32 image_size = 4;
uint32 oat_checksum = 5;
uint32 oat_file_begin = 6;
uint32 oat_data_begin = 7;
uint32 oat_data_end = 8;
uint32 oat_file_end = 9;
// app image headers only
uint32 boot_image_begin = 10;
uint32 boot_image_size = 11;
uint32 boot_oat_begin = 12;
uint32 boot_oat_size = 13;
int32 patch_delta = 14;
uint32 image_roots = 15;
uint32 pointer_size = 16;
uint32 compile_pic = 17;
uint32 is_pic = 18;
repeated ImageSection image_sections = 19;
repeated uint64 image_methods = 20;
uint32 storage_mode = 21;
uint32 data_size = 22;
}
// art/dex2oat/linker/oat_writer.cc OatDexFile
message OatDexInfo {
string dex_file_location_data = 1;
// The checksum of the dex file.
uint32 dex_file_location_checksum = 2;
// Offset of the dex file in the vdex file.
uint32 dex_file_offset = 3;
// The lookup table offset in the oat file. Set in WriteTypeLookupTables.
uint32 lookup_table_offset = 4;
// Class and BSS offsets set in PrepareLayout.
uint32 class_offsets_offset = 5;
uint32 method_bss_mapping_offset = 6;
uint32 type_bss_mapping_offset = 7;
uint32 string_bss_mapping_offset = 8;
// Offset of dex sections that will have different runtime madvise states.
uint32 dex_sections_layout_offset = 9;
}
// art/runtime/oat.h
message OatInfo {
// skip magic_[4]
string version = 1;
uint32 adler32_checksum = 2;
// art/libartbase/arch/instruction_set.h
uint32 instruction_set = 3;
uint32 instruction_set_features_bitmap = 4;
uint32 dex_file_count = 5;
uint32 oat_dex_files_offset = 6;
uint32 executable_offset = 7;
uint32 interpreter_to_interpreter_bridge_offset = 8;
uint32 interpreter_to_compiled_code_bridge_offset = 9;
uint32 jni_dlsym_lookup_offset = 10;
uint32 quick_generic_jni_trampoline_offset = 11;
uint32 quick_imt_conflict_trampoline_offset = 12;
uint32 quick_resolution_trampoline_offset = 13;
uint32 quick_to_interpreter_bridge_offset = 14;
// for backward compatibility, removed from version 162, see aosp/e0669326c0282b5b645aba75160425eef9d57617
uint32 image_patch_delta = 15;
uint32 image_file_location_oat_checksum = 16;
// for backward compatibility, removed from version 162, see aosp/e0669326c0282b5b645aba75160425eef9d57617
uint32 image_file_location_oat_data_begin = 17;
uint32 key_value_store_size = 18;
// int8_t key_value_store_[0];
map<string, string> key_value_store = 19;
repeated OatDexInfo oat_dex_info = 20;
bool valid = 21;
int32 bits = 22;
string architecture = 23;
}
message DexSectionHeader {
uint32 dex_size = 1;
uint32 dex_shared_data_size = 2;
uint32 quickening_info_size = 3;
}
// art/runtime/vdex_file.h
message VdexInfo {
bool valid = 1;
// skip magic_[4]
string verifier_deps_version = 2;
string dex_section_version = 3;
uint32 number_of_dex_files = 4;
uint32 verifier_deps_size = 5;
repeated uint32 checksums = 6;
repeated DexSectionHeader dex_section_headers = 7;
}
message Permission {
string name = 1;
repeated Element elements = 2;
}
message PermissionList {
string name = 1;
repeated Permission permissions = 2;
}
message PackageFileContent {
map<string, Entry> entries = 1;
}
// An entry in a release
message Entry {
// Name
string name = 1;
enum EntryType {
FOLDER = 0;
FILE = 1;
TEST_MODULE_CONFIG = 2;
JAR = 3;
APK = 4;
EXE = 5;
SO = 6;
OAT = 7;
ODEX = 8;
VDEX = 9;
TEST_SUITE_TRADEFED = 10;
BUILD_PROP = 11;
SYMBOLIC_LINK = 12;
RC = 13;
ART = 14;
XML = 15;
IMG = 16;
}
// Type
EntryType type = 2;
// Size
int64 size = 3;
// Content ID
string content_id = 4;
// code_id
string code_id = 5;
// Parent folder
string abi_architecture = 6;
int32 abi_bits = 7;
string parent_folder = 8;
// Relative path
string relative_path = 9;
repeated string dependencies = 10;
repeated string dynamic_loading_dependencies = 11;
// file type specified info
AppInfo app_info = 12;
ArtInfo art_info = 13;
OatInfo oat_info = 14;
VdexInfo vdex_info = 15;
// TestModule.config message
TestModuleConfig test_module_config = 16;
// Native services
repeated Service services = 17;
// Device permissions
map<string, PermissionList> device_permissions = 18;
// property map(key,value)
map<string, string> properties = 19;
}
enum ReleaseType {
DEVICE_BUILD = 0;
TEST_SUITE = 1;
APP_DISTRIBUTION_PACKAGE = 2;
}
message ReleaseContent {
// Name
string name = 1;
// Version
string version = 2;
// Build Number
string build_number = 3;
// Full name
string fullname = 4;
// release uid e.g. Build Fingerprint
string release_id = 5;
// Content id
string content_id = 6;
// Size in byte
int64 size = 7;
ReleaseType release_type = 8;
// property map(key,value)
map<string, string> properties = 9;
// File Entry map(relative_path, entry)
map<string, Entry> entries = 10;
// Test Suite specific
string test_suite_tradefed = 11;
string target_arch = 12;
repeated string known_failures = 13;
}
// [END messages]