diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-15 21:51:51 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-15 21:51:51 +0000 |
commit | 3632265538fb15c7e7886eb42aa4ad14224611ec (patch) | |
tree | cf97cbbca48921ec108bd9d06cd741cc3a986298 | |
parent | 2dd869fd02e8398dbd15574f1dd6d979eb23339b (diff) | |
parent | f72cf4491e923bd331cbb3d8e315d8c62bbb8814 (diff) | |
download | vts-3632265538fb15c7e7886eb42aa4ad14224611ec.tar.gz |
Snap for 8730993 from f72cf4491e923bd331cbb3d8e315d8c62bbb8814 to mainline-tzdata3-releaseaml_tz3_314012070aml_tz3_314012050aml_tz3_314012010aml_tz3_313110000aml_tz3_312511020aml_tz3_312511010aml_tz3_312410020aml_tz3_312410010android12-mainline-tzdata3-releaseaml_tz3_314012010
Change-Id: Ib087488a23042f99031c6a3be83cb7df7305d450
71 files changed, 4981 insertions, 1581 deletions
diff --git a/compilation_tools/vtsc/VtsCompilerUtils.h b/compilation_tools/vtsc/VtsCompilerUtils.h index 7e265a00d..344ce9d8c 100644 --- a/compilation_tools/vtsc/VtsCompilerUtils.h +++ b/compilation_tools/vtsc/VtsCompilerUtils.h @@ -17,11 +17,10 @@ #ifndef VTS_COMPILATION_TOOLS_VTSC_CODE_UTILS_H_ #define VTS_COMPILATION_TOOLS_VTSC_CODE_UTILS_H_ -#include <hidl-util/FQName.h> -#include <sys/types.h> - #include <string> +#include <hidl-util/FQName.h> + #include "test/vts/proto/ComponentSpecificationMessage.pb.h" using namespace std; diff --git a/proto/AndroidSystemControlMessage.proto b/proto/AndroidSystemControlMessage.proto index f40125ebb..de6664050 100644 --- a/proto/AndroidSystemControlMessage.proto +++ b/proto/AndroidSystemControlMessage.proto @@ -176,8 +176,8 @@ message AndroidSystemControlResponseMessage { // coverage measurement data. optional bytes result = 1004; - repeated bytes stdout_str = 2001; - repeated bytes stderr_str = 2002; + repeated bytes stdout = 2001; + repeated bytes stderr = 2002; repeated int32 exit_code = 2003; // read data and return value from FMQ driver diff --git a/proto/AndroidSystemControlMessage_pb2.py b/proto/AndroidSystemControlMessage_pb2.py index 8ab0f5f8b..f19d73bca 100644 --- a/proto/AndroidSystemControlMessage_pb2.py +++ b/proto/AndroidSystemControlMessage_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: AndroidSystemControlMessage.proto @@ -9,6 +8,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -22,10 +22,10 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='AndroidSystemControlMessage.proto', package='android.vts', syntax='proto2', - serialized_options=None, - serialized_pb=_b('\n!AndroidSystemControlMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\x1a\"VtsResourceControllerMessage.proto\"\x80\x06\n\"AndroidSystemControlCommandMessage\x12.\n\x0c\x63ommand_type\x18\x01 \x01(\x0e\x32\x18.android.vts.CommandType\x12\x0e\n\x05paths\x18\xe9\x07 \x03(\x0c\x12\x16\n\rcallback_port\x18\xcd\x08 \x01(\x05\x12\x15\n\x0cservice_name\x18\xd1\x0f \x01(\x0c\x12\x30\n\x0b\x64river_type\x18\xb9\x17 \x01(\x0e\x32\x1a.android.vts.VtsDriverType\x12\x12\n\tfile_path\x18\xba\x17 \x01(\x0c\x12\r\n\x04\x62its\x18\xbb\x17 \x01(\x05\x12\x15\n\x0ctarget_class\x18\xbc\x17 \x01(\x05\x12\x14\n\x0btarget_type\x18\xbd\x17 \x01(\x05\x12\x1b\n\x0etarget_version\x18\xbe\x17 \x01(\x05\x42\x02\x18\x01\x12\x14\n\x0bmodule_name\x18\xbf\x17 \x01(\x0c\x12\x17\n\x0etarget_package\x18\xc0\x17 \x01(\x0c\x12\x1e\n\x15target_component_name\x18\xc1\x17 \x01(\x0c\x12!\n\x14target_version_major\x18\xc2\x17 \x01(\x05:\x02-1\x12!\n\x14target_version_minor\x18\xc3\x17 \x01(\x05:\x02-1\x12\x14\n\x0bis_test_hal\x18\xc4\x17 \x01(\x08\x12\x1f\n\x16hw_binder_service_name\x18\xcd\x17 \x01(\x0c\x12\x0c\n\x03\x61rg\x18\xa1\x1f \x01(\x0c\x12\x1a\n\x11\x64river_caller_uid\x18\x85 \x01(\x0c\x12\x16\n\rshell_command\x18\x89\' \x03(\x0c\x12\x34\n\x0b\x66mq_request\x18\xf1. \x01(\x0b\x32\x1e.android.vts.FmqRequestMessage\x12\x43\n\x13hidl_memory_request\x18\xf2. \x01(\x0b\x32%.android.vts.HidlMemoryRequestMessage\x12\x43\n\x13hidl_handle_request\x18\xf3. \x01(\x0b\x32%.android.vts.HidlHandleRequestMessage\"\xa1\x03\n#AndroidSystemControlResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode\x12\x0f\n\x06reason\x18\xe9\x07 \x01(\x0c\x12\x13\n\nfile_names\x18\xea\x07 \x03(\x0c\x12\r\n\x04spec\x18\xeb\x07 \x01(\x0c\x12\x0f\n\x06result\x18\xec\x07 \x01(\x0c\x12\x13\n\nstdout_str\x18\xd1\x0f \x03(\x0c\x12\x13\n\nstderr_str\x18\xd2\x0f \x03(\x0c\x12\x12\n\texit_code\x18\xd3\x0f \x03(\x05\x12\x36\n\x0c\x66mq_response\x18\xb9\x17 \x01(\x0b\x32\x1f.android.vts.FmqResponseMessage\x12\x45\n\x14hidl_memory_response\x18\xba\x17 \x01(\x0b\x32&.android.vts.HidlMemoryResponseMessage\x12\x45\n\x14hidl_handle_response\x18\xbb\x17 \x01(\x0b\x32&.android.vts.HidlHandleResponseMessage\"w\n#AndroidSystemCallbackRequestMessage\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\x0c\x12\x36\n\x03\x61rg\x18\x0b \x03(\x0b\x32).android.vts.VariableSpecificationMessage\"X\n$AndroidSystemCallbackResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode*\xf7\x02\n\x0b\x43ommandType\x12\x18\n\x14UNKNOWN_COMMAND_TYPE\x10\x00\x12\r\n\tLIST_HALS\x10\x01\x12\x11\n\rSET_HOST_INFO\x10\x02\x12\x08\n\x04PING\x10\x03\x12\x18\n\x14\x43HECK_DRIVER_SERVICE\x10\x65\x12\x19\n\x15LAUNCH_DRIVER_SERVICE\x10\x66\x12(\n$VTS_AGENT_COMMAND_READ_SPECIFICATION\x10g\x12\x0e\n\tLIST_APIS\x10\xc9\x01\x12\r\n\x08\x43\x41LL_API\x10\xca\x01\x12$\n\x1fVTS_AGENT_COMMAND_GET_ATTRIBUTE\x10\xcb\x01\x12,\n\'VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND\x10\xad\x02\x12\x14\n\x0fVTS_FMQ_COMMAND\x10\x91\x03\x12\x1c\n\x17VTS_HIDL_MEMORY_COMMAND\x10\x92\x03\x12\x1c\n\x17VTS_HIDL_HANDLE_COMMAND\x10\x93\x03*@\n\x0cResponseCode\x12\x19\n\x15UNKNOWN_RESPONSE_CODE\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x08\n\x04\x46\x41IL\x10\x02*\xfd\x01\n\rVtsDriverType\x12\x1a\n\x16UKNOWN_VTS_DRIVER_TYPE\x10\x00\x12$\n VTS_DRIVER_TYPE_HAL_CONVENTIONAL\x10\x01\x12\x1e\n\x1aVTS_DRIVER_TYPE_HAL_LEGACY\x10\x02\x12\x1c\n\x18VTS_DRIVER_TYPE_HAL_HIDL\x10\x03\x12\x31\n-VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL\x10\x04\x12\x1e\n\x1aVTS_DRIVER_TYPE_LIB_SHARED\x10\x0b\x12\x19\n\x15VTS_DRIVER_TYPE_SHELL\x10\x15') + serialized_pb=_b('\n!AndroidSystemControlMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\x1a\"VtsResourceControllerMessage.proto\"\x80\x06\n\"AndroidSystemControlCommandMessage\x12.\n\x0c\x63ommand_type\x18\x01 \x01(\x0e\x32\x18.android.vts.CommandType\x12\x0e\n\x05paths\x18\xe9\x07 \x03(\x0c\x12\x16\n\rcallback_port\x18\xcd\x08 \x01(\x05\x12\x15\n\x0cservice_name\x18\xd1\x0f \x01(\x0c\x12\x30\n\x0b\x64river_type\x18\xb9\x17 \x01(\x0e\x32\x1a.android.vts.VtsDriverType\x12\x12\n\tfile_path\x18\xba\x17 \x01(\x0c\x12\r\n\x04\x62its\x18\xbb\x17 \x01(\x05\x12\x15\n\x0ctarget_class\x18\xbc\x17 \x01(\x05\x12\x14\n\x0btarget_type\x18\xbd\x17 \x01(\x05\x12\x1b\n\x0etarget_version\x18\xbe\x17 \x01(\x05\x42\x02\x18\x01\x12\x14\n\x0bmodule_name\x18\xbf\x17 \x01(\x0c\x12\x17\n\x0etarget_package\x18\xc0\x17 \x01(\x0c\x12\x1e\n\x15target_component_name\x18\xc1\x17 \x01(\x0c\x12!\n\x14target_version_major\x18\xc2\x17 \x01(\x05:\x02-1\x12!\n\x14target_version_minor\x18\xc3\x17 \x01(\x05:\x02-1\x12\x14\n\x0bis_test_hal\x18\xc4\x17 \x01(\x08\x12\x1f\n\x16hw_binder_service_name\x18\xcd\x17 \x01(\x0c\x12\x0c\n\x03\x61rg\x18\xa1\x1f \x01(\x0c\x12\x1a\n\x11\x64river_caller_uid\x18\x85 \x01(\x0c\x12\x16\n\rshell_command\x18\x89\' \x03(\x0c\x12\x34\n\x0b\x66mq_request\x18\xf1. \x01(\x0b\x32\x1e.android.vts.FmqRequestMessage\x12\x43\n\x13hidl_memory_request\x18\xf2. \x01(\x0b\x32%.android.vts.HidlMemoryRequestMessage\x12\x43\n\x13hidl_handle_request\x18\xf3. \x01(\x0b\x32%.android.vts.HidlHandleRequestMessage\"\x99\x03\n#AndroidSystemControlResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode\x12\x0f\n\x06reason\x18\xe9\x07 \x01(\x0c\x12\x13\n\nfile_names\x18\xea\x07 \x03(\x0c\x12\r\n\x04spec\x18\xeb\x07 \x01(\x0c\x12\x0f\n\x06result\x18\xec\x07 \x01(\x0c\x12\x0f\n\x06stdout\x18\xd1\x0f \x03(\x0c\x12\x0f\n\x06stderr\x18\xd2\x0f \x03(\x0c\x12\x12\n\texit_code\x18\xd3\x0f \x03(\x05\x12\x36\n\x0c\x66mq_response\x18\xb9\x17 \x01(\x0b\x32\x1f.android.vts.FmqResponseMessage\x12\x45\n\x14hidl_memory_response\x18\xba\x17 \x01(\x0b\x32&.android.vts.HidlMemoryResponseMessage\x12\x45\n\x14hidl_handle_response\x18\xbb\x17 \x01(\x0b\x32&.android.vts.HidlHandleResponseMessage\"w\n#AndroidSystemCallbackRequestMessage\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\x0c\x12\x36\n\x03\x61rg\x18\x0b \x03(\x0b\x32).android.vts.VariableSpecificationMessage\"X\n$AndroidSystemCallbackResponseMessage\x12\x30\n\rresponse_code\x18\x01 \x01(\x0e\x32\x19.android.vts.ResponseCode*\xf7\x02\n\x0b\x43ommandType\x12\x18\n\x14UNKNOWN_COMMAND_TYPE\x10\x00\x12\r\n\tLIST_HALS\x10\x01\x12\x11\n\rSET_HOST_INFO\x10\x02\x12\x08\n\x04PING\x10\x03\x12\x18\n\x14\x43HECK_DRIVER_SERVICE\x10\x65\x12\x19\n\x15LAUNCH_DRIVER_SERVICE\x10\x66\x12(\n$VTS_AGENT_COMMAND_READ_SPECIFICATION\x10g\x12\x0e\n\tLIST_APIS\x10\xc9\x01\x12\r\n\x08\x43\x41LL_API\x10\xca\x01\x12$\n\x1fVTS_AGENT_COMMAND_GET_ATTRIBUTE\x10\xcb\x01\x12,\n\'VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND\x10\xad\x02\x12\x14\n\x0fVTS_FMQ_COMMAND\x10\x91\x03\x12\x1c\n\x17VTS_HIDL_MEMORY_COMMAND\x10\x92\x03\x12\x1c\n\x17VTS_HIDL_HANDLE_COMMAND\x10\x93\x03*@\n\x0cResponseCode\x12\x19\n\x15UNKNOWN_RESPONSE_CODE\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x08\n\x04\x46\x41IL\x10\x02*\xfd\x01\n\rVtsDriverType\x12\x1a\n\x16UKNOWN_VTS_DRIVER_TYPE\x10\x00\x12$\n VTS_DRIVER_TYPE_HAL_CONVENTIONAL\x10\x01\x12\x1e\n\x1aVTS_DRIVER_TYPE_HAL_LEGACY\x10\x02\x12\x1c\n\x18VTS_DRIVER_TYPE_HAL_HIDL\x10\x03\x12\x31\n-VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL\x10\x04\x12\x1e\n\x1aVTS_DRIVER_TYPE_LIB_SHARED\x10\x0b\x12\x19\n\x15VTS_DRIVER_TYPE_SHELL\x10\x15') , dependencies=[ComponentSpecificationMessage__pb2.DESCRIPTOR,VtsResourceControllerMessage__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) _COMMANDTYPE = _descriptor.EnumDescriptor( name='CommandType', @@ -35,65 +35,65 @@ _COMMANDTYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_COMMAND_TYPE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LIST_HALS', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SET_HOST_INFO', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PING', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CHECK_DRIVER_SERVICE', index=4, number=101, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LAUNCH_DRIVER_SERVICE', index=5, number=102, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_AGENT_COMMAND_READ_SPECIFICATION', index=6, number=103, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LIST_APIS', index=7, number=201, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CALL_API', index=8, number=202, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_AGENT_COMMAND_GET_ATTRIBUTE', index=9, number=203, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND', index=10, number=301, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_FMQ_COMMAND', index=11, number=401, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_HIDL_MEMORY_COMMAND', index=12, number=402, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_HIDL_HANDLE_COMMAND', index=13, number=403, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, - serialized_start=1526, - serialized_end=1901, + options=None, + serialized_start=1518, + serialized_end=1893, ) _sym_db.RegisterEnumDescriptor(_COMMANDTYPE) @@ -106,21 +106,21 @@ _RESPONSECODE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_RESPONSE_CODE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SUCCESS', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FAIL', index=2, number=2, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, - serialized_start=1903, - serialized_end=1967, + options=None, + serialized_start=1895, + serialized_end=1959, ) _sym_db.RegisterEnumDescriptor(_RESPONSECODE) @@ -133,37 +133,37 @@ _VTSDRIVERTYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UKNOWN_VTS_DRIVER_TYPE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_DRIVER_TYPE_HAL_CONVENTIONAL', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_DRIVER_TYPE_HAL_LEGACY', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_DRIVER_TYPE_HAL_HIDL', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_DRIVER_TYPE_LIB_SHARED', index=5, number=11, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_DRIVER_TYPE_SHELL', index=6, number=21, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, - serialized_start=1970, - serialized_end=2223, + options=None, + serialized_start=1962, + serialized_end=2215, ) _sym_db.RegisterEnumDescriptor(_VTSDRIVERTYPE) @@ -208,168 +208,168 @@ _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='paths', full_name='android.vts.AndroidSystemControlCommandMessage.paths', index=1, number=1001, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='callback_port', full_name='android.vts.AndroidSystemControlCommandMessage.callback_port', index=2, number=1101, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='service_name', full_name='android.vts.AndroidSystemControlCommandMessage.service_name', index=3, number=2001, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='driver_type', full_name='android.vts.AndroidSystemControlCommandMessage.driver_type', index=4, number=3001, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='file_path', full_name='android.vts.AndroidSystemControlCommandMessage.file_path', index=5, number=3002, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='bits', full_name='android.vts.AndroidSystemControlCommandMessage.bits', index=6, number=3003, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_class', full_name='android.vts.AndroidSystemControlCommandMessage.target_class', index=7, number=3004, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_type', full_name='android.vts.AndroidSystemControlCommandMessage.target_type', index=8, number=3005, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_version', full_name='android.vts.AndroidSystemControlCommandMessage.target_version', index=9, number=3006, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='module_name', full_name='android.vts.AndroidSystemControlCommandMessage.module_name', index=10, number=3007, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_package', full_name='android.vts.AndroidSystemControlCommandMessage.target_package', index=11, number=3008, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_component_name', full_name='android.vts.AndroidSystemControlCommandMessage.target_component_name', index=12, number=3009, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_version_major', full_name='android.vts.AndroidSystemControlCommandMessage.target_version_major', index=13, number=3010, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_version_minor', full_name='android.vts.AndroidSystemControlCommandMessage.target_version_minor', index=14, number=3011, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_test_hal', full_name='android.vts.AndroidSystemControlCommandMessage.is_test_hal', index=15, number=3012, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hw_binder_service_name', full_name='android.vts.AndroidSystemControlCommandMessage.hw_binder_service_name', index=16, number=3021, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='arg', full_name='android.vts.AndroidSystemControlCommandMessage.arg', index=17, number=4001, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='driver_caller_uid', full_name='android.vts.AndroidSystemControlCommandMessage.driver_caller_uid', index=18, number=4101, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='shell_command', full_name='android.vts.AndroidSystemControlCommandMessage.shell_command', index=19, number=5001, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='fmq_request', full_name='android.vts.AndroidSystemControlCommandMessage.fmq_request', index=20, number=6001, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_memory_request', full_name='android.vts.AndroidSystemControlCommandMessage.hidl_memory_request', index=21, number=6002, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_handle_request', full_name='android.vts.AndroidSystemControlCommandMessage.hidl_handle_request', index=22, number=6003, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -393,91 +393,91 @@ _ANDROIDSYSTEMCONTROLRESPONSEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='reason', full_name='android.vts.AndroidSystemControlResponseMessage.reason', index=1, number=1001, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='file_names', full_name='android.vts.AndroidSystemControlResponseMessage.file_names', index=2, number=1002, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='spec', full_name='android.vts.AndroidSystemControlResponseMessage.spec', index=3, number=1003, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='result', full_name='android.vts.AndroidSystemControlResponseMessage.result', index=4, number=1004, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( - name='stdout_str', full_name='android.vts.AndroidSystemControlResponseMessage.stdout_str', index=5, + name='stdout', full_name='android.vts.AndroidSystemControlResponseMessage.stdout', index=5, number=2001, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( - name='stderr_str', full_name='android.vts.AndroidSystemControlResponseMessage.stderr_str', index=6, + name='stderr', full_name='android.vts.AndroidSystemControlResponseMessage.stderr', index=6, number=2002, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='exit_code', full_name='android.vts.AndroidSystemControlResponseMessage.exit_code', index=7, number=2003, type=5, cpp_type=1, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='fmq_response', full_name='android.vts.AndroidSystemControlResponseMessage.fmq_response', index=8, number=3001, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_memory_response', full_name='android.vts.AndroidSystemControlResponseMessage.hidl_memory_response', index=9, number=3002, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_handle_response', full_name='android.vts.AndroidSystemControlResponseMessage.hidl_handle_response', index=10, number=3003, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=895, - serialized_end=1312, + serialized_end=1304, ) @@ -494,35 +494,35 @@ _ANDROIDSYSTEMCALLBACKREQUESTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='name', full_name='android.vts.AndroidSystemCallbackRequestMessage.name', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='arg', full_name='android.vts.AndroidSystemCallbackRequestMessage.arg', index=2, number=11, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], - serialized_start=1314, - serialized_end=1433, + serialized_start=1306, + serialized_end=1425, ) @@ -539,21 +539,21 @@ _ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], - serialized_start=1435, - serialized_end=1523, + serialized_start=1427, + serialized_end=1515, ) _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['command_type'].enum_type = _COMMANDTYPE @@ -574,36 +574,36 @@ DESCRIPTOR.message_types_by_name['AndroidSystemCallbackResponseMessage'] = _ANDR DESCRIPTOR.enum_types_by_name['CommandType'] = _COMMANDTYPE DESCRIPTOR.enum_types_by_name['ResponseCode'] = _RESPONSECODE DESCRIPTOR.enum_types_by_name['VtsDriverType'] = _VTSDRIVERTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) -AndroidSystemControlCommandMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlCommandMessage', (_message.Message,), { - 'DESCRIPTOR' : _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE, - '__module__' : 'AndroidSystemControlMessage_pb2' +AndroidSystemControlCommandMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlCommandMessage', (_message.Message,), dict( + DESCRIPTOR = _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE, + __module__ = 'AndroidSystemControlMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemControlCommandMessage) - }) + )) _sym_db.RegisterMessage(AndroidSystemControlCommandMessage) -AndroidSystemControlResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlResponseMessage', (_message.Message,), { - 'DESCRIPTOR' : _ANDROIDSYSTEMCONTROLRESPONSEMESSAGE, - '__module__' : 'AndroidSystemControlMessage_pb2' +AndroidSystemControlResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlResponseMessage', (_message.Message,), dict( + DESCRIPTOR = _ANDROIDSYSTEMCONTROLRESPONSEMESSAGE, + __module__ = 'AndroidSystemControlMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemControlResponseMessage) - }) + )) _sym_db.RegisterMessage(AndroidSystemControlResponseMessage) -AndroidSystemCallbackRequestMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackRequestMessage', (_message.Message,), { - 'DESCRIPTOR' : _ANDROIDSYSTEMCALLBACKREQUESTMESSAGE, - '__module__' : 'AndroidSystemControlMessage_pb2' +AndroidSystemCallbackRequestMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackRequestMessage', (_message.Message,), dict( + DESCRIPTOR = _ANDROIDSYSTEMCALLBACKREQUESTMESSAGE, + __module__ = 'AndroidSystemControlMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemCallbackRequestMessage) - }) + )) _sym_db.RegisterMessage(AndroidSystemCallbackRequestMessage) -AndroidSystemCallbackResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackResponseMessage', (_message.Message,), { - 'DESCRIPTOR' : _ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE, - '__module__' : 'AndroidSystemControlMessage_pb2' +AndroidSystemCallbackResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackResponseMessage', (_message.Message,), dict( + DESCRIPTOR = _ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE, + __module__ = 'AndroidSystemControlMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemCallbackResponseMessage) - }) + )) _sym_db.RegisterMessage(AndroidSystemCallbackResponseMessage) -_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['target_version']._options = None +_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['target_version'].has_options = True +_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['target_version']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) # @@protoc_insertion_point(module_scope) diff --git a/proto/ComponentSpecificationMessage_pb2.py b/proto/ComponentSpecificationMessage_pb2.py index 69f8937ef..517bf1933 100644 --- a/proto/ComponentSpecificationMessage_pb2.py +++ b/proto/ComponentSpecificationMessage_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: ComponentSpecificationMessage.proto @@ -9,6 +8,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,9 +20,9 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='ComponentSpecificationMessage.proto', package='android.vts', syntax='proto2', - serialized_options=_b('\n\025com.android.vts.protoB VtsComponentSpecificationMessage'), serialized_pb=_b('\n#ComponentSpecificationMessage.proto\x12\x0b\x61ndroid.vts\"e\n\x1c\x43\x61llFlowSpecificationMessage\x12\x14\n\x05\x65ntry\x18\x01 \x01(\x08:\x05\x66\x61lse\x12\x13\n\x04\x65xit\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x0c\n\x04next\x18\x0b \x03(\x0c\x12\x0c\n\x04prev\x18\x0c \x03(\x0c\"C\n NativeCodeCoverageRawDataMessage\x12\x11\n\tfile_path\x18\x01 \x01(\x0c\x12\x0c\n\x04gcda\x18\x0b \x01(\x0c\"\x95\x03\n\x13\x46unctionCallMessage\x12\x1b\n\x13hidl_interface_name\x18\x01 \x01(\x0c\x12\x19\n\rhal_driver_id\x18\x0b \x01(\x05:\x02-1\x12\x34\n\x0f\x63omponent_class\x18\x15 \x01(\x0e\x32\x1b.android.vts.ComponentClass\x12\x32\n\x0e\x63omponent_type\x18\x16 \x01(\x0e\x32\x1a.android.vts.ComponentType\x12\"\n\x16\x63omponent_type_version\x18\x17 \x01(\x0c\x42\x02\x18\x01\x12\x16\n\x0e\x63omponent_name\x18\x18 \x01(\x0c\x12\x14\n\x0cpackage_name\x18\x19 \x01(\x0c\x12(\n\x1c\x63omponent_type_version_major\x18\x1a \x01(\x05:\x02-1\x12(\n\x1c\x63omponent_type_version_minor\x18\x1b \x01(\x05:\x02-1\x12\x36\n\x03\x61pi\x18\x64 \x01(\x0b\x32).android.vts.FunctionSpecificationMessage\"\xf4\x05\n\x1c\x46unctionSpecificationMessage\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12\x16\n\x0esubmodule_name\x18\x02 \x01(\x0c\x12\x19\n\x11hidl_interface_id\x18\x03 \x01(\x05\x12\x14\n\x0cis_inherited\x18\x04 \x01(\x08\x12>\n\x0breturn_type\x18\x0b \x01(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x43\n\x10return_type_hidl\x18\x0c \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12N\n\x1areturn_type_submodule_spec\x18\r \x01(\x0b\x32*.android.vts.ComponentSpecificationMessage\x12\x36\n\x03\x61rg\x18\x15 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12;\n\x08\x63\x61llflow\x18\x1f \x03(\x0b\x32).android.vts.CallFlowSpecificationMessage\x12\x1a\n\x0b\x64o_not_fuzz\x18 \x01(\x08:\x05\x66\x61lse\x12\x17\n\x0bis_callback\x18) \x01(\x08\x42\x02\x18\x01\x12J\n\x10\x66unction_pointer\x18* \x01(\x0b\x32\x30.android.vts.FunctionPointerSpecificationMessage\x12\x16\n\x0eprofiling_data\x18\x65 \x03(\x02\x12 \n\x17processed_coverage_data\x18\xc9\x01 \x03(\r\x12I\n\x11raw_coverage_data\x18\xca\x01 \x03(\x0b\x32-.android.vts.NativeCodeCoverageRawDataMessage\x12\x14\n\x0bparent_path\x18\xad\x02 \x01(\x0c\x12\x17\n\x0esyscall_number\x18\x91\x03 \x01(\r\"\xf5\x02\n\x16ScalarDataValueMessage\x12\x0e\n\x06\x62ool_t\x18\x01 \x01(\x08\x12\x0e\n\x06int8_t\x18\x0b \x01(\x05\x12\x0f\n\x07uint8_t\x18\x0c \x01(\r\x12\x0c\n\x04\x63har\x18\r \x01(\x05\x12\r\n\x05uchar\x18\x0e \x01(\r\x12\x0f\n\x07int16_t\x18\x15 \x01(\x05\x12\x10\n\x08uint16_t\x18\x16 \x01(\r\x12\x0f\n\x07int32_t\x18\x1f \x01(\x05\x12\x10\n\x08uint32_t\x18 \x01(\r\x12\x0f\n\x07int64_t\x18) \x01(\x03\x12\x10\n\x08uint64_t\x18* \x01(\x04\x12\x0f\n\x07\x66loat_t\x18\x65 \x01(\x02\x12\x10\n\x08\x64ouble_t\x18\x66 \x01(\x01\x12\x10\n\x07pointer\x18\xc9\x01 \x01(\r\x12\x0f\n\x06opaque\x18\xca\x01 \x01(\r\x12\x15\n\x0cvoid_pointer\x18\xd3\x01 \x01(\r\x12\x15\n\x0c\x63har_pointer\x18\xd4\x01 \x01(\r\x12\x16\n\ruchar_pointer\x18\xd5\x01 \x01(\r\x12\x18\n\x0fpointer_pointer\x18\xfb\x01 \x01(\r\"\xd1\x01\n#FunctionPointerSpecificationMessage\x12\x15\n\rfunction_name\x18\x01 \x01(\x0c\x12\x0f\n\x07\x61\x64\x64ress\x18\x0b \x01(\r\x12\n\n\x02id\x18\x15 \x01(\x0c\x12\x36\n\x03\x61rg\x18\x65 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12>\n\x0breturn_type\x18o \x01(\x0b\x32).android.vts.VariableSpecificationMessage\"9\n\x16StringDataValueMessage\x12\x0f\n\x07message\x18\x01 \x01(\x0c\x12\x0e\n\x06length\x18\x0b \x01(\r\"z\n\x14\x45numDataValueMessage\x12\x12\n\nenumerator\x18\x01 \x03(\x0c\x12\x39\n\x0cscalar_value\x18\x02 \x03(\x0b\x32#.android.vts.ScalarDataValueMessage\x12\x13\n\x0bscalar_type\x18\x03 \x01(\x0c\"f\n\x16MemoryDataValueMessage\x12\x0c\n\x04size\x18\x01 \x01(\x03\x12\x10\n\x08\x63ontents\x18\x02 \x01(\x0c\x12\x12\n\x06mem_id\x18\x03 \x01(\x05:\x02-1\x12\x18\n\x10hidl_mem_address\x18\x04 \x01(\x04\"\xaa\x01\n\tFdMessage\x12!\n\x04type\x18\x01 \x01(\x0e\x32\x13.android.vts.FdType\x12\x0c\n\x04mode\x18\x02 \x01(\r\x12\r\n\x05\x66lags\x18\x03 \x01(\x05\x12\x11\n\tfile_name\x18\x04 \x01(\x0c\x12\x15\n\rfile_mode_str\x18\x05 \x01(\x0c\x12\x33\n\x06memory\x18\x06 \x01(\x0b\x32#.android.vts.MemoryDataValueMessage\"\xb9\x01\n\x16HandleDataValueMessage\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x0f\n\x07num_fds\x18\x02 \x01(\x05\x12\x10\n\x08num_ints\x18\x03 \x01(\x05\x12&\n\x06\x66\x64_val\x18\x04 \x03(\x0b\x32\x16.android.vts.FdMessage\x12\x0f\n\x07int_val\x18\x05 \x03(\x05\x12\x15\n\thandle_id\x18\x06 \x01(\x05:\x02-1\x12\x1b\n\x13hidl_handle_address\x18\x07 \x01(\x04\"\xb2\x0b\n\x1cVariableSpecificationMessage\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12\'\n\x04type\x18\x02 \x01(\x0e\x32\x19.android.vts.VariableType\x12\x39\n\x0cscalar_value\x18\x65 \x01(\x0b\x32#.android.vts.ScalarDataValueMessage\x12\x13\n\x0bscalar_type\x18\x66 \x01(\x0c\x12\x39\n\x0cstring_value\x18o \x01(\x0b\x32#.android.vts.StringDataValueMessage\x12\x35\n\nenum_value\x18y \x01(\x0b\x32!.android.vts.EnumDataValueMessage\x12@\n\x0cvector_value\x18\x83\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x14\n\x0bvector_size\x18\x84\x01 \x01(\x05\x12@\n\x0cstruct_value\x18\x8d\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x14\n\x0bstruct_type\x18\x8e\x01 \x01(\x0c\x12>\n\nsub_struct\x18\x8f\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12?\n\x0bunion_value\x18\x97\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x13\n\nunion_type\x18\x98\x01 \x01(\x0c\x12=\n\tsub_union\x18\x99\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x44\n\x10safe_union_value\x18\x9a\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x33\n\x0fsafe_union_type\x18\x9b\x01 \x01(\x0e\x32\x19.android.vts.VariableType\x12\x42\n\x0esub_safe_union\x18\x9c\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12=\n\tfmq_value\x18\xa1\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x13\n\x06\x66mq_id\x18\xa2\x01 \x01(\x05:\x02-1\x12\x19\n\x10\x66mq_desc_address\x18\xa3\x01 \x01(\x04\x12=\n\tref_value\x18\xab\x01 \x01(\x0b\x32).android.vts.VariableSpecificationMessage\x12?\n\x11hidl_memory_value\x18\xac\x01 \x01(\x0b\x32#.android.vts.MemoryDataValueMessage\x12:\n\x0chandle_value\x18\xb5\x01 \x01(\x0b\x32#.android.vts.HandleDataValueMessage\x12\x18\n\x0fpredefined_type\x18\xc9\x01 \x01(\x0c\x12K\n\x10\x66unction_pointer\x18\xdd\x01 \x03(\x0b\x32\x30.android.vts.FunctionPointerSpecificationMessage\x12\x1b\n\x12hidl_callback_type\x18\xe7\x01 \x01(\x0c\x12\x1a\n\x11hidl_interface_id\x18\xf1\x01 \x01(\x05\x12\x1f\n\x16hidl_interface_pointer\x18\xf2\x01 \x01(\x04\x12\x17\n\x08is_input\x18\xad\x02 \x01(\x08:\x04true\x12\x19\n\tis_output\x18\xae\x02 \x01(\x08:\x05\x66\x61lse\x12\x18\n\x08is_const\x18\xaf\x02 \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x0bis_callback\x18\xb0\x02 \x01(\x08:\x05\x66\x61lse\"\xfb\x01\n\x1aStructSpecificationMessage\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12\x19\n\nis_pointer\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x37\n\x03\x61pi\x18\xe9\x07 \x03(\x0b\x32).android.vts.FunctionSpecificationMessage\x12<\n\nsub_struct\x18\xd1\x0f \x03(\x0b\x32\'.android.vts.StructSpecificationMessage\x12=\n\tattribute\x18\xb9\x17 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\"\xf6\x01\n\x1dInterfaceSpecificationMessage\x12\x1f\n\x10is_hidl_callback\x18\x65 \x01(\x08:\x05\x66\x61lse\x12\x37\n\x03\x61pi\x18\xd1\x0f \x03(\x0b\x32).android.vts.FunctionSpecificationMessage\x12=\n\tattribute\x18\xb9\x17 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12<\n\nsub_struct\x18\xa1\x1f \x03(\x0b\x32\'.android.vts.StructSpecificationMessage\"\x9f\x04\n\x1d\x43omponentSpecificationMessage\x12\x34\n\x0f\x63omponent_class\x18\x01 \x01(\x0e\x32\x1b.android.vts.ComponentClass\x12\x32\n\x0e\x63omponent_type\x18\x02 \x01(\x0e\x32\x1a.android.vts.ComponentType\x12\"\n\x16\x63omponent_type_version\x18\x03 \x01(\x02\x42\x02\x18\x01\x12\x16\n\x0e\x63omponent_name\x18\x04 \x01(\x0c\x12,\n\x0btarget_arch\x18\x05 \x01(\x0e\x32\x17.android.vts.TargetArch\x12(\n\x1c\x63omponent_type_version_major\x18\x06 \x01(\x05:\x02-1\x12(\n\x1c\x63omponent_type_version_minor\x18\x07 \x01(\x05:\x02-1\x12\x0f\n\x07package\x18\x0b \x01(\x0c\x12\x0e\n\x06import\x18\x0c \x03(\x0c\x12%\n\x1coriginal_data_structure_name\x18\xe9\x07 \x01(\x0c\x12\x0f\n\x06header\x18\xea\x07 \x03(\x0c\x12>\n\tinterface\x18\xd1\x0f \x01(\x0b\x32*.android.vts.InterfaceSpecificationMessage\x12=\n\tattribute\x18\xb5\x10 \x03(\x0b\x32).android.vts.VariableSpecificationMessage*\xc9\x01\n\x0e\x43omponentClass\x12\x11\n\rUNKNOWN_CLASS\x10\x00\x12\x14\n\x10HAL_CONVENTIONAL\x10\x01\x12\x1e\n\x1aHAL_CONVENTIONAL_SUBMODULE\x10\x02\x12\x0e\n\nHAL_LEGACY\x10\x03\x12\x0c\n\x08HAL_HIDL\x10\x04\x12!\n\x1dHAL_HIDL_WRAPPED_CONVENTIONAL\x10\x05\x12\x0e\n\nLIB_SHARED\x10\x0b\x12\n\n\x06KERNEL\x10\x15\x12\x11\n\rKERNEL_MODULE\x10\x16*\xd9\x03\n\rComponentType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\t\n\x05\x41UDIO\x10\x01\x12\n\n\x06\x43\x41MERA\x10\x02\x12\x07\n\x03GPS\x10\x03\x12\t\n\x05LIGHT\x10\x04\x12\x08\n\x04WIFI\x10\x05\x12\n\n\x06MOBILE\x10\x06\x12\r\n\tBLUETOOTH\x10\x07\x12\x07\n\x03NFC\x10\x08\x12\t\n\x05POWER\x10\t\x12\x0c\n\x08MEMTRACK\x10\n\x12\x07\n\x03\x42\x46P\x10\x0b\x12\x0c\n\x08VIBRATOR\x10\x0c\x12\x0b\n\x07THERMAL\x10\r\x12\x0c\n\x08TV_INPUT\x10\x0e\x12\n\n\x06TV_CEC\x10\x0f\x12\x0b\n\x07SENSORS\x10\x10\x12\x0b\n\x07VEHICLE\x10\x11\x12\x06\n\x02VR\x10\x12\x12\x16\n\x12GRAPHICS_ALLOCATOR\x10\x13\x12\x13\n\x0fGRAPHICS_MAPPER\x10\x14\x12\t\n\x05RADIO\x10\x15\x12\x0e\n\nCONTEXTHUB\x10\x16\x12\x15\n\x11GRAPHICS_COMPOSER\x10\x17\x12\r\n\tMEDIA_OMX\x10\x18\x12\x0e\n\nTESTS_MSGQ\x10\x19\x12\x10\n\x0cTESTS_MEMORY\x10\x1a\x12\r\n\tDUMPSTATE\x10\x1b\x12\x10\n\x0b\x42IONIC_LIBM\x10\xe9\x07\x12\x10\n\x0b\x42IONIC_LIBC\x10\xea\x07\x12\x13\n\x0eVNDK_LIBCUTILS\x10\xcd\x08\x12\x0c\n\x07SYSCALL\x10\xd1\x0f*\xb3\x03\n\x0cVariableType\x12\x19\n\x15UNKNOWN_VARIABLE_TYPE\x10\x00\x12\x13\n\x0fTYPE_PREDEFINED\x10\x01\x12\x0f\n\x0bTYPE_SCALAR\x10\x02\x12\x0f\n\x0bTYPE_STRING\x10\x03\x12\r\n\tTYPE_ENUM\x10\x04\x12\x0e\n\nTYPE_ARRAY\x10\x05\x12\x0f\n\x0bTYPE_VECTOR\x10\x06\x12\x0f\n\x0bTYPE_STRUCT\x10\x07\x12\x19\n\x15TYPE_FUNCTION_POINTER\x10\x08\x12\r\n\tTYPE_VOID\x10\t\x12\x16\n\x12TYPE_HIDL_CALLBACK\x10\n\x12\x12\n\x0eTYPE_SUBMODULE\x10\x0b\x12\x0e\n\nTYPE_UNION\x10\x0c\x12\x17\n\x13TYPE_HIDL_INTERFACE\x10\r\x12\x0f\n\x0bTYPE_HANDLE\x10\x0e\x12\r\n\tTYPE_MASK\x10\x0f\x12\x14\n\x10TYPE_HIDL_MEMORY\x10\x10\x12\x10\n\x0cTYPE_POINTER\x10\x11\x12\x11\n\rTYPE_FMQ_SYNC\x10\x12\x12\x13\n\x0fTYPE_FMQ_UNSYNC\x10\x13\x12\x0c\n\x08TYPE_REF\x10\x14\x12\x13\n\x0fTYPE_SAFE_UNION\x10\x15*Q\n\nTargetArch\x12\x17\n\x13UNKNOWN_TARGET_ARCH\x10\x00\x12\x13\n\x0fTARGET_ARCH_ARM\x10\x01\x12\x15\n\x11TARGET_ARCH_ARM64\x10\x02*b\n\x06\x46\x64Type\x12\r\n\tFILE_TYPE\x10\x01\x12\x0c\n\x08\x44IR_TYPE\x10\x02\x12\x0c\n\x08\x44\x45V_TYPE\x10\x03\x12\r\n\tPIPE_TYPE\x10\x04\x12\x0f\n\x0bSOCKET_TYPE\x10\x05\x12\r\n\tLINK_TYPE\x10\x06\x42\x39\n\x15\x63om.android.vts.protoB VtsComponentSpecificationMessage') ) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) _COMPONENTCLASS = _descriptor.EnumDescriptor( name='ComponentClass', @@ -32,43 +32,43 @@ _COMPONENTCLASS = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_CLASS', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HAL_CONVENTIONAL', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HAL_CONVENTIONAL_SUBMODULE', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HAL_LEGACY', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HAL_HIDL', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HAL_HIDL_WRAPPED_CONVENTIONAL', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LIB_SHARED', index=6, number=11, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KERNEL', index=7, number=21, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='KERNEL_MODULE', index=8, number=22, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=5138, serialized_end=5339, ) @@ -83,135 +83,135 @@ _COMPONENTTYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_TYPE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='AUDIO', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CAMERA', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GPS', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LIGHT', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='WIFI', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MOBILE', index=6, number=6, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BLUETOOTH', index=7, number=7, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='NFC', index=8, number=8, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='POWER', index=9, number=9, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEMTRACK', index=10, number=10, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BFP', index=11, number=11, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VIBRATOR', index=12, number=12, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='THERMAL', index=13, number=13, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TV_INPUT', index=14, number=14, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TV_CEC', index=15, number=15, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SENSORS', index=16, number=16, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VEHICLE', index=17, number=17, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VR', index=18, number=18, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GRAPHICS_ALLOCATOR', index=19, number=19, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GRAPHICS_MAPPER', index=20, number=20, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='RADIO', index=21, number=21, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CONTEXTHUB', index=22, number=22, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='GRAPHICS_COMPOSER', index=23, number=23, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEDIA_OMX', index=24, number=24, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TESTS_MSGQ', index=25, number=25, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TESTS_MEMORY', index=26, number=26, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DUMPSTATE', index=27, number=27, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BIONIC_LIBM', index=28, number=1001, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='BIONIC_LIBC', index=29, number=1002, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VNDK_LIBCUTILS', index=30, number=1101, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SYSCALL', index=31, number=2001, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=5342, serialized_end=5815, ) @@ -226,95 +226,95 @@ _VARIABLETYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_VARIABLE_TYPE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_PREDEFINED', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_SCALAR', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_STRING', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_ENUM', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_ARRAY', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_VECTOR', index=6, number=6, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_STRUCT', index=7, number=7, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_FUNCTION_POINTER', index=8, number=8, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_VOID', index=9, number=9, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_HIDL_CALLBACK', index=10, number=10, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_SUBMODULE', index=11, number=11, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_UNION', index=12, number=12, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_HIDL_INTERFACE', index=13, number=13, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_HANDLE', index=14, number=14, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_MASK', index=15, number=15, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_HIDL_MEMORY', index=16, number=16, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_POINTER', index=17, number=17, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_FMQ_SYNC', index=18, number=18, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_FMQ_UNSYNC', index=19, number=19, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_REF', index=20, number=20, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TYPE_SAFE_UNION', index=21, number=21, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=5818, serialized_end=6253, ) @@ -329,19 +329,19 @@ _TARGETARCH = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_TARGET_ARCH', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TARGET_ARCH_ARM', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TARGET_ARCH_ARM64', index=2, number=2, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=6255, serialized_end=6336, ) @@ -356,31 +356,31 @@ _FDTYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='FILE_TYPE', index=0, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DIR_TYPE', index=1, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='DEV_TYPE', index=2, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PIPE_TYPE', index=3, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SOCKET_TYPE', index=4, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LINK_TYPE', index=5, number=6, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=6338, serialized_end=6436, ) @@ -475,35 +475,35 @@ _CALLFLOWSPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='exit', full_name='android.vts.CallFlowSpecificationMessage.exit', index=1, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='next', full_name='android.vts.CallFlowSpecificationMessage.next', index=2, number=11, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='prev', full_name='android.vts.CallFlowSpecificationMessage.prev', index=3, number=12, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -527,21 +527,21 @@ _NATIVECODECOVERAGERAWDATAMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='gcda', full_name='android.vts.NativeCodeCoverageRawDataMessage.gcda', index=1, number=11, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -565,77 +565,77 @@ _FUNCTIONCALLMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_driver_id', full_name='android.vts.FunctionCallMessage.hal_driver_id', index=1, number=11, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_class', full_name='android.vts.FunctionCallMessage.component_class', index=2, number=21, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_type', full_name='android.vts.FunctionCallMessage.component_type', index=3, number=22, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_type_version', full_name='android.vts.FunctionCallMessage.component_type_version', index=4, number=23, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='component_name', full_name='android.vts.FunctionCallMessage.component_name', index=5, number=24, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='package_name', full_name='android.vts.FunctionCallMessage.package_name', index=6, number=25, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_type_version_major', full_name='android.vts.FunctionCallMessage.component_type_version_major', index=7, number=26, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_type_version_minor', full_name='android.vts.FunctionCallMessage.component_type_version_minor', index=8, number=27, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='api', full_name='android.vts.FunctionCallMessage.api', index=9, number=100, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -659,126 +659,126 @@ _FUNCTIONSPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='submodule_name', full_name='android.vts.FunctionSpecificationMessage.submodule_name', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_interface_id', full_name='android.vts.FunctionSpecificationMessage.hidl_interface_id', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_inherited', full_name='android.vts.FunctionSpecificationMessage.is_inherited', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='return_type', full_name='android.vts.FunctionSpecificationMessage.return_type', index=4, number=11, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='return_type_hidl', full_name='android.vts.FunctionSpecificationMessage.return_type_hidl', index=5, number=12, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='return_type_submodule_spec', full_name='android.vts.FunctionSpecificationMessage.return_type_submodule_spec', index=6, number=13, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='arg', full_name='android.vts.FunctionSpecificationMessage.arg', index=7, number=21, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='callflow', full_name='android.vts.FunctionSpecificationMessage.callflow', index=8, number=31, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='do_not_fuzz', full_name='android.vts.FunctionSpecificationMessage.do_not_fuzz', index=9, number=32, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_callback', full_name='android.vts.FunctionSpecificationMessage.is_callback', index=10, number=41, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='function_pointer', full_name='android.vts.FunctionSpecificationMessage.function_pointer', index=11, number=42, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='profiling_data', full_name='android.vts.FunctionSpecificationMessage.profiling_data', index=12, number=101, type=2, cpp_type=6, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='processed_coverage_data', full_name='android.vts.FunctionSpecificationMessage.processed_coverage_data', index=13, number=201, type=13, cpp_type=3, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='raw_coverage_data', full_name='android.vts.FunctionSpecificationMessage.raw_coverage_data', index=14, number=202, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='parent_path', full_name='android.vts.FunctionSpecificationMessage.parent_path', index=15, number=301, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='syscall_number', full_name='android.vts.FunctionSpecificationMessage.syscall_number', index=16, number=401, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -802,140 +802,140 @@ _SCALARDATAVALUEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='int8_t', full_name='android.vts.ScalarDataValueMessage.int8_t', index=1, number=11, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='uint8_t', full_name='android.vts.ScalarDataValueMessage.uint8_t', index=2, number=12, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='char', full_name='android.vts.ScalarDataValueMessage.char', index=3, number=13, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='uchar', full_name='android.vts.ScalarDataValueMessage.uchar', index=4, number=14, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='int16_t', full_name='android.vts.ScalarDataValueMessage.int16_t', index=5, number=21, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='uint16_t', full_name='android.vts.ScalarDataValueMessage.uint16_t', index=6, number=22, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='int32_t', full_name='android.vts.ScalarDataValueMessage.int32_t', index=7, number=31, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='uint32_t', full_name='android.vts.ScalarDataValueMessage.uint32_t', index=8, number=32, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='int64_t', full_name='android.vts.ScalarDataValueMessage.int64_t', index=9, number=41, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='uint64_t', full_name='android.vts.ScalarDataValueMessage.uint64_t', index=10, number=42, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='float_t', full_name='android.vts.ScalarDataValueMessage.float_t', index=11, number=101, type=2, cpp_type=6, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='double_t', full_name='android.vts.ScalarDataValueMessage.double_t', index=12, number=102, type=1, cpp_type=5, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='pointer', full_name='android.vts.ScalarDataValueMessage.pointer', index=13, number=201, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='opaque', full_name='android.vts.ScalarDataValueMessage.opaque', index=14, number=202, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='void_pointer', full_name='android.vts.ScalarDataValueMessage.void_pointer', index=15, number=211, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='char_pointer', full_name='android.vts.ScalarDataValueMessage.char_pointer', index=16, number=212, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='uchar_pointer', full_name='android.vts.ScalarDataValueMessage.uchar_pointer', index=17, number=213, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='pointer_pointer', full_name='android.vts.ScalarDataValueMessage.pointer_pointer', index=18, number=251, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -959,42 +959,42 @@ _FUNCTIONPOINTERSPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='address', full_name='android.vts.FunctionPointerSpecificationMessage.address', index=1, number=11, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='id', full_name='android.vts.FunctionPointerSpecificationMessage.id', index=2, number=21, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='arg', full_name='android.vts.FunctionPointerSpecificationMessage.arg', index=3, number=101, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='return_type', full_name='android.vts.FunctionPointerSpecificationMessage.return_type', index=4, number=111, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1018,21 +1018,21 @@ _STRINGDATAVALUEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='length', full_name='android.vts.StringDataValueMessage.length', index=1, number=11, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1056,28 +1056,28 @@ _ENUMDATAVALUEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='scalar_value', full_name='android.vts.EnumDataValueMessage.scalar_value', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='scalar_type', full_name='android.vts.EnumDataValueMessage.scalar_type', index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1101,35 +1101,35 @@ _MEMORYDATAVALUEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='contents', full_name='android.vts.MemoryDataValueMessage.contents', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='mem_id', full_name='android.vts.MemoryDataValueMessage.mem_id', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_mem_address', full_name='android.vts.MemoryDataValueMessage.hidl_mem_address', index=3, number=4, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1153,49 +1153,49 @@ _FDMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='mode', full_name='android.vts.FdMessage.mode', index=1, number=2, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='flags', full_name='android.vts.FdMessage.flags', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='file_name', full_name='android.vts.FdMessage.file_name', index=3, number=4, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='file_mode_str', full_name='android.vts.FdMessage.file_mode_str', index=4, number=5, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='memory', full_name='android.vts.FdMessage.memory', index=5, number=6, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1219,56 +1219,56 @@ _HANDLEDATAVALUEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='num_fds', full_name='android.vts.HandleDataValueMessage.num_fds', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='num_ints', full_name='android.vts.HandleDataValueMessage.num_ints', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='fd_val', full_name='android.vts.HandleDataValueMessage.fd_val', index=3, number=4, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='int_val', full_name='android.vts.HandleDataValueMessage.int_val', index=4, number=5, type=5, cpp_type=1, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='handle_id', full_name='android.vts.HandleDataValueMessage.handle_id', index=5, number=6, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_handle_address', full_name='android.vts.HandleDataValueMessage.hidl_handle_address', index=6, number=7, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1292,231 +1292,231 @@ _VARIABLESPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='type', full_name='android.vts.VariableSpecificationMessage.type', index=1, number=2, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='scalar_value', full_name='android.vts.VariableSpecificationMessage.scalar_value', index=2, number=101, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='scalar_type', full_name='android.vts.VariableSpecificationMessage.scalar_type', index=3, number=102, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='string_value', full_name='android.vts.VariableSpecificationMessage.string_value', index=4, number=111, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='enum_value', full_name='android.vts.VariableSpecificationMessage.enum_value', index=5, number=121, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='vector_value', full_name='android.vts.VariableSpecificationMessage.vector_value', index=6, number=131, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='vector_size', full_name='android.vts.VariableSpecificationMessage.vector_size', index=7, number=132, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='struct_value', full_name='android.vts.VariableSpecificationMessage.struct_value', index=8, number=141, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='struct_type', full_name='android.vts.VariableSpecificationMessage.struct_type', index=9, number=142, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='sub_struct', full_name='android.vts.VariableSpecificationMessage.sub_struct', index=10, number=143, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='union_value', full_name='android.vts.VariableSpecificationMessage.union_value', index=11, number=151, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='union_type', full_name='android.vts.VariableSpecificationMessage.union_type', index=12, number=152, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='sub_union', full_name='android.vts.VariableSpecificationMessage.sub_union', index=13, number=153, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='safe_union_value', full_name='android.vts.VariableSpecificationMessage.safe_union_value', index=14, number=154, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='safe_union_type', full_name='android.vts.VariableSpecificationMessage.safe_union_type', index=15, number=155, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='sub_safe_union', full_name='android.vts.VariableSpecificationMessage.sub_safe_union', index=16, number=156, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='fmq_value', full_name='android.vts.VariableSpecificationMessage.fmq_value', index=17, number=161, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='fmq_id', full_name='android.vts.VariableSpecificationMessage.fmq_id', index=18, number=162, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='fmq_desc_address', full_name='android.vts.VariableSpecificationMessage.fmq_desc_address', index=19, number=163, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='ref_value', full_name='android.vts.VariableSpecificationMessage.ref_value', index=20, number=171, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_memory_value', full_name='android.vts.VariableSpecificationMessage.hidl_memory_value', index=21, number=172, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='handle_value', full_name='android.vts.VariableSpecificationMessage.handle_value', index=22, number=181, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='predefined_type', full_name='android.vts.VariableSpecificationMessage.predefined_type', index=23, number=201, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='function_pointer', full_name='android.vts.VariableSpecificationMessage.function_pointer', index=24, number=221, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_callback_type', full_name='android.vts.VariableSpecificationMessage.hidl_callback_type', index=25, number=231, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_interface_id', full_name='android.vts.VariableSpecificationMessage.hidl_interface_id', index=26, number=241, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hidl_interface_pointer', full_name='android.vts.VariableSpecificationMessage.hidl_interface_pointer', index=27, number=242, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_input', full_name='android.vts.VariableSpecificationMessage.is_input', index=28, number=301, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_output', full_name='android.vts.VariableSpecificationMessage.is_output', index=29, number=302, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_const', full_name='android.vts.VariableSpecificationMessage.is_const', index=30, number=303, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_callback', full_name='android.vts.VariableSpecificationMessage.is_callback', index=31, number=304, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1540,42 +1540,42 @@ _STRUCTSPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='is_pointer', full_name='android.vts.StructSpecificationMessage.is_pointer', index=1, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='api', full_name='android.vts.StructSpecificationMessage.api', index=2, number=1001, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='sub_struct', full_name='android.vts.StructSpecificationMessage.sub_struct', index=3, number=2001, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='attribute', full_name='android.vts.StructSpecificationMessage.attribute', index=4, number=3001, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1599,35 +1599,35 @@ _INTERFACESPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='api', full_name='android.vts.InterfaceSpecificationMessage.api', index=1, number=2001, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='attribute', full_name='android.vts.InterfaceSpecificationMessage.attribute', index=2, number=3001, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='sub_struct', full_name='android.vts.InterfaceSpecificationMessage.sub_struct', index=3, number=4001, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1651,98 +1651,98 @@ _COMPONENTSPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_type', full_name='android.vts.ComponentSpecificationMessage.component_type', index=1, number=2, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_type_version', full_name='android.vts.ComponentSpecificationMessage.component_type_version', index=2, number=3, type=2, cpp_type=6, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='component_name', full_name='android.vts.ComponentSpecificationMessage.component_name', index=3, number=4, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_arch', full_name='android.vts.ComponentSpecificationMessage.target_arch', index=4, number=5, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_type_version_major', full_name='android.vts.ComponentSpecificationMessage.component_type_version_major', index=5, number=6, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='component_type_version_minor', full_name='android.vts.ComponentSpecificationMessage.component_type_version_minor', index=6, number=7, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='package', full_name='android.vts.ComponentSpecificationMessage.package', index=7, number=11, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='import', full_name='android.vts.ComponentSpecificationMessage.import', index=8, number=12, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='original_data_structure_name', full_name='android.vts.ComponentSpecificationMessage.original_data_structure_name', index=9, number=1001, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='header', full_name='android.vts.ComponentSpecificationMessage.header', index=10, number=1002, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='interface', full_name='android.vts.ComponentSpecificationMessage.interface', index=11, number=2001, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='attribute', full_name='android.vts.ComponentSpecificationMessage.attribute', index=12, number=2101, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1816,116 +1816,119 @@ DESCRIPTOR.enum_types_by_name['ComponentType'] = _COMPONENTTYPE DESCRIPTOR.enum_types_by_name['VariableType'] = _VARIABLETYPE DESCRIPTOR.enum_types_by_name['TargetArch'] = _TARGETARCH DESCRIPTOR.enum_types_by_name['FdType'] = _FDTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) -CallFlowSpecificationMessage = _reflection.GeneratedProtocolMessageType('CallFlowSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _CALLFLOWSPECIFICATIONMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +CallFlowSpecificationMessage = _reflection.GeneratedProtocolMessageType('CallFlowSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _CALLFLOWSPECIFICATIONMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.CallFlowSpecificationMessage) - }) + )) _sym_db.RegisterMessage(CallFlowSpecificationMessage) -NativeCodeCoverageRawDataMessage = _reflection.GeneratedProtocolMessageType('NativeCodeCoverageRawDataMessage', (_message.Message,), { - 'DESCRIPTOR' : _NATIVECODECOVERAGERAWDATAMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +NativeCodeCoverageRawDataMessage = _reflection.GeneratedProtocolMessageType('NativeCodeCoverageRawDataMessage', (_message.Message,), dict( + DESCRIPTOR = _NATIVECODECOVERAGERAWDATAMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.NativeCodeCoverageRawDataMessage) - }) + )) _sym_db.RegisterMessage(NativeCodeCoverageRawDataMessage) -FunctionCallMessage = _reflection.GeneratedProtocolMessageType('FunctionCallMessage', (_message.Message,), { - 'DESCRIPTOR' : _FUNCTIONCALLMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +FunctionCallMessage = _reflection.GeneratedProtocolMessageType('FunctionCallMessage', (_message.Message,), dict( + DESCRIPTOR = _FUNCTIONCALLMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.FunctionCallMessage) - }) + )) _sym_db.RegisterMessage(FunctionCallMessage) -FunctionSpecificationMessage = _reflection.GeneratedProtocolMessageType('FunctionSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _FUNCTIONSPECIFICATIONMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +FunctionSpecificationMessage = _reflection.GeneratedProtocolMessageType('FunctionSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _FUNCTIONSPECIFICATIONMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.FunctionSpecificationMessage) - }) + )) _sym_db.RegisterMessage(FunctionSpecificationMessage) -ScalarDataValueMessage = _reflection.GeneratedProtocolMessageType('ScalarDataValueMessage', (_message.Message,), { - 'DESCRIPTOR' : _SCALARDATAVALUEMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +ScalarDataValueMessage = _reflection.GeneratedProtocolMessageType('ScalarDataValueMessage', (_message.Message,), dict( + DESCRIPTOR = _SCALARDATAVALUEMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.ScalarDataValueMessage) - }) + )) _sym_db.RegisterMessage(ScalarDataValueMessage) -FunctionPointerSpecificationMessage = _reflection.GeneratedProtocolMessageType('FunctionPointerSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _FUNCTIONPOINTERSPECIFICATIONMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +FunctionPointerSpecificationMessage = _reflection.GeneratedProtocolMessageType('FunctionPointerSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _FUNCTIONPOINTERSPECIFICATIONMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.FunctionPointerSpecificationMessage) - }) + )) _sym_db.RegisterMessage(FunctionPointerSpecificationMessage) -StringDataValueMessage = _reflection.GeneratedProtocolMessageType('StringDataValueMessage', (_message.Message,), { - 'DESCRIPTOR' : _STRINGDATAVALUEMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +StringDataValueMessage = _reflection.GeneratedProtocolMessageType('StringDataValueMessage', (_message.Message,), dict( + DESCRIPTOR = _STRINGDATAVALUEMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.StringDataValueMessage) - }) + )) _sym_db.RegisterMessage(StringDataValueMessage) -EnumDataValueMessage = _reflection.GeneratedProtocolMessageType('EnumDataValueMessage', (_message.Message,), { - 'DESCRIPTOR' : _ENUMDATAVALUEMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +EnumDataValueMessage = _reflection.GeneratedProtocolMessageType('EnumDataValueMessage', (_message.Message,), dict( + DESCRIPTOR = _ENUMDATAVALUEMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.EnumDataValueMessage) - }) + )) _sym_db.RegisterMessage(EnumDataValueMessage) -MemoryDataValueMessage = _reflection.GeneratedProtocolMessageType('MemoryDataValueMessage', (_message.Message,), { - 'DESCRIPTOR' : _MEMORYDATAVALUEMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +MemoryDataValueMessage = _reflection.GeneratedProtocolMessageType('MemoryDataValueMessage', (_message.Message,), dict( + DESCRIPTOR = _MEMORYDATAVALUEMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.MemoryDataValueMessage) - }) + )) _sym_db.RegisterMessage(MemoryDataValueMessage) -FdMessage = _reflection.GeneratedProtocolMessageType('FdMessage', (_message.Message,), { - 'DESCRIPTOR' : _FDMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +FdMessage = _reflection.GeneratedProtocolMessageType('FdMessage', (_message.Message,), dict( + DESCRIPTOR = _FDMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.FdMessage) - }) + )) _sym_db.RegisterMessage(FdMessage) -HandleDataValueMessage = _reflection.GeneratedProtocolMessageType('HandleDataValueMessage', (_message.Message,), { - 'DESCRIPTOR' : _HANDLEDATAVALUEMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +HandleDataValueMessage = _reflection.GeneratedProtocolMessageType('HandleDataValueMessage', (_message.Message,), dict( + DESCRIPTOR = _HANDLEDATAVALUEMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.HandleDataValueMessage) - }) + )) _sym_db.RegisterMessage(HandleDataValueMessage) -VariableSpecificationMessage = _reflection.GeneratedProtocolMessageType('VariableSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _VARIABLESPECIFICATIONMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +VariableSpecificationMessage = _reflection.GeneratedProtocolMessageType('VariableSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _VARIABLESPECIFICATIONMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.VariableSpecificationMessage) - }) + )) _sym_db.RegisterMessage(VariableSpecificationMessage) -StructSpecificationMessage = _reflection.GeneratedProtocolMessageType('StructSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _STRUCTSPECIFICATIONMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +StructSpecificationMessage = _reflection.GeneratedProtocolMessageType('StructSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _STRUCTSPECIFICATIONMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.StructSpecificationMessage) - }) + )) _sym_db.RegisterMessage(StructSpecificationMessage) -InterfaceSpecificationMessage = _reflection.GeneratedProtocolMessageType('InterfaceSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _INTERFACESPECIFICATIONMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +InterfaceSpecificationMessage = _reflection.GeneratedProtocolMessageType('InterfaceSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _INTERFACESPECIFICATIONMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.InterfaceSpecificationMessage) - }) + )) _sym_db.RegisterMessage(InterfaceSpecificationMessage) -ComponentSpecificationMessage = _reflection.GeneratedProtocolMessageType('ComponentSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _COMPONENTSPECIFICATIONMESSAGE, - '__module__' : 'ComponentSpecificationMessage_pb2' +ComponentSpecificationMessage = _reflection.GeneratedProtocolMessageType('ComponentSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _COMPONENTSPECIFICATIONMESSAGE, + __module__ = 'ComponentSpecificationMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.ComponentSpecificationMessage) - }) + )) _sym_db.RegisterMessage(ComponentSpecificationMessage) -DESCRIPTOR._options = None -_FUNCTIONCALLMESSAGE.fields_by_name['component_type_version']._options = None -_FUNCTIONSPECIFICATIONMESSAGE.fields_by_name['is_callback']._options = None -_COMPONENTSPECIFICATIONMESSAGE.fields_by_name['component_type_version']._options = None +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB VtsComponentSpecificationMessage')) +_FUNCTIONCALLMESSAGE.fields_by_name['component_type_version'].has_options = True +_FUNCTIONCALLMESSAGE.fields_by_name['component_type_version']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_FUNCTIONSPECIFICATIONMESSAGE.fields_by_name['is_callback'].has_options = True +_FUNCTIONSPECIFICATIONMESSAGE.fields_by_name['is_callback']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_COMPONENTSPECIFICATIONMESSAGE.fields_by_name['component_type_version'].has_options = True +_COMPONENTSPECIFICATIONMESSAGE.fields_by_name['component_type_version']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) # @@protoc_insertion_point(module_scope) diff --git a/proto/ExecutionSpecificationMessage_pb2.py b/proto/ExecutionSpecificationMessage_pb2.py deleted file mode 100644 index 23b360b1f..000000000 --- a/proto/ExecutionSpecificationMessage_pb2.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: ExecutionSpecificationMessage.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -import ComponentSpecificationMessage_pb2 as ComponentSpecificationMessage__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='ExecutionSpecificationMessage.proto', - package='android.vts', - syntax='proto2', - serialized_options=_b('\n\025com.android.vts.protoB VtsExecutionSpecificationMessage'), - serialized_pb=_b('\n#ExecutionSpecificationMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\"h\n\x1d\x45xecutionSpecificationMessage\x12\x37\n\rfunction_call\x18\x01 \x03(\x0b\x32 .android.vts.FunctionCallMessage\x12\x0e\n\x05valid\x18\xe8\x07 \x01(\x08\x42\x39\n\x15\x63om.android.vts.protoB VtsExecutionSpecificationMessage') - , - dependencies=[ComponentSpecificationMessage__pb2.DESCRIPTOR,]) - - - - -_EXECUTIONSPECIFICATIONMESSAGE = _descriptor.Descriptor( - name='ExecutionSpecificationMessage', - full_name='android.vts.ExecutionSpecificationMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='function_call', full_name='android.vts.ExecutionSpecificationMessage.function_call', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='valid', full_name='android.vts.ExecutionSpecificationMessage.valid', index=1, - number=1000, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=89, - serialized_end=193, -) - -_EXECUTIONSPECIFICATIONMESSAGE.fields_by_name['function_call'].message_type = ComponentSpecificationMessage__pb2._FUNCTIONCALLMESSAGE -DESCRIPTOR.message_types_by_name['ExecutionSpecificationMessage'] = _EXECUTIONSPECIFICATIONMESSAGE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -ExecutionSpecificationMessage = _reflection.GeneratedProtocolMessageType('ExecutionSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _EXECUTIONSPECIFICATIONMESSAGE, - '__module__' : 'ExecutionSpecificationMessage_pb2' - # @@protoc_insertion_point(class_scope:android.vts.ExecutionSpecificationMessage) - }) -_sym_db.RegisterMessage(ExecutionSpecificationMessage) - - -DESCRIPTOR._options = None -# @@protoc_insertion_point(module_scope) diff --git a/proto/TestSchedulingPolicyMessage_pb2.py b/proto/TestSchedulingPolicyMessage_pb2.py index d02fc2282..92a9897c3 100644 --- a/proto/TestSchedulingPolicyMessage_pb2.py +++ b/proto/TestSchedulingPolicyMessage_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: TestSchedulingPolicyMessage.proto @@ -9,6 +8,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,9 +20,9 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='TestSchedulingPolicyMessage.proto', package='android.vts', syntax='proto2', - serialized_options=_b('\n\025com.android.vts.protoB\036VtsTestSchedulingPolicyMessage'), serialized_pb=_b('\n!TestSchedulingPolicyMessage.proto\x12\x0b\x61ndroid.vts\"\x98\x01\n\x1bTestSchedulingPolicyMessage\x12\x14\n\x0ctarget_plans\x18\x01 \x03(\x0c\x12\x14\n\x0ctarget_tests\x18\x02 \x03(\x0c\x12\x38\n\x0fscheduling_mode\x18\x65 \x01(\x0e\x32\x1f.android.vts.TestSchedulingMode\x12\x13\n\x0bperiod_secs\x18n \x01(\r*\x87\x01\n\x12TestSchedulingMode\x12$\n UKNOWN_TEST_SCHEDULING_MODE_TYPE\x10\x00\x12(\n$TEST_SCHEDULING_MODE_TOT_BEST_EFFORT\x10\x01\x12!\n\x1dTEST_SCHEDULING_MODE_PERIODIC\x10\x02\x42\x37\n\x15\x63om.android.vts.protoB\x1eVtsTestSchedulingPolicyMessage') ) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) _TESTSCHEDULINGMODE = _descriptor.EnumDescriptor( name='TestSchedulingMode', @@ -32,19 +32,19 @@ _TESTSCHEDULINGMODE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UKNOWN_TEST_SCHEDULING_MODE_TYPE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TEST_SCHEDULING_MODE_TOT_BEST_EFFORT', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TEST_SCHEDULING_MODE_PERIODIC', index=2, number=2, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=206, serialized_end=341, ) @@ -70,35 +70,35 @@ _TESTSCHEDULINGPOLICYMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_tests', full_name='android.vts.TestSchedulingPolicyMessage.target_tests', index=1, number=2, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='scheduling_mode', full_name='android.vts.TestSchedulingPolicyMessage.scheduling_mode', index=2, number=101, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='period_secs', full_name='android.vts.TestSchedulingPolicyMessage.period_secs', index=3, number=110, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -111,15 +111,15 @@ _TESTSCHEDULINGPOLICYMESSAGE = _descriptor.Descriptor( _TESTSCHEDULINGPOLICYMESSAGE.fields_by_name['scheduling_mode'].enum_type = _TESTSCHEDULINGMODE DESCRIPTOR.message_types_by_name['TestSchedulingPolicyMessage'] = _TESTSCHEDULINGPOLICYMESSAGE DESCRIPTOR.enum_types_by_name['TestSchedulingMode'] = _TESTSCHEDULINGMODE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) -TestSchedulingPolicyMessage = _reflection.GeneratedProtocolMessageType('TestSchedulingPolicyMessage', (_message.Message,), { - 'DESCRIPTOR' : _TESTSCHEDULINGPOLICYMESSAGE, - '__module__' : 'TestSchedulingPolicyMessage_pb2' +TestSchedulingPolicyMessage = _reflection.GeneratedProtocolMessageType('TestSchedulingPolicyMessage', (_message.Message,), dict( + DESCRIPTOR = _TESTSCHEDULINGPOLICYMESSAGE, + __module__ = 'TestSchedulingPolicyMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.TestSchedulingPolicyMessage) - }) + )) _sym_db.RegisterMessage(TestSchedulingPolicyMessage) -DESCRIPTOR._options = None +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB\036VtsTestSchedulingPolicyMessage')) # @@protoc_insertion_point(module_scope) diff --git a/proto/VtsDriverControlMessage.proto b/proto/VtsDriverControlMessage.proto index 5912100ae..70477a617 100644 --- a/proto/VtsDriverControlMessage.proto +++ b/proto/VtsDriverControlMessage.proto @@ -135,9 +135,9 @@ message VtsDriverControlResponseMessage { optional bytes return_message = 12; // The stdout message for each command - repeated bytes stdout_str = 1001; + repeated bytes stdout = 1001; // The stderr message for each command - repeated bytes stderr_str = 1002; + repeated bytes stderr = 1002; // The exit code for each command repeated int32 exit_code = 1003; diff --git a/proto/VtsDriverControlMessage_pb2.py b/proto/VtsDriverControlMessage_pb2.py deleted file mode 100644 index 5fa131f9e..000000000 --- a/proto/VtsDriverControlMessage_pb2.py +++ /dev/null @@ -1,415 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: VtsDriverControlMessage.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf.internal import enum_type_wrapper -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -import VtsResourceControllerMessage_pb2 as VtsResourceControllerMessage__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='VtsDriverControlMessage.proto', - package='android.vts', - syntax='proto2', - serialized_options=None, - serialized_pb=_b('\n\x1dVtsDriverControlMessage.proto\x12\x0b\x61ndroid.vts\x1a\"VtsResourceControllerMessage.proto\"\x85\x05\n\x1eVtsDriverControlCommandMessage\x12\x37\n\x0c\x63ommand_type\x18\x01 \x01(\x0e\x32!.android.vts.VtsDriverCommandType\x12\x14\n\x0bstatus_type\x18\xcd\x08 \x01(\x05\x12\x12\n\tfile_path\x18\xb1\t \x01(\x0c\x12\x15\n\x0ctarget_class\x18\xb2\t \x01(\x05\x12\x14\n\x0btarget_type\x18\xb3\t \x01(\x05\x12\x1b\n\x0etarget_version\x18\xb4\t \x01(\x02\x42\x02\x18\x01\x12\x14\n\x0bmodule_name\x18\xb5\t \x01(\x0c\x12\x17\n\x0etarget_package\x18\xb6\t \x01(\x0c\x12\x1e\n\x15target_component_name\x18\xb7\t \x01(\x0c\x12!\n\x14target_version_major\x18\xb8\t \x01(\x05:\x02-1\x12!\n\x14target_version_minor\x18\xb9\t \x01(\x05:\x02-1\x12\x1f\n\x16hw_binder_service_name\x18\xc5\t \x01(\x0c\x12\x0c\n\x03\x61rg\x18\xf9\n \x01(\x0c\x12\x1a\n\x11\x64river_caller_uid\x18\xdd\x0b \x01(\x0c\x12\x16\n\rshell_command\x18\xd1\x0f \x03(\x0c\x12\x34\n\x0b\x66mq_request\x18\xb9\x17 \x01(\x0b\x32\x1e.android.vts.FmqRequestMessage\x12\x43\n\x13hidl_memory_request\x18\xba\x17 \x01(\x0b\x32%.android.vts.HidlMemoryRequestMessage\x12\x43\n\x13hidl_handle_request\x18\xbb\x17 \x01(\x0b\x32%.android.vts.HidlHandleRequestMessage\"\x9d\x03\n\x1fVtsDriverControlResponseMessage\x12\x39\n\rresponse_code\x18\x01 \x01(\x0e\x32\".android.vts.VtsDriverResponseCode\x12\x14\n\x0creturn_value\x18\x0b \x01(\x05\x12\x16\n\x0ereturn_message\x18\x0c \x01(\x0c\x12\x13\n\nstdout_str\x18\xe9\x07 \x03(\x0c\x12\x13\n\nstderr_str\x18\xea\x07 \x03(\x0c\x12\x12\n\texit_code\x18\xeb\x07 \x03(\x05\x12\r\n\x04spec\x18\xd1\x0f \x03(\x0c\x12\x36\n\x0c\x66mq_response\x18\xb9\x17 \x01(\x0b\x32\x1f.android.vts.FmqResponseMessage\x12\x45\n\x14hidl_memory_response\x18\xba\x17 \x01(\x0b\x32&.android.vts.HidlMemoryResponseMessage\x12\x45\n\x14hidl_handle_response\x18\xbb\x17 \x01(\x0b\x32&.android.vts.HidlHandleResponseMessage*\xbf\x02\n\x14VtsDriverCommandType\x12#\n\x1fUNKNOWN_VTS_DRIVER_COMMAND_TYPE\x10\x00\x12\x08\n\x04\x45XIT\x10\x01\x12\x0e\n\nGET_STATUS\x10\x02\x12\x0c\n\x08LOAD_HAL\x10\x65\x12\x12\n\x0eLIST_FUNCTIONS\x10\x66\x12\x11\n\rCALL_FUNCTION\x10g\x12\x11\n\rGET_ATTRIBUTE\x10h\x12)\n%VTS_DRIVER_COMMAND_READ_SPECIFICATION\x10i\x12\x14\n\x0f\x45XECUTE_COMMAND\x10\xc9\x01\x12\x13\n\x0eINVOKE_SYSCALL\x10\xca\x01\x12\x12\n\rFMQ_OPERATION\x10\xad\x02\x12\x1a\n\x15HIDL_MEMORY_OPERATION\x10\xae\x02\x12\x1a\n\x15HIDL_HANDLE_OPERATION\x10\xaf\x02*|\n\x15VtsDriverResponseCode\x12$\n UNKNOWN_VTS_DRIVER_RESPONSE_CODE\x10\x00\x12\x1f\n\x1bVTS_DRIVER_RESPONSE_SUCCESS\x10\x01\x12\x1c\n\x18VTS_DRIVER_RESPONSE_FAIL\x10\x02') - , - dependencies=[VtsResourceControllerMessage__pb2.DESCRIPTOR,]) - -_VTSDRIVERCOMMANDTYPE = _descriptor.EnumDescriptor( - name='VtsDriverCommandType', - full_name='android.vts.VtsDriverCommandType', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='UNKNOWN_VTS_DRIVER_COMMAND_TYPE', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='EXIT', index=1, number=1, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='GET_STATUS', index=2, number=2, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='LOAD_HAL', index=3, number=101, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='LIST_FUNCTIONS', index=4, number=102, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='CALL_FUNCTION', index=5, number=103, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='GET_ATTRIBUTE', index=6, number=104, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='VTS_DRIVER_COMMAND_READ_SPECIFICATION', index=7, number=105, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='EXECUTE_COMMAND', index=8, number=201, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='INVOKE_SYSCALL', index=9, number=202, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='FMQ_OPERATION', index=10, number=301, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='HIDL_MEMORY_OPERATION', index=11, number=302, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='HIDL_HANDLE_OPERATION', index=12, number=303, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=1147, - serialized_end=1466, -) -_sym_db.RegisterEnumDescriptor(_VTSDRIVERCOMMANDTYPE) - -VtsDriverCommandType = enum_type_wrapper.EnumTypeWrapper(_VTSDRIVERCOMMANDTYPE) -_VTSDRIVERRESPONSECODE = _descriptor.EnumDescriptor( - name='VtsDriverResponseCode', - full_name='android.vts.VtsDriverResponseCode', - filename=None, - file=DESCRIPTOR, - values=[ - _descriptor.EnumValueDescriptor( - name='UNKNOWN_VTS_DRIVER_RESPONSE_CODE', index=0, number=0, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='VTS_DRIVER_RESPONSE_SUCCESS', index=1, number=1, - serialized_options=None, - type=None), - _descriptor.EnumValueDescriptor( - name='VTS_DRIVER_RESPONSE_FAIL', index=2, number=2, - serialized_options=None, - type=None), - ], - containing_type=None, - serialized_options=None, - serialized_start=1468, - serialized_end=1592, -) -_sym_db.RegisterEnumDescriptor(_VTSDRIVERRESPONSECODE) - -VtsDriverResponseCode = enum_type_wrapper.EnumTypeWrapper(_VTSDRIVERRESPONSECODE) -UNKNOWN_VTS_DRIVER_COMMAND_TYPE = 0 -EXIT = 1 -GET_STATUS = 2 -LOAD_HAL = 101 -LIST_FUNCTIONS = 102 -CALL_FUNCTION = 103 -GET_ATTRIBUTE = 104 -VTS_DRIVER_COMMAND_READ_SPECIFICATION = 105 -EXECUTE_COMMAND = 201 -INVOKE_SYSCALL = 202 -FMQ_OPERATION = 301 -HIDL_MEMORY_OPERATION = 302 -HIDL_HANDLE_OPERATION = 303 -UNKNOWN_VTS_DRIVER_RESPONSE_CODE = 0 -VTS_DRIVER_RESPONSE_SUCCESS = 1 -VTS_DRIVER_RESPONSE_FAIL = 2 - - - -_VTSDRIVERCONTROLCOMMANDMESSAGE = _descriptor.Descriptor( - name='VtsDriverControlCommandMessage', - full_name='android.vts.VtsDriverControlCommandMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='command_type', full_name='android.vts.VtsDriverControlCommandMessage.command_type', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='status_type', full_name='android.vts.VtsDriverControlCommandMessage.status_type', index=1, - number=1101, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='file_path', full_name='android.vts.VtsDriverControlCommandMessage.file_path', index=2, - number=1201, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='target_class', full_name='android.vts.VtsDriverControlCommandMessage.target_class', index=3, - number=1202, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='target_type', full_name='android.vts.VtsDriverControlCommandMessage.target_type', index=4, - number=1203, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='target_version', full_name='android.vts.VtsDriverControlCommandMessage.target_version', index=5, - number=1204, type=2, cpp_type=6, label=1, - has_default_value=False, default_value=float(0), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='module_name', full_name='android.vts.VtsDriverControlCommandMessage.module_name', index=6, - number=1205, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='target_package', full_name='android.vts.VtsDriverControlCommandMessage.target_package', index=7, - number=1206, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='target_component_name', full_name='android.vts.VtsDriverControlCommandMessage.target_component_name', index=8, - number=1207, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='target_version_major', full_name='android.vts.VtsDriverControlCommandMessage.target_version_major', index=9, - number=1208, type=5, cpp_type=1, label=1, - has_default_value=True, default_value=-1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='target_version_minor', full_name='android.vts.VtsDriverControlCommandMessage.target_version_minor', index=10, - number=1209, type=5, cpp_type=1, label=1, - has_default_value=True, default_value=-1, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='hw_binder_service_name', full_name='android.vts.VtsDriverControlCommandMessage.hw_binder_service_name', index=11, - number=1221, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='arg', full_name='android.vts.VtsDriverControlCommandMessage.arg', index=12, - number=1401, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='driver_caller_uid', full_name='android.vts.VtsDriverControlCommandMessage.driver_caller_uid', index=13, - number=1501, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='shell_command', full_name='android.vts.VtsDriverControlCommandMessage.shell_command', index=14, - number=2001, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='fmq_request', full_name='android.vts.VtsDriverControlCommandMessage.fmq_request', index=15, - number=3001, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='hidl_memory_request', full_name='android.vts.VtsDriverControlCommandMessage.hidl_memory_request', index=16, - number=3002, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='hidl_handle_request', full_name='android.vts.VtsDriverControlCommandMessage.hidl_handle_request', index=17, - number=3003, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=83, - serialized_end=728, -) - - -_VTSDRIVERCONTROLRESPONSEMESSAGE = _descriptor.Descriptor( - name='VtsDriverControlResponseMessage', - full_name='android.vts.VtsDriverControlResponseMessage', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='response_code', full_name='android.vts.VtsDriverControlResponseMessage.response_code', index=0, - number=1, type=14, cpp_type=8, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='return_value', full_name='android.vts.VtsDriverControlResponseMessage.return_value', index=1, - number=11, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='return_message', full_name='android.vts.VtsDriverControlResponseMessage.return_message', index=2, - number=12, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=_b(""), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stdout_str', full_name='android.vts.VtsDriverControlResponseMessage.stdout_str', index=3, - number=1001, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='stderr_str', full_name='android.vts.VtsDriverControlResponseMessage.stderr_str', index=4, - number=1002, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='exit_code', full_name='android.vts.VtsDriverControlResponseMessage.exit_code', index=5, - number=1003, type=5, cpp_type=1, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='spec', full_name='android.vts.VtsDriverControlResponseMessage.spec', index=6, - number=2001, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='fmq_response', full_name='android.vts.VtsDriverControlResponseMessage.fmq_response', index=7, - number=3001, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='hidl_memory_response', full_name='android.vts.VtsDriverControlResponseMessage.hidl_memory_response', index=8, - number=3002, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='hidl_handle_response', full_name='android.vts.VtsDriverControlResponseMessage.hidl_handle_response', index=9, - number=3003, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=731, - serialized_end=1144, -) - -_VTSDRIVERCONTROLCOMMANDMESSAGE.fields_by_name['command_type'].enum_type = _VTSDRIVERCOMMANDTYPE -_VTSDRIVERCONTROLCOMMANDMESSAGE.fields_by_name['fmq_request'].message_type = VtsResourceControllerMessage__pb2._FMQREQUESTMESSAGE -_VTSDRIVERCONTROLCOMMANDMESSAGE.fields_by_name['hidl_memory_request'].message_type = VtsResourceControllerMessage__pb2._HIDLMEMORYREQUESTMESSAGE -_VTSDRIVERCONTROLCOMMANDMESSAGE.fields_by_name['hidl_handle_request'].message_type = VtsResourceControllerMessage__pb2._HIDLHANDLEREQUESTMESSAGE -_VTSDRIVERCONTROLRESPONSEMESSAGE.fields_by_name['response_code'].enum_type = _VTSDRIVERRESPONSECODE -_VTSDRIVERCONTROLRESPONSEMESSAGE.fields_by_name['fmq_response'].message_type = VtsResourceControllerMessage__pb2._FMQRESPONSEMESSAGE -_VTSDRIVERCONTROLRESPONSEMESSAGE.fields_by_name['hidl_memory_response'].message_type = VtsResourceControllerMessage__pb2._HIDLMEMORYRESPONSEMESSAGE -_VTSDRIVERCONTROLRESPONSEMESSAGE.fields_by_name['hidl_handle_response'].message_type = VtsResourceControllerMessage__pb2._HIDLHANDLERESPONSEMESSAGE -DESCRIPTOR.message_types_by_name['VtsDriverControlCommandMessage'] = _VTSDRIVERCONTROLCOMMANDMESSAGE -DESCRIPTOR.message_types_by_name['VtsDriverControlResponseMessage'] = _VTSDRIVERCONTROLRESPONSEMESSAGE -DESCRIPTOR.enum_types_by_name['VtsDriverCommandType'] = _VTSDRIVERCOMMANDTYPE -DESCRIPTOR.enum_types_by_name['VtsDriverResponseCode'] = _VTSDRIVERRESPONSECODE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -VtsDriverControlCommandMessage = _reflection.GeneratedProtocolMessageType('VtsDriverControlCommandMessage', (_message.Message,), { - 'DESCRIPTOR' : _VTSDRIVERCONTROLCOMMANDMESSAGE, - '__module__' : 'VtsDriverControlMessage_pb2' - # @@protoc_insertion_point(class_scope:android.vts.VtsDriverControlCommandMessage) - }) -_sym_db.RegisterMessage(VtsDriverControlCommandMessage) - -VtsDriverControlResponseMessage = _reflection.GeneratedProtocolMessageType('VtsDriverControlResponseMessage', (_message.Message,), { - 'DESCRIPTOR' : _VTSDRIVERCONTROLRESPONSEMESSAGE, - '__module__' : 'VtsDriverControlMessage_pb2' - # @@protoc_insertion_point(class_scope:android.vts.VtsDriverControlResponseMessage) - }) -_sym_db.RegisterMessage(VtsDriverControlResponseMessage) - - -_VTSDRIVERCONTROLCOMMANDMESSAGE.fields_by_name['target_version']._options = None -# @@protoc_insertion_point(module_scope) diff --git a/proto/VtsFuzzTaskMessage_pb2.py b/proto/VtsFuzzTaskMessage_pb2.py index 64a7ff29b..64978f2d8 100644 --- a/proto/VtsFuzzTaskMessage_pb2.py +++ b/proto/VtsFuzzTaskMessage_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: VtsFuzzTaskMessage.proto @@ -9,6 +8,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -22,10 +22,10 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='VtsFuzzTaskMessage.proto', package='android.vts', syntax='proto2', - serialized_options=_b('\n\025com.android.vts.protoB\027VtsFuzzTaskMessageClass'), serialized_pb=_b('\n\x18VtsFuzzTaskMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\x1a\x16VtsReportMessage.proto\"\x84\x01\n\x1dTestSuiteSpecificationMessage\x12\x12\n\ntest_suite\x18\x01 \x01(\x0c\x12\x0e\n\x06\x62ranch\x18\x0b \x01(\x0c\x12\x16\n\x0etarget_product\x18\x0c \x01(\x0c\x12\x15\n\rbuild_variant\x18\r \x01(\x0c\x12\x10\n\x08\x62uild_id\x18\x15 \x01(\x0c\"\xf4\x01\n\x1a\x43orpusSpecificationMessage\x12\x34\n\x0f\x63omponent_class\x18\x01 \x01(\x0e\x32\x1b.android.vts.ComponentClass\x12\x18\n\x10\x63orpus_file_name\x18\x02 \x03(\x0c\x12\x18\n\x10hal_package_name\x18\x0b \x01(\x0c\x12\x1a\n\x12hal_transport_type\x18\x0c \x01(\x0c\x12\x19\n\x11hal_major_version\x18\r \x01(\x05\x12\x19\n\x11hal_minor_version\x18\x0e \x01(\x05\x12\x1a\n\x12hal_interface_name\x18\x0f \x01(\x0c\"\x85\x03\n\x13\x46uzzTaskUnitMessage\x12#\n\x06status\x18\x01 \x01(\x0e\x32\x13.android.vts.Status\x12(\n\x0bresult_type\x18\x02 \x01(\x0e\x32\x13.android.vts.Result\x12,\n\x03log\x18\x03 \x03(\x0b\x32\x1f.android.vts.UrlResourceMessage\x12\x1a\n\x12\x63reation_timestamp\x18\x0b \x01(\x03\x12\x1f\n\x17status_change_timestamp\x18\x0c \x01(\x03\x12:\n\x0b\x64\x65vice_info\x18\x15 \x01(\x0b\x32%.android.vts.AndroidDeviceInfoMessage\x12\x31\n\nbuild_info\x18\x16 \x01(\x0b\x32\x1d.android.vts.AndroidBuildInfo\x12\x45\n\x11test_suite_target\x18\x17 \x01(\x0b\x32*.android.vts.TestSuiteSpecificationMessage\"\xad\x01\n\x12VtsFuzzTaskMessage\x12\x0f\n\x07task_id\x18\x01 \x01(\x05\x12\x33\n\ttask_unit\x18\x02 \x03(\x0b\x32 .android.vts.FuzzTaskUnitMessage\x12\x18\n\x10test_module_name\x18\x0b \x01(\x0c\x12\x37\n\x06\x63orpus\x18\x15 \x01(\x0b\x32\'.android.vts.CorpusSpecificationMessage*.\n\x06Status\x12\t\n\x05READY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\r\n\tPROCESSED\x10\x02*I\n\x06Result\x12\x11\n\rNOT_PROCESSED\x10\x00\x12\x13\n\x0f\x43RASH_DUPLICATE\x10\x01\x12\r\n\tCRASH_NEW\x10\x02\x12\x08\n\x04PASS\x10\x03\x42\x30\n\x15\x63om.android.vts.protoB\x17VtsFuzzTaskMessageClass') , dependencies=[ComponentSpecificationMessage__pb2.DESCRIPTOR,VtsReportMessage__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) _STATUS = _descriptor.EnumDescriptor( name='Status', @@ -35,19 +35,19 @@ _STATUS = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='READY', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='LOCKED', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PROCESSED', index=2, number=2, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=1052, serialized_end=1098, ) @@ -62,23 +62,23 @@ _RESULT = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='NOT_PROCESSED', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CRASH_DUPLICATE', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CRASH_NEW', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PASS', index=3, number=3, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=1100, serialized_end=1173, ) @@ -108,42 +108,42 @@ _TESTSUITESPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='branch', full_name='android.vts.TestSuiteSpecificationMessage.branch', index=1, number=11, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='target_product', full_name='android.vts.TestSuiteSpecificationMessage.target_product', index=2, number=12, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_variant', full_name='android.vts.TestSuiteSpecificationMessage.build_variant', index=3, number=13, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_id', full_name='android.vts.TestSuiteSpecificationMessage.build_id', index=4, number=21, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -167,56 +167,56 @@ _CORPUSSPECIFICATIONMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='corpus_file_name', full_name='android.vts.CorpusSpecificationMessage.corpus_file_name', index=1, number=2, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_package_name', full_name='android.vts.CorpusSpecificationMessage.hal_package_name', index=2, number=11, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_transport_type', full_name='android.vts.CorpusSpecificationMessage.hal_transport_type', index=3, number=12, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_major_version', full_name='android.vts.CorpusSpecificationMessage.hal_major_version', index=4, number=13, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_minor_version', full_name='android.vts.CorpusSpecificationMessage.hal_minor_version', index=5, number=14, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_interface_name', full_name='android.vts.CorpusSpecificationMessage.hal_interface_name', index=6, number=15, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -240,63 +240,63 @@ _FUZZTASKUNITMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='result_type', full_name='android.vts.FuzzTaskUnitMessage.result_type', index=1, number=2, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='log', full_name='android.vts.FuzzTaskUnitMessage.log', index=2, number=3, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='creation_timestamp', full_name='android.vts.FuzzTaskUnitMessage.creation_timestamp', index=3, number=11, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='status_change_timestamp', full_name='android.vts.FuzzTaskUnitMessage.status_change_timestamp', index=4, number=12, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='device_info', full_name='android.vts.FuzzTaskUnitMessage.device_info', index=5, number=21, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_info', full_name='android.vts.FuzzTaskUnitMessage.build_info', index=6, number=22, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_suite_target', full_name='android.vts.FuzzTaskUnitMessage.test_suite_target', index=7, number=23, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -320,35 +320,35 @@ _VTSFUZZTASKMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='task_unit', full_name='android.vts.VtsFuzzTaskMessage.task_unit', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_module_name', full_name='android.vts.VtsFuzzTaskMessage.test_module_name', index=2, number=11, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='corpus', full_name='android.vts.VtsFuzzTaskMessage.corpus', index=3, number=21, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -373,36 +373,36 @@ DESCRIPTOR.message_types_by_name['FuzzTaskUnitMessage'] = _FUZZTASKUNITMESSAGE DESCRIPTOR.message_types_by_name['VtsFuzzTaskMessage'] = _VTSFUZZTASKMESSAGE DESCRIPTOR.enum_types_by_name['Status'] = _STATUS DESCRIPTOR.enum_types_by_name['Result'] = _RESULT -_sym_db.RegisterFileDescriptor(DESCRIPTOR) -TestSuiteSpecificationMessage = _reflection.GeneratedProtocolMessageType('TestSuiteSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _TESTSUITESPECIFICATIONMESSAGE, - '__module__' : 'VtsFuzzTaskMessage_pb2' +TestSuiteSpecificationMessage = _reflection.GeneratedProtocolMessageType('TestSuiteSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _TESTSUITESPECIFICATIONMESSAGE, + __module__ = 'VtsFuzzTaskMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.TestSuiteSpecificationMessage) - }) + )) _sym_db.RegisterMessage(TestSuiteSpecificationMessage) -CorpusSpecificationMessage = _reflection.GeneratedProtocolMessageType('CorpusSpecificationMessage', (_message.Message,), { - 'DESCRIPTOR' : _CORPUSSPECIFICATIONMESSAGE, - '__module__' : 'VtsFuzzTaskMessage_pb2' +CorpusSpecificationMessage = _reflection.GeneratedProtocolMessageType('CorpusSpecificationMessage', (_message.Message,), dict( + DESCRIPTOR = _CORPUSSPECIFICATIONMESSAGE, + __module__ = 'VtsFuzzTaskMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.CorpusSpecificationMessage) - }) + )) _sym_db.RegisterMessage(CorpusSpecificationMessage) -FuzzTaskUnitMessage = _reflection.GeneratedProtocolMessageType('FuzzTaskUnitMessage', (_message.Message,), { - 'DESCRIPTOR' : _FUZZTASKUNITMESSAGE, - '__module__' : 'VtsFuzzTaskMessage_pb2' +FuzzTaskUnitMessage = _reflection.GeneratedProtocolMessageType('FuzzTaskUnitMessage', (_message.Message,), dict( + DESCRIPTOR = _FUZZTASKUNITMESSAGE, + __module__ = 'VtsFuzzTaskMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.FuzzTaskUnitMessage) - }) + )) _sym_db.RegisterMessage(FuzzTaskUnitMessage) -VtsFuzzTaskMessage = _reflection.GeneratedProtocolMessageType('VtsFuzzTaskMessage', (_message.Message,), { - 'DESCRIPTOR' : _VTSFUZZTASKMESSAGE, - '__module__' : 'VtsFuzzTaskMessage_pb2' +VtsFuzzTaskMessage = _reflection.GeneratedProtocolMessageType('VtsFuzzTaskMessage', (_message.Message,), dict( + DESCRIPTOR = _VTSFUZZTASKMESSAGE, + __module__ = 'VtsFuzzTaskMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.VtsFuzzTaskMessage) - }) + )) _sym_db.RegisterMessage(VtsFuzzTaskMessage) -DESCRIPTOR._options = None +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB\027VtsFuzzTaskMessageClass')) # @@protoc_insertion_point(module_scope) diff --git a/proto/VtsProfilingMessage_pb2.py b/proto/VtsProfilingMessage_pb2.py index 27b18d985..850c059a5 100644 --- a/proto/VtsProfilingMessage_pb2.py +++ b/proto/VtsProfilingMessage_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: VtsProfilingMessage.proto @@ -9,6 +8,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,10 +21,10 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='VtsProfilingMessage.proto', package='android.vts', syntax='proto2', - serialized_options=_b('\n\025com.android.vts.protoB\030VtsProfilingMessageClass'), serialized_pb=_b('\n\x19VtsProfilingMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\"\x89\x02\n\x12VtsProfilingRecord\x12\x11\n\ttimestamp\x18\x01 \x01(\x03\x12\x34\n\x05\x65vent\x18\x02 \x01(\x0e\x32%.android.vts.InstrumentationEventType\x12\x0f\n\x07package\x18\x03 \x01(\x0c\x12\x13\n\x07version\x18\x04 \x01(\x02\x42\x02\x18\x01\x12\x11\n\tinterface\x18\x05 \x01(\x0c\x12;\n\x08\x66unc_msg\x18\x06 \x01(\x0b\x32).android.vts.FunctionSpecificationMessage\x12\x19\n\rversion_major\x18\x07 \x01(\x05:\x02-1\x12\x19\n\rversion_minor\x18\x08 \x01(\x05:\x02-1\"G\n\x13VtsProfilingMessage\x12\x30\n\x07records\x18\x01 \x03(\x0b\x32\x1f.android.vts.VtsProfilingRecord*\x81\x02\n\x18InstrumentationEventType\x12\x14\n\x10SERVER_API_ENTRY\x10\x00\x12\x13\n\x0fSERVER_API_EXIT\x10\x01\x12\x14\n\x10\x43LIENT_API_ENTRY\x10\x02\x12\x13\n\x0f\x43LIENT_API_EXIT\x10\x03\x12\x17\n\x13SYNC_CALLBACK_ENTRY\x10\x04\x12\x16\n\x12SYNC_CALLBACK_EXIT\x10\x05\x12\x18\n\x14\x41SYNC_CALLBACK_ENTRY\x10\x06\x12\x17\n\x13\x41SYNC_CALLBACK_EXIT\x10\x07\x12\x15\n\x11PASSTHROUGH_ENTRY\x10\x08\x12\x14\n\x10PASSTHROUGH_EXIT\x10\tB1\n\x15\x63om.android.vts.protoB\x18VtsProfilingMessageClass') , dependencies=[ComponentSpecificationMessage__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) _INSTRUMENTATIONEVENTTYPE = _descriptor.EnumDescriptor( name='InstrumentationEventType', @@ -34,47 +34,47 @@ _INSTRUMENTATIONEVENTTYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='SERVER_API_ENTRY', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SERVER_API_EXIT', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CLIENT_API_ENTRY', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='CLIENT_API_EXIT', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SYNC_CALLBACK_ENTRY', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='SYNC_CALLBACK_EXIT', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ASYNC_CALLBACK_ENTRY', index=6, number=6, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='ASYNC_CALLBACK_EXIT', index=7, number=7, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PASSTHROUGH_ENTRY', index=8, number=8, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='PASSTHROUGH_EXIT', index=9, number=9, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=421, serialized_end=678, ) @@ -107,63 +107,63 @@ _VTSPROFILINGRECORD = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='event', full_name='android.vts.VtsProfilingRecord.event', index=1, number=2, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='package', full_name='android.vts.VtsProfilingRecord.package', index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='version', full_name='android.vts.VtsProfilingRecord.version', index=3, number=4, type=2, cpp_type=6, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='interface', full_name='android.vts.VtsProfilingRecord.interface', index=4, number=5, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='func_msg', full_name='android.vts.VtsProfilingRecord.func_msg', index=5, number=6, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='version_major', full_name='android.vts.VtsProfilingRecord.version_major', index=6, number=7, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='version_minor', full_name='android.vts.VtsProfilingRecord.version_minor', index=7, number=8, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -187,14 +187,14 @@ _VTSPROFILINGMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -210,23 +210,24 @@ _VTSPROFILINGMESSAGE.fields_by_name['records'].message_type = _VTSPROFILINGRECOR DESCRIPTOR.message_types_by_name['VtsProfilingRecord'] = _VTSPROFILINGRECORD DESCRIPTOR.message_types_by_name['VtsProfilingMessage'] = _VTSPROFILINGMESSAGE DESCRIPTOR.enum_types_by_name['InstrumentationEventType'] = _INSTRUMENTATIONEVENTTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) -VtsProfilingRecord = _reflection.GeneratedProtocolMessageType('VtsProfilingRecord', (_message.Message,), { - 'DESCRIPTOR' : _VTSPROFILINGRECORD, - '__module__' : 'VtsProfilingMessage_pb2' +VtsProfilingRecord = _reflection.GeneratedProtocolMessageType('VtsProfilingRecord', (_message.Message,), dict( + DESCRIPTOR = _VTSPROFILINGRECORD, + __module__ = 'VtsProfilingMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.VtsProfilingRecord) - }) + )) _sym_db.RegisterMessage(VtsProfilingRecord) -VtsProfilingMessage = _reflection.GeneratedProtocolMessageType('VtsProfilingMessage', (_message.Message,), { - 'DESCRIPTOR' : _VTSPROFILINGMESSAGE, - '__module__' : 'VtsProfilingMessage_pb2' +VtsProfilingMessage = _reflection.GeneratedProtocolMessageType('VtsProfilingMessage', (_message.Message,), dict( + DESCRIPTOR = _VTSPROFILINGMESSAGE, + __module__ = 'VtsProfilingMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.VtsProfilingMessage) - }) + )) _sym_db.RegisterMessage(VtsProfilingMessage) -DESCRIPTOR._options = None -_VTSPROFILINGRECORD.fields_by_name['version']._options = None +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB\030VtsProfilingMessageClass')) +_VTSPROFILINGRECORD.fields_by_name['version'].has_options = True +_VTSPROFILINGRECORD.fields_by_name['version']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) # @@protoc_insertion_point(module_scope) diff --git a/proto/VtsReportMessage_pb2.py b/proto/VtsReportMessage_pb2.py index 75177c219..5da6b95cb 100644 --- a/proto/VtsReportMessage_pb2.py +++ b/proto/VtsReportMessage_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: VtsReportMessage.proto @@ -9,6 +8,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,9 +20,9 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='VtsReportMessage.proto', package='android.vts', syntax='proto2', - serialized_options=_b('\n\025com.android.vts.protoB\020VtsReportMessageP\000'), serialized_pb=_b('\n\x16VtsReportMessage.proto\x12\x0b\x61ndroid.vts\"\xe0\x01\n\x18\x41ndroidDeviceInfoMessage\x12\x14\n\x0cproduct_type\x18\x01 \x01(\x0c\x12\x17\n\x0fproduct_variant\x18\x02 \x01(\x0c\x12\x14\n\x0c\x62uild_flavor\x18\x0b \x01(\x0c\x12\x10\n\x08\x62uild_id\x18\x0c \x01(\x0c\x12\x0e\n\x06\x62ranch\x18\x15 \x01(\x0c\x12\x13\n\x0b\x62uild_alias\x18\x16 \x01(\x0c\x12\x11\n\tapi_level\x18\x1f \x01(\x0c\x12\x10\n\x08\x61\x62i_name\x18\x33 \x01(\x0c\x12\x13\n\x0b\x61\x62i_bitness\x18\x34 \x01(\x0c\x12\x0e\n\x06serial\x18\x65 \x01(\x0c\"g\n\x10\x41ndroidBuildInfo\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x0b \x01(\x0c\x12\x12\n\nbuild_type\x18\x0c \x01(\x0c\x12\x0e\n\x06\x62ranch\x18\r \x01(\x0c\x12\x15\n\rbuild_summary\x18\x15 \x01(\x0c\"\x1f\n\x0bVtsHostInfo\x12\x10\n\x08hostname\x18\x01 \x01(\x0c\"\xd5\x02\n\x15TestCaseReportMessage\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12\x30\n\x0btest_result\x18\x0b \x01(\x0e\x32\x1b.android.vts.TestCaseResult\x12\x17\n\x0fstart_timestamp\x18\x15 \x01(\x03\x12\x15\n\rend_timestamp\x18\x16 \x01(\x03\x12\x34\n\x08\x63overage\x18\x1f \x03(\x0b\x32\".android.vts.CoverageReportMessage\x12\x36\n\tprofiling\x18) \x03(\x0b\x32#.android.vts.ProfilingReportMessage\x12\x38\n\x08systrace\x18* \x03(\x0b\x32\".android.vts.SystraceReportMessageB\x02\x18\x01\x12$\n\x03log\x18\x65 \x03(\x0b\x32\x17.android.vts.LogMessage\"\xa0\x02\n\x16ProfilingReportMessage\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12+\n\x04type\x18\x02 \x01(\x0e\x32\x1d.android.vts.VtsProfilingType\x12@\n\x0fregression_mode\x18\x03 \x01(\x0e\x32\'.android.vts.VtsProfilingRegressionMode\x12\x17\n\x0fstart_timestamp\x18\x0b \x01(\x03\x12\x15\n\rend_timestamp\x18\x0c \x01(\x03\x12\r\n\x05label\x18\x15 \x03(\x0c\x12\r\n\x05value\x18\x16 \x03(\x03\x12\x14\n\x0cx_axis_label\x18\x1f \x01(\x0c\x12\x14\n\x0cy_axis_label\x18 \x01(\x0c\x12\x0f\n\x07options\x18) \x03(\x0c\"H\n\x15SystraceReportMessage\x12\x14\n\x0cprocess_name\x18\x01 \x01(\x0c\x12\x0c\n\x04html\x18\x0b \x03(\x0c\x12\x0b\n\x03url\x18\x15 \x03(\x0c\"\xe5\x01\n\x15\x43overageReportMessage\x12\x11\n\tfile_path\x18\x0b \x01(\x0c\x12\x14\n\x0cproject_name\x18\x0c \x01(\x0c\x12\x10\n\x08revision\x18\r \x01(\x0c\x12\x1c\n\x14line_coverage_vector\x18\x17 \x03(\x03\x12\x18\n\x10total_line_count\x18\x65 \x01(\x05\x12\x1a\n\x12\x63overed_line_count\x18\x66 \x01(\x05\x12\x14\n\x08\x64ir_path\x18\x01 \x01(\x0c\x42\x02\x18\x01\x12\x15\n\tfile_name\x18\x02 \x01(\x0c\x42\x02\x18\x01\x12\x10\n\x04html\x18\x03 \x01(\x0c\x42\x02\x18\x01\"\x9c\x01\n\x13HalInterfaceMessage\x12\x18\n\x10hal_package_name\x18\x01 \x01(\x0c\x12\x19\n\x11hal_version_major\x18\x02 \x01(\x05\x12\x19\n\x11hal_version_minor\x18\x03 \x01(\x05\x12\x1a\n\x12hal_interface_name\x18\x04 \x01(\x0c\x12\x19\n\x11hal_release_level\x18\x05 \x01(\x0c\"}\n\x18\x41piCoverageReportMessage\x12\x37\n\rhal_interface\x18\x01 \x01(\x0b\x32 .android.vts.HalInterfaceMessage\x12\x0f\n\x07hal_api\x18\x0b \x03(\x0c\x12\x17\n\x0f\x63overed_hal_api\x18\x0c \x03(\x0c\"8\n\nLogMessage\x12\x0b\n\x03url\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\x0c\"@\n\x12UrlResourceMessage\x12\x0b\n\x03url\x18\x01 \x01(\x0c\x12\x0c\n\x04name\x18\x02 \x01(\x0c\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\x0c\"\xc8\x05\n\x11TestReportMessage\x12\x16\n\ntest_suite\x18\x01 \x01(\x0c\x42\x02\x18\x01\x12\x0c\n\x04test\x18\x02 \x01(\x0c\x12+\n\ttest_type\x18\x03 \x01(\x0e\x32\x18.android.vts.VtsTestType\x12:\n\x0b\x64\x65vice_info\x18\x04 \x03(\x0b\x32%.android.vts.AndroidDeviceInfoMessage\x12\x31\n\nbuild_info\x18\x05 \x01(\x0b\x32\x1d.android.vts.AndroidBuildInfo\x12\x18\n\x10subscriber_email\x18\x06 \x03(\x0c\x12+\n\thost_info\x18\x07 \x01(\x0b\x32\x18.android.vts.VtsHostInfo\x12\x35\n\ttest_case\x18\x0b \x03(\x0b\x32\".android.vts.TestCaseReportMessage\x12\x36\n\tprofiling\x18\x15 \x03(\x0b\x32#.android.vts.ProfilingReportMessage\x12\x38\n\x08systrace\x18\x16 \x03(\x0b\x32\".android.vts.SystraceReportMessageB\x02\x18\x01\x12\x17\n\x0fstart_timestamp\x18\x65 \x01(\x03\x12\x15\n\rend_timestamp\x18\x66 \x01(\x03\x12\x34\n\x08\x63overage\x18g \x03(\x0b\x32\".android.vts.CoverageReportMessage\x12;\n\x0c\x61pi_coverage\x18h \x03(\x0b\x32%.android.vts.ApiCoverageReportMessage\x12%\n\x03log\x18\xe9\x07 \x03(\x0b\x32\x17.android.vts.LogMessage\x12\x37\n\rlink_resource\x18\xf3\x07 \x03(\x0b\x32\x1f.android.vts.UrlResourceMessage\"\xe6\x01\n\x15TestPlanReportMessage\x12\x18\n\x10test_module_name\x18\x0b \x03(\t\x12#\n\x1btest_module_start_timestamp\x18\x0c \x03(\x03\x12\x16\n\x0etest_plan_name\x18\x15 \x01(\t\x12\x37\n\x0epartner_report\x18\x1f \x03(\x0b\x32\x1f.android.vts.UrlResourceMessage\x12=\n\x0ehal_api_report\x18) \x03(\x0b\x32%.android.vts.ApiCoverageReportMessage\"\x9f\x01\n\x14\x44\x61shboardPostMessage\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\t\x12\x33\n\x0btest_report\x18\x02 \x03(\x0b\x32\x1e.android.vts.TestReportMessage\x12<\n\x10test_plan_report\x18\x03 \x03(\x0b\x32\".android.vts.TestPlanReportMessage*\xb3\x01\n\x0eTestCaseResult\x12\x12\n\x0eUNKNOWN_RESULT\x10\x00\x12\x19\n\x15TEST_CASE_RESULT_PASS\x10\x01\x12\x19\n\x15TEST_CASE_RESULT_FAIL\x10\x02\x12\x19\n\x15TEST_CASE_RESULT_SKIP\x10\x03\x12\x1e\n\x1aTEST_CASE_RESULT_EXCEPTION\x10\x04\x12\x1c\n\x18TEST_CASE_RESULT_TIMEOUT\x10\x05*\x9c\x01\n\x0bVtsTestType\x12\x18\n\x14UNKNOWN_VTS_TESTTYPE\x10\x00\x12\x1e\n\x1aVTS_HOST_DRIVEN_STRUCTURAL\x10\x01\x12\x1b\n\x17VTS_HOST_DRIVEN_FUZZING\x10\x02\x12\x19\n\x15VTS_TARGET_SIDE_GTEST\x10\x03\x12\x1b\n\x17VTS_TARGET_SIDE_FUZZING\x10\x04*\xa3\x01\n\x1aVtsProfilingRegressionMode\x12\x1b\n\x17UNKNOWN_REGRESSION_MODE\x10\x00\x12 \n\x1cVTS_REGRESSION_MODE_DISABLED\x10\x01\x12\"\n\x1eVTS_REGRESSION_MODE_INCREASING\x10\x02\x12\"\n\x1eVTS_REGRESSION_MODE_DECREASING\x10\x03*\xa4\x01\n\x10VtsProfilingType\x12\x1e\n\x1aUNKNOWN_VTS_PROFILING_TYPE\x10\x00\x12 \n\x1cVTS_PROFILING_TYPE_TIMESTAMP\x10\x01\x12%\n!VTS_PROFILING_TYPE_LABELED_VECTOR\x10\x02\x12\'\n#VTS_PROFILING_TYPE_UNLABELED_VECTOR\x10\x03\x42+\n\x15\x63om.android.vts.protoB\x10VtsReportMessageP\x00') ) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) _TESTCASERESULT = _descriptor.EnumDescriptor( name='TestCaseResult', @@ -32,31 +32,31 @@ _TESTCASERESULT = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_RESULT', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TEST_CASE_RESULT_PASS', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TEST_CASE_RESULT_FAIL', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TEST_CASE_RESULT_SKIP', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TEST_CASE_RESULT_EXCEPTION', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='TEST_CASE_RESULT_TIMEOUT', index=5, number=5, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=2866, serialized_end=3045, ) @@ -71,27 +71,27 @@ _VTSTESTTYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_VTS_TESTTYPE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_HOST_DRIVEN_STRUCTURAL', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_HOST_DRIVEN_FUZZING', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_TARGET_SIDE_GTEST', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_TARGET_SIDE_FUZZING', index=4, number=4, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=3048, serialized_end=3204, ) @@ -106,23 +106,23 @@ _VTSPROFILINGREGRESSIONMODE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_REGRESSION_MODE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_REGRESSION_MODE_DISABLED', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_REGRESSION_MODE_INCREASING', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_REGRESSION_MODE_DECREASING', index=3, number=3, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=3207, serialized_end=3370, ) @@ -137,23 +137,23 @@ _VTSPROFILINGTYPE = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_VTS_PROFILING_TYPE', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_PROFILING_TYPE_TIMESTAMP', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_PROFILING_TYPE_LABELED_VECTOR', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='VTS_PROFILING_TYPE_UNLABELED_VECTOR', index=3, number=3, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=3373, serialized_end=3537, ) @@ -195,77 +195,77 @@ _ANDROIDDEVICEINFOMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='product_variant', full_name='android.vts.AndroidDeviceInfoMessage.product_variant', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_flavor', full_name='android.vts.AndroidDeviceInfoMessage.build_flavor', index=2, number=11, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_id', full_name='android.vts.AndroidDeviceInfoMessage.build_id', index=3, number=12, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='branch', full_name='android.vts.AndroidDeviceInfoMessage.branch', index=4, number=21, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_alias', full_name='android.vts.AndroidDeviceInfoMessage.build_alias', index=5, number=22, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='api_level', full_name='android.vts.AndroidDeviceInfoMessage.api_level', index=6, number=31, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='abi_name', full_name='android.vts.AndroidDeviceInfoMessage.abi_name', index=7, number=51, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='abi_bitness', full_name='android.vts.AndroidDeviceInfoMessage.abi_bitness', index=8, number=52, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='serial', full_name='android.vts.AndroidDeviceInfoMessage.serial', index=9, number=101, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -289,42 +289,42 @@ _ANDROIDBUILDINFO = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='name', full_name='android.vts.AndroidBuildInfo.name', index=1, number=11, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_type', full_name='android.vts.AndroidBuildInfo.build_type', index=2, number=12, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='branch', full_name='android.vts.AndroidBuildInfo.branch', index=3, number=13, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_summary', full_name='android.vts.AndroidBuildInfo.build_summary', index=4, number=21, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -348,14 +348,14 @@ _VTSHOSTINFO = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -379,63 +379,63 @@ _TESTCASEREPORTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_result', full_name='android.vts.TestCaseReportMessage.test_result', index=1, number=11, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='start_timestamp', full_name='android.vts.TestCaseReportMessage.start_timestamp', index=2, number=21, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='end_timestamp', full_name='android.vts.TestCaseReportMessage.end_timestamp', index=3, number=22, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='coverage', full_name='android.vts.TestCaseReportMessage.coverage', index=4, number=31, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='profiling', full_name='android.vts.TestCaseReportMessage.profiling', index=5, number=41, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='systrace', full_name='android.vts.TestCaseReportMessage.systrace', index=6, number=42, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='log', full_name='android.vts.TestCaseReportMessage.log', index=7, number=101, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -459,77 +459,77 @@ _PROFILINGREPORTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='type', full_name='android.vts.ProfilingReportMessage.type', index=1, number=2, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='regression_mode', full_name='android.vts.ProfilingReportMessage.regression_mode', index=2, number=3, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='start_timestamp', full_name='android.vts.ProfilingReportMessage.start_timestamp', index=3, number=11, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='end_timestamp', full_name='android.vts.ProfilingReportMessage.end_timestamp', index=4, number=12, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='label', full_name='android.vts.ProfilingReportMessage.label', index=5, number=21, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='value', full_name='android.vts.ProfilingReportMessage.value', index=6, number=22, type=3, cpp_type=2, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='x_axis_label', full_name='android.vts.ProfilingReportMessage.x_axis_label', index=7, number=31, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='y_axis_label', full_name='android.vts.ProfilingReportMessage.y_axis_label', index=8, number=32, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='options', full_name='android.vts.ProfilingReportMessage.options', index=9, number=41, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -553,28 +553,28 @@ _SYSTRACEREPORTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='html', full_name='android.vts.SystraceReportMessage.html', index=1, number=11, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='url', full_name='android.vts.SystraceReportMessage.url', index=2, number=21, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -598,70 +598,70 @@ _COVERAGEREPORTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='project_name', full_name='android.vts.CoverageReportMessage.project_name', index=1, number=12, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='revision', full_name='android.vts.CoverageReportMessage.revision', index=2, number=13, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='line_coverage_vector', full_name='android.vts.CoverageReportMessage.line_coverage_vector', index=3, number=23, type=3, cpp_type=2, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='total_line_count', full_name='android.vts.CoverageReportMessage.total_line_count', index=4, number=101, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='covered_line_count', full_name='android.vts.CoverageReportMessage.covered_line_count', index=5, number=102, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='dir_path', full_name='android.vts.CoverageReportMessage.dir_path', index=6, number=1, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='file_name', full_name='android.vts.CoverageReportMessage.file_name', index=7, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='html', full_name='android.vts.CoverageReportMessage.html', index=8, number=3, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -685,42 +685,42 @@ _HALINTERFACEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_version_major', full_name='android.vts.HalInterfaceMessage.hal_version_major', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_version_minor', full_name='android.vts.HalInterfaceMessage.hal_version_minor', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_interface_name', full_name='android.vts.HalInterfaceMessage.hal_interface_name', index=3, number=4, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_release_level', full_name='android.vts.HalInterfaceMessage.hal_release_level', index=4, number=5, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -744,28 +744,28 @@ _APICOVERAGEREPORTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_api', full_name='android.vts.ApiCoverageReportMessage.hal_api', index=1, number=11, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='covered_hal_api', full_name='android.vts.ApiCoverageReportMessage.covered_hal_api', index=2, number=12, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -789,28 +789,28 @@ _LOGMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='name', full_name='android.vts.LogMessage.name', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='content', full_name='android.vts.LogMessage.content', index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -834,28 +834,28 @@ _URLRESOURCEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='name', full_name='android.vts.UrlResourceMessage.name', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='content', full_name='android.vts.UrlResourceMessage.content', index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -879,119 +879,119 @@ _TESTREPORTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='test', full_name='android.vts.TestReportMessage.test', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_type', full_name='android.vts.TestReportMessage.test_type', index=2, number=3, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='device_info', full_name='android.vts.TestReportMessage.device_info', index=3, number=4, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='build_info', full_name='android.vts.TestReportMessage.build_info', index=4, number=5, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='subscriber_email', full_name='android.vts.TestReportMessage.subscriber_email', index=5, number=6, type=12, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='host_info', full_name='android.vts.TestReportMessage.host_info', index=6, number=7, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_case', full_name='android.vts.TestReportMessage.test_case', index=7, number=11, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='profiling', full_name='android.vts.TestReportMessage.profiling', index=8, number=21, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='systrace', full_name='android.vts.TestReportMessage.systrace', index=9, number=22, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=_b('\030\001'), file=DESCRIPTOR), + options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))), _descriptor.FieldDescriptor( name='start_timestamp', full_name='android.vts.TestReportMessage.start_timestamp', index=10, number=101, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='end_timestamp', full_name='android.vts.TestReportMessage.end_timestamp', index=11, number=102, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='coverage', full_name='android.vts.TestReportMessage.coverage', index=12, number=103, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='api_coverage', full_name='android.vts.TestReportMessage.api_coverage', index=13, number=104, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='log', full_name='android.vts.TestReportMessage.log', index=14, number=1001, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='link_resource', full_name='android.vts.TestReportMessage.link_resource', index=15, number=1011, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1015,42 +1015,42 @@ _TESTPLANREPORTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_module_start_timestamp', full_name='android.vts.TestPlanReportMessage.test_module_start_timestamp', index=1, number=12, type=3, cpp_type=2, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_plan_name', full_name='android.vts.TestPlanReportMessage.test_plan_name', index=2, number=21, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='partner_report', full_name='android.vts.TestPlanReportMessage.partner_report', index=3, number=31, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='hal_api_report', full_name='android.vts.TestPlanReportMessage.hal_api_report', index=4, number=41, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1074,28 +1074,28 @@ _DASHBOARDPOSTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_report', full_name='android.vts.DashboardPostMessage.test_report', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='test_plan_report', full_name='android.vts.DashboardPostMessage.test_plan_report', index=2, number=3, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -1146,112 +1146,118 @@ DESCRIPTOR.enum_types_by_name['TestCaseResult'] = _TESTCASERESULT DESCRIPTOR.enum_types_by_name['VtsTestType'] = _VTSTESTTYPE DESCRIPTOR.enum_types_by_name['VtsProfilingRegressionMode'] = _VTSPROFILINGREGRESSIONMODE DESCRIPTOR.enum_types_by_name['VtsProfilingType'] = _VTSPROFILINGTYPE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) -AndroidDeviceInfoMessage = _reflection.GeneratedProtocolMessageType('AndroidDeviceInfoMessage', (_message.Message,), { - 'DESCRIPTOR' : _ANDROIDDEVICEINFOMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +AndroidDeviceInfoMessage = _reflection.GeneratedProtocolMessageType('AndroidDeviceInfoMessage', (_message.Message,), dict( + DESCRIPTOR = _ANDROIDDEVICEINFOMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.AndroidDeviceInfoMessage) - }) + )) _sym_db.RegisterMessage(AndroidDeviceInfoMessage) -AndroidBuildInfo = _reflection.GeneratedProtocolMessageType('AndroidBuildInfo', (_message.Message,), { - 'DESCRIPTOR' : _ANDROIDBUILDINFO, - '__module__' : 'VtsReportMessage_pb2' +AndroidBuildInfo = _reflection.GeneratedProtocolMessageType('AndroidBuildInfo', (_message.Message,), dict( + DESCRIPTOR = _ANDROIDBUILDINFO, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.AndroidBuildInfo) - }) + )) _sym_db.RegisterMessage(AndroidBuildInfo) -VtsHostInfo = _reflection.GeneratedProtocolMessageType('VtsHostInfo', (_message.Message,), { - 'DESCRIPTOR' : _VTSHOSTINFO, - '__module__' : 'VtsReportMessage_pb2' +VtsHostInfo = _reflection.GeneratedProtocolMessageType('VtsHostInfo', (_message.Message,), dict( + DESCRIPTOR = _VTSHOSTINFO, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.VtsHostInfo) - }) + )) _sym_db.RegisterMessage(VtsHostInfo) -TestCaseReportMessage = _reflection.GeneratedProtocolMessageType('TestCaseReportMessage', (_message.Message,), { - 'DESCRIPTOR' : _TESTCASEREPORTMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +TestCaseReportMessage = _reflection.GeneratedProtocolMessageType('TestCaseReportMessage', (_message.Message,), dict( + DESCRIPTOR = _TESTCASEREPORTMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.TestCaseReportMessage) - }) + )) _sym_db.RegisterMessage(TestCaseReportMessage) -ProfilingReportMessage = _reflection.GeneratedProtocolMessageType('ProfilingReportMessage', (_message.Message,), { - 'DESCRIPTOR' : _PROFILINGREPORTMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +ProfilingReportMessage = _reflection.GeneratedProtocolMessageType('ProfilingReportMessage', (_message.Message,), dict( + DESCRIPTOR = _PROFILINGREPORTMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.ProfilingReportMessage) - }) + )) _sym_db.RegisterMessage(ProfilingReportMessage) -SystraceReportMessage = _reflection.GeneratedProtocolMessageType('SystraceReportMessage', (_message.Message,), { - 'DESCRIPTOR' : _SYSTRACEREPORTMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +SystraceReportMessage = _reflection.GeneratedProtocolMessageType('SystraceReportMessage', (_message.Message,), dict( + DESCRIPTOR = _SYSTRACEREPORTMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.SystraceReportMessage) - }) + )) _sym_db.RegisterMessage(SystraceReportMessage) -CoverageReportMessage = _reflection.GeneratedProtocolMessageType('CoverageReportMessage', (_message.Message,), { - 'DESCRIPTOR' : _COVERAGEREPORTMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +CoverageReportMessage = _reflection.GeneratedProtocolMessageType('CoverageReportMessage', (_message.Message,), dict( + DESCRIPTOR = _COVERAGEREPORTMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.CoverageReportMessage) - }) + )) _sym_db.RegisterMessage(CoverageReportMessage) -HalInterfaceMessage = _reflection.GeneratedProtocolMessageType('HalInterfaceMessage', (_message.Message,), { - 'DESCRIPTOR' : _HALINTERFACEMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +HalInterfaceMessage = _reflection.GeneratedProtocolMessageType('HalInterfaceMessage', (_message.Message,), dict( + DESCRIPTOR = _HALINTERFACEMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.HalInterfaceMessage) - }) + )) _sym_db.RegisterMessage(HalInterfaceMessage) -ApiCoverageReportMessage = _reflection.GeneratedProtocolMessageType('ApiCoverageReportMessage', (_message.Message,), { - 'DESCRIPTOR' : _APICOVERAGEREPORTMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +ApiCoverageReportMessage = _reflection.GeneratedProtocolMessageType('ApiCoverageReportMessage', (_message.Message,), dict( + DESCRIPTOR = _APICOVERAGEREPORTMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.ApiCoverageReportMessage) - }) + )) _sym_db.RegisterMessage(ApiCoverageReportMessage) -LogMessage = _reflection.GeneratedProtocolMessageType('LogMessage', (_message.Message,), { - 'DESCRIPTOR' : _LOGMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +LogMessage = _reflection.GeneratedProtocolMessageType('LogMessage', (_message.Message,), dict( + DESCRIPTOR = _LOGMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.LogMessage) - }) + )) _sym_db.RegisterMessage(LogMessage) -UrlResourceMessage = _reflection.GeneratedProtocolMessageType('UrlResourceMessage', (_message.Message,), { - 'DESCRIPTOR' : _URLRESOURCEMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +UrlResourceMessage = _reflection.GeneratedProtocolMessageType('UrlResourceMessage', (_message.Message,), dict( + DESCRIPTOR = _URLRESOURCEMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.UrlResourceMessage) - }) + )) _sym_db.RegisterMessage(UrlResourceMessage) -TestReportMessage = _reflection.GeneratedProtocolMessageType('TestReportMessage', (_message.Message,), { - 'DESCRIPTOR' : _TESTREPORTMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +TestReportMessage = _reflection.GeneratedProtocolMessageType('TestReportMessage', (_message.Message,), dict( + DESCRIPTOR = _TESTREPORTMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.TestReportMessage) - }) + )) _sym_db.RegisterMessage(TestReportMessage) -TestPlanReportMessage = _reflection.GeneratedProtocolMessageType('TestPlanReportMessage', (_message.Message,), { - 'DESCRIPTOR' : _TESTPLANREPORTMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +TestPlanReportMessage = _reflection.GeneratedProtocolMessageType('TestPlanReportMessage', (_message.Message,), dict( + DESCRIPTOR = _TESTPLANREPORTMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.TestPlanReportMessage) - }) + )) _sym_db.RegisterMessage(TestPlanReportMessage) -DashboardPostMessage = _reflection.GeneratedProtocolMessageType('DashboardPostMessage', (_message.Message,), { - 'DESCRIPTOR' : _DASHBOARDPOSTMESSAGE, - '__module__' : 'VtsReportMessage_pb2' +DashboardPostMessage = _reflection.GeneratedProtocolMessageType('DashboardPostMessage', (_message.Message,), dict( + DESCRIPTOR = _DASHBOARDPOSTMESSAGE, + __module__ = 'VtsReportMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.DashboardPostMessage) - }) + )) _sym_db.RegisterMessage(DashboardPostMessage) -DESCRIPTOR._options = None -_TESTCASEREPORTMESSAGE.fields_by_name['systrace']._options = None -_COVERAGEREPORTMESSAGE.fields_by_name['dir_path']._options = None -_COVERAGEREPORTMESSAGE.fields_by_name['file_name']._options = None -_COVERAGEREPORTMESSAGE.fields_by_name['html']._options = None -_TESTREPORTMESSAGE.fields_by_name['test_suite']._options = None -_TESTREPORTMESSAGE.fields_by_name['systrace']._options = None +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB\020VtsReportMessageP\000')) +_TESTCASEREPORTMESSAGE.fields_by_name['systrace'].has_options = True +_TESTCASEREPORTMESSAGE.fields_by_name['systrace']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_COVERAGEREPORTMESSAGE.fields_by_name['dir_path'].has_options = True +_COVERAGEREPORTMESSAGE.fields_by_name['dir_path']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_COVERAGEREPORTMESSAGE.fields_by_name['file_name'].has_options = True +_COVERAGEREPORTMESSAGE.fields_by_name['file_name']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_COVERAGEREPORTMESSAGE.fields_by_name['html'].has_options = True +_COVERAGEREPORTMESSAGE.fields_by_name['html']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_TESTREPORTMESSAGE.fields_by_name['test_suite'].has_options = True +_TESTREPORTMESSAGE.fields_by_name['test_suite']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) +_TESTREPORTMESSAGE.fields_by_name['systrace'].has_options = True +_TESTREPORTMESSAGE.fields_by_name['systrace']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')) # @@protoc_insertion_point(module_scope) diff --git a/proto/VtsResourceControllerMessage_pb2.py b/proto/VtsResourceControllerMessage_pb2.py index d9acb3f7f..17b831a80 100644 --- a/proto/VtsResourceControllerMessage_pb2.py +++ b/proto/VtsResourceControllerMessage_pb2.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: VtsResourceControllerMessage.proto @@ -9,6 +8,7 @@ from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,10 +21,10 @@ DESCRIPTOR = _descriptor.FileDescriptor( name='VtsResourceControllerMessage.proto', package='android.vts', syntax='proto2', - serialized_options=_b('\n\025com.android.vts.protoB\034VtsResourceControllerMessage'), serialized_pb=_b('\n\"VtsResourceControllerMessage.proto\x12\x0b\x61ndroid.vts\x1a#ComponentSpecificationMessage.proto\"\xb7\x02\n\x11\x46mqRequestMessage\x12%\n\toperation\x18\x01 \x01(\x0e\x32\x12.android.vts.FmqOp\x12\x11\n\tdata_type\x18\x02 \x01(\x0c\x12\x0c\n\x04sync\x18\x03 \x01(\x08\x12\x14\n\x08queue_id\x18\x04 \x01(\x05:\x02-1\x12\x12\n\nqueue_size\x18\x05 \x01(\x04\x12\x10\n\x08\x62locking\x18\x06 \x01(\x08\x12\x16\n\x0ereset_pointers\x18\x07 \x01(\x08\x12=\n\nwrite_data\x18\x08 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x16\n\x0eread_data_size\x18\t \x01(\x04\x12\x16\n\x0etime_out_nanos\x18\n \x01(\x03\x12\x17\n\x0fqueue_desc_addr\x18\x0b \x01(\x04\"\x8f\x01\n\x12\x46mqResponseMessage\x12<\n\tread_data\x18\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\x12\x18\n\x10sizet_return_val\x18\x02 \x01(\x04\x12\x10\n\x08queue_id\x18\x03 \x01(\x05\x12\x0f\n\x07success\x18\x04 \x01(\x08\"\xa1\x01\n\x18HidlMemoryRequestMessage\x12,\n\toperation\x18\x01 \x01(\x0e\x32\x19.android.vts.HidlMemoryOp\x12\x12\n\x06mem_id\x18\x02 \x01(\x05:\x02-1\x12\x10\n\x08mem_size\x18\x03 \x01(\x04\x12\r\n\x05start\x18\x04 \x01(\x04\x12\x0e\n\x06length\x18\x05 \x01(\x04\x12\x12\n\nwrite_data\x18\x06 \x01(\x0c\"e\n\x19HidlMemoryResponseMessage\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x12\n\nnew_mem_id\x18\x02 \x01(\x05\x12\x10\n\x08mem_size\x18\x03 \x01(\x04\x12\x11\n\tread_data\x18\x04 \x01(\x0c\"\xc5\x01\n\x18HidlHandleRequestMessage\x12,\n\toperation\x18\x01 \x01(\x0e\x32\x19.android.vts.HidlHandleOp\x12\x15\n\thandle_id\x18\x02 \x01(\x05:\x02-1\x12\x38\n\x0bhandle_info\x18\x03 \x01(\x0b\x32#.android.vts.HandleDataValueMessage\x12\x16\n\x0eread_data_size\x18\x04 \x01(\x04\x12\x12\n\nwrite_data\x18\x05 \x01(\x0c\"o\n\x19HidlHandleResponseMessage\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x15\n\rnew_handle_id\x18\x02 \x01(\x05\x12\x11\n\tread_data\x18\x03 \x01(\x0c\x12\x17\n\x0fwrite_data_size\x18\x04 \x01(\x03*\xbc\x02\n\x05\x46mqOp\x12\x0f\n\x0b\x46MQ_UNKNOWN\x10\x00\x12\x0e\n\nFMQ_CREATE\x10\x01\x12\x0c\n\x08\x46MQ_READ\x10\x02\x12\x15\n\x11\x46MQ_READ_BLOCKING\x10\x03\x12\x1a\n\x16\x46MQ_READ_BLOCKING_LONG\x10\x04\x12\r\n\tFMQ_WRITE\x10\x05\x12\x16\n\x12\x46MQ_WRITE_BLOCKING\x10\x06\x12\x1b\n\x17\x46MQ_WRITE_BLOCKING_LONG\x10\x07\x12\x17\n\x13\x46MQ_AVAILABLE_WRITE\x10\x08\x12\x16\n\x12\x46MQ_AVAILABLE_READ\x10\t\x12\x18\n\x14\x46MQ_GET_QUANTUM_SIZE\x10\n\x12\x19\n\x15\x46MQ_GET_QUANTUM_COUNT\x10\x0b\x12\x10\n\x0c\x46MQ_IS_VALID\x10\x0c\x12\x15\n\x11\x46MQ_GET_DESC_ADDR\x10\r*\x99\x02\n\x0cHidlMemoryOp\x12\x15\n\x11MEM_PROTO_UNKNOWN\x10\x00\x12\x16\n\x12MEM_PROTO_ALLOCATE\x10\x01\x12\x18\n\x14MEM_PROTO_START_READ\x10\x02\x12\x1e\n\x1aMEM_PROTO_START_READ_RANGE\x10\x03\x12\x18\n\x14MEM_PROTO_READ_BYTES\x10\x04\x12\x1a\n\x16MEM_PROTO_START_UPDATE\x10\x05\x12 \n\x1cMEM_PROTO_START_UPDATE_RANGE\x10\x06\x12\x1a\n\x16MEM_PROTO_UPDATE_BYTES\x10\x07\x12\x14\n\x10MEM_PROTO_COMMIT\x10\x08\x12\x16\n\x12MEM_PROTO_GET_SIZE\x10\t*\x98\x01\n\x0cHidlHandleOp\x12\x18\n\x14HANDLE_PROTO_UNKNOWN\x10\x00\x12\x1c\n\x18HANDLE_PROTO_CREATE_FILE\x10\x01\x12\x1a\n\x16HANDLE_PROTO_READ_FILE\x10\x02\x12\x1b\n\x17HANDLE_PROTO_WRITE_FILE\x10\x03\x12\x17\n\x13HANDLE_PROTO_DELETE\x10\x04\x42\x35\n\x15\x63om.android.vts.protoB\x1cVtsResourceControllerMessage') , dependencies=[ComponentSpecificationMessage__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) _FMQOP = _descriptor.EnumDescriptor( name='FmqOp', @@ -34,63 +34,63 @@ _FMQOP = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='FMQ_UNKNOWN', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_CREATE', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_READ', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_READ_BLOCKING', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_READ_BLOCKING_LONG', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_WRITE', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_WRITE_BLOCKING', index=6, number=6, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_WRITE_BLOCKING_LONG', index=7, number=7, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_AVAILABLE_WRITE', index=8, number=8, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_AVAILABLE_READ', index=9, number=9, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_GET_QUANTUM_SIZE', index=10, number=10, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_GET_QUANTUM_COUNT', index=11, number=11, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_IS_VALID', index=12, number=12, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='FMQ_GET_DESC_ADDR', index=13, number=13, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=1129, serialized_end=1445, ) @@ -105,47 +105,47 @@ _HIDLMEMORYOP = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='MEM_PROTO_UNKNOWN', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_ALLOCATE', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_START_READ', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_START_READ_RANGE', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_READ_BYTES', index=4, number=4, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_START_UPDATE', index=5, number=5, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_START_UPDATE_RANGE', index=6, number=6, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_UPDATE_BYTES', index=7, number=7, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_COMMIT', index=8, number=8, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='MEM_PROTO_GET_SIZE', index=9, number=9, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=1448, serialized_end=1729, ) @@ -160,27 +160,27 @@ _HIDLHANDLEOP = _descriptor.EnumDescriptor( values=[ _descriptor.EnumValueDescriptor( name='HANDLE_PROTO_UNKNOWN', index=0, number=0, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HANDLE_PROTO_CREATE_FILE', index=1, number=1, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HANDLE_PROTO_READ_FILE', index=2, number=2, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HANDLE_PROTO_WRITE_FILE', index=3, number=3, - serialized_options=None, + options=None, type=None), _descriptor.EnumValueDescriptor( name='HANDLE_PROTO_DELETE', index=4, number=4, - serialized_options=None, + options=None, type=None), ], containing_type=None, - serialized_options=None, + options=None, serialized_start=1732, serialized_end=1884, ) @@ -232,84 +232,84 @@ _FMQREQUESTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='data_type', full_name='android.vts.FmqRequestMessage.data_type', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='sync', full_name='android.vts.FmqRequestMessage.sync', index=2, number=3, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='queue_id', full_name='android.vts.FmqRequestMessage.queue_id', index=3, number=4, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='queue_size', full_name='android.vts.FmqRequestMessage.queue_size', index=4, number=5, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='blocking', full_name='android.vts.FmqRequestMessage.blocking', index=5, number=6, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='reset_pointers', full_name='android.vts.FmqRequestMessage.reset_pointers', index=6, number=7, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='write_data', full_name='android.vts.FmqRequestMessage.write_data', index=7, number=8, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='read_data_size', full_name='android.vts.FmqRequestMessage.read_data_size', index=8, number=9, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='time_out_nanos', full_name='android.vts.FmqRequestMessage.time_out_nanos', index=9, number=10, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='queue_desc_addr', full_name='android.vts.FmqRequestMessage.queue_desc_addr', index=10, number=11, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -333,35 +333,35 @@ _FMQRESPONSEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='sizet_return_val', full_name='android.vts.FmqResponseMessage.sizet_return_val', index=1, number=2, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='queue_id', full_name='android.vts.FmqResponseMessage.queue_id', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='success', full_name='android.vts.FmqResponseMessage.success', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -385,49 +385,49 @@ _HIDLMEMORYREQUESTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='mem_id', full_name='android.vts.HidlMemoryRequestMessage.mem_id', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='mem_size', full_name='android.vts.HidlMemoryRequestMessage.mem_size', index=2, number=3, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='start', full_name='android.vts.HidlMemoryRequestMessage.start', index=3, number=4, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='length', full_name='android.vts.HidlMemoryRequestMessage.length', index=4, number=5, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='write_data', full_name='android.vts.HidlMemoryRequestMessage.write_data', index=5, number=6, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -451,35 +451,35 @@ _HIDLMEMORYRESPONSEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='new_mem_id', full_name='android.vts.HidlMemoryResponseMessage.new_mem_id', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='mem_size', full_name='android.vts.HidlMemoryResponseMessage.mem_size', index=2, number=3, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='read_data', full_name='android.vts.HidlMemoryResponseMessage.read_data', index=3, number=4, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -503,42 +503,42 @@ _HIDLHANDLEREQUESTMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='handle_id', full_name='android.vts.HidlHandleRequestMessage.handle_id', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=True, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='handle_info', full_name='android.vts.HidlHandleRequestMessage.handle_info', index=2, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='read_data_size', full_name='android.vts.HidlHandleRequestMessage.read_data_size', index=3, number=4, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='write_data', full_name='android.vts.HidlHandleRequestMessage.write_data', index=4, number=5, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -562,35 +562,35 @@ _HIDLHANDLERESPONSEMESSAGE = _descriptor.Descriptor( has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='new_handle_id', full_name='android.vts.HidlHandleResponseMessage.new_handle_id', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='read_data', full_name='android.vts.HidlHandleResponseMessage.read_data', index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), _descriptor.FieldDescriptor( name='write_data_size', full_name='android.vts.HidlHandleResponseMessage.write_data_size', index=3, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], - serialized_options=None, + options=None, is_extendable=False, syntax='proto2', extension_ranges=[], @@ -615,50 +615,50 @@ DESCRIPTOR.message_types_by_name['HidlHandleResponseMessage'] = _HIDLHANDLERESPO DESCRIPTOR.enum_types_by_name['FmqOp'] = _FMQOP DESCRIPTOR.enum_types_by_name['HidlMemoryOp'] = _HIDLMEMORYOP DESCRIPTOR.enum_types_by_name['HidlHandleOp'] = _HIDLHANDLEOP -_sym_db.RegisterFileDescriptor(DESCRIPTOR) -FmqRequestMessage = _reflection.GeneratedProtocolMessageType('FmqRequestMessage', (_message.Message,), { - 'DESCRIPTOR' : _FMQREQUESTMESSAGE, - '__module__' : 'VtsResourceControllerMessage_pb2' +FmqRequestMessage = _reflection.GeneratedProtocolMessageType('FmqRequestMessage', (_message.Message,), dict( + DESCRIPTOR = _FMQREQUESTMESSAGE, + __module__ = 'VtsResourceControllerMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.FmqRequestMessage) - }) + )) _sym_db.RegisterMessage(FmqRequestMessage) -FmqResponseMessage = _reflection.GeneratedProtocolMessageType('FmqResponseMessage', (_message.Message,), { - 'DESCRIPTOR' : _FMQRESPONSEMESSAGE, - '__module__' : 'VtsResourceControllerMessage_pb2' +FmqResponseMessage = _reflection.GeneratedProtocolMessageType('FmqResponseMessage', (_message.Message,), dict( + DESCRIPTOR = _FMQRESPONSEMESSAGE, + __module__ = 'VtsResourceControllerMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.FmqResponseMessage) - }) + )) _sym_db.RegisterMessage(FmqResponseMessage) -HidlMemoryRequestMessage = _reflection.GeneratedProtocolMessageType('HidlMemoryRequestMessage', (_message.Message,), { - 'DESCRIPTOR' : _HIDLMEMORYREQUESTMESSAGE, - '__module__' : 'VtsResourceControllerMessage_pb2' +HidlMemoryRequestMessage = _reflection.GeneratedProtocolMessageType('HidlMemoryRequestMessage', (_message.Message,), dict( + DESCRIPTOR = _HIDLMEMORYREQUESTMESSAGE, + __module__ = 'VtsResourceControllerMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.HidlMemoryRequestMessage) - }) + )) _sym_db.RegisterMessage(HidlMemoryRequestMessage) -HidlMemoryResponseMessage = _reflection.GeneratedProtocolMessageType('HidlMemoryResponseMessage', (_message.Message,), { - 'DESCRIPTOR' : _HIDLMEMORYRESPONSEMESSAGE, - '__module__' : 'VtsResourceControllerMessage_pb2' +HidlMemoryResponseMessage = _reflection.GeneratedProtocolMessageType('HidlMemoryResponseMessage', (_message.Message,), dict( + DESCRIPTOR = _HIDLMEMORYRESPONSEMESSAGE, + __module__ = 'VtsResourceControllerMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.HidlMemoryResponseMessage) - }) + )) _sym_db.RegisterMessage(HidlMemoryResponseMessage) -HidlHandleRequestMessage = _reflection.GeneratedProtocolMessageType('HidlHandleRequestMessage', (_message.Message,), { - 'DESCRIPTOR' : _HIDLHANDLEREQUESTMESSAGE, - '__module__' : 'VtsResourceControllerMessage_pb2' +HidlHandleRequestMessage = _reflection.GeneratedProtocolMessageType('HidlHandleRequestMessage', (_message.Message,), dict( + DESCRIPTOR = _HIDLHANDLEREQUESTMESSAGE, + __module__ = 'VtsResourceControllerMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.HidlHandleRequestMessage) - }) + )) _sym_db.RegisterMessage(HidlHandleRequestMessage) -HidlHandleResponseMessage = _reflection.GeneratedProtocolMessageType('HidlHandleResponseMessage', (_message.Message,), { - 'DESCRIPTOR' : _HIDLHANDLERESPONSEMESSAGE, - '__module__' : 'VtsResourceControllerMessage_pb2' +HidlHandleResponseMessage = _reflection.GeneratedProtocolMessageType('HidlHandleResponseMessage', (_message.Message,), dict( + DESCRIPTOR = _HIDLHANDLERESPONSEMESSAGE, + __module__ = 'VtsResourceControllerMessage_pb2' # @@protoc_insertion_point(class_scope:android.vts.HidlHandleResponseMessage) - }) + )) _sym_db.RegisterMessage(HidlHandleResponseMessage) -DESCRIPTOR._options = None +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB\034VtsResourceControllerMessage')) # @@protoc_insertion_point(module_scope) diff --git a/runners/host/tcp_client/vts_tcp_client.py b/runners/host/tcp_client/vts_tcp_client.py index e00acfd58..bca568d40 100755 --- a/runners/host/tcp_client/vts_tcp_client.py +++ b/runners/host/tcp_client/vts_tcp_client.py @@ -462,8 +462,8 @@ class VtsTcpClient(object): stderr = [self.FAIL_RESPONSE_MSG] self.error = self.FAIL_RESPONSE_MSG else: - stdout = resp.stdout_str - stderr = resp.stderr_str + stdout = resp.stdout + stderr = resp.stderr exit_code = resp.exit_code self.error = None diff --git a/runners/target/vts_hal_hidl_target/Android.bp b/runners/target/vts_hal_hidl_target/Android.bp index c5d530f0e..363715ae8 100644 --- a/runners/target/vts_hal_hidl_target/Android.bp +++ b/runners/target/vts_hal_hidl_target/Android.bp @@ -25,7 +25,6 @@ cc_library_static { "VtsCoreUtil.cpp", ], - vendor_available: true, cflags: ["-Wall", "-Werror"], shared_libs: [ diff --git a/specification/Android.bp b/specification/Android.bp deleted file mode 100644 index 30e377210..000000000 --- a/specification/Android.bp +++ /dev/null @@ -1,100 +0,0 @@ -// -// Copyright (C) 2016 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. -// - -package { - // See: http://go/android-license-faq - default_applicable_licenses: ["Android-Apache-2.0"], -} - -cc_library_shared { - // libvts_interfacespecification does not include or link any HIDL HAL driver. - // HIDL HAL drivers and profilers are defined as separated shared libraries - // in a respective hardware/interfaces/<hal name>/<version>/Android.bp file. - // libvts_interfacespecification is the driver for: - // legacy HALs, - // conventional HALs, - // shared libraries, - // and so on. - name: "libvts_interfacespecification", - generated_sources: ["libvts_interfacespecification_vts.driver_genc++"], - generated_headers: ["libvts_interfacespecification_vts.driver_genc++_headers"], - export_generated_headers: ["libvts_interfacespecification_vts.driver_genc++_headers"], - shared_libs: [ - "libbase", - "libcutils", - "liblog", - "libdl", - "libandroid_runtime", - "libcamera_metadata", - "libvts_datatype", - "libvts_common", - "libvts_measurement", - "libvts_multidevice_proto", - "libprotobuf-cpp-full", - ], - static_libs: [ - "libbluetooth-types", - ], - cflags: [ - "-Wall", - "-Werror", - // These warnings are in code generated with vtsc - // b/31362043 - "-Wno-unused-parameter", - "-Wno-unused-value", - "-Wno-duplicate-decl-specifier", - ], - proto: { - type: "full", - }, - compile_multilib: "both", -} - -cc_genrule { - name: "libvts_interfacespecification_vts.driver_genc++", - srcs: [ - "lib/**/*", - ], - tools: [ - "vtsc", - ], - out: [ - "vts/libcutilsV1.vts.cpp", - "vts/libcV1.vts.cpp", - "vts/libmV1.vts.cpp", - ], - cmd: "mkdir -p $(genDir)/vts && " + - "cp $(in) $(genDir)/vts/ && " + - "$(location vtsc) -mDRIVER -tSOURCE -b$(genDir) vts/ $(genDir)/vts/", -} - -cc_genrule { - name: "libvts_interfacespecification_vts.driver_genc++_headers", - srcs: [ - "lib/**/*", - ], - tools: [ - "vtsc", - ], - out: [ - "vts/libcutilsV1.vts.h", - "vts/libcV1.vts.h", - "vts/libmV1.vts.h", - ], - cmd: "mkdir -p $(genDir)/vts && " + - "cp $(in) $(genDir)/vts/ && " + - "$(location vtsc) -mDRIVER -tHEADER -b$(genDir) vts/ $(genDir)/vts/", -} diff --git a/specification/Android.mk b/specification/Android.mk new file mode 100644 index 000000000..eb84bfcfd --- /dev/null +++ b/specification/Android.mk @@ -0,0 +1,96 @@ +# +# Copyright (C) 2016 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. +# + +LOCAL_PATH := $(call my-dir) + +vtslib_interfacespec_srcfiles := \ + lib/ndk/bionic/1.0/libmV1.vts \ + lib/ndk/bionic/1.0/libcV1.vts \ + lib/ndk/bionic/1.0/libcutilsV1.vts \ + +vtslib_interfacespec_includes := \ + $(LOCAL_PATH) \ + test/vts/drivers/hal \ + test/vts/drivers/hal/common \ + test/vts/drivers/hal/libdatatype \ + test/vts/drivers/hal/libmeasurement \ + bionic \ + system/extras \ + system/media/camera/include \ + external/protobuf/src \ + $(TARGET_OUT_HEADERS) \ + +vtslib_interfacespec_shared_libraries := \ + libbase \ + libcutils \ + liblog \ + libdl \ + libandroid_runtime \ + libcamera_metadata \ + libvts_datatype \ + libvts_common \ + libvts_measurement \ + libvts_multidevice_proto \ + libprotobuf-cpp-full \ + +vtslib_interfacespec_static_libraries := \ + libbluetooth-types + +include $(CLEAR_VARS) + +# libvts_interfacespecification does not include or link any HIDL HAL driver. +# HIDL HAL drivers and profilers are defined as separated shared libraries +# in a respective hardware/interfaces/<hal name>/<version>/Android.bp file. +# libvts_interfacespecification is the driver for: +# legacy HALs, +# conventional HALs, +# shared libraries, +# and so on. + +LOCAL_MODULE := libvts_interfacespecification +LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 +LOCAL_LICENSE_CONDITIONS := notice +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := \ + ${vtslib_interfacespec_srcfiles} \ + +LOCAL_C_INCLUDES := \ + ${vtslib_interfacespec_includes} \ + system/libbase/include \ + +LOCAL_SHARED_LIBRARIES := \ + ${vtslib_interfacespec_shared_libraries} \ + +LOCAL_STATIC_LIBRARIES := \ + ${vtslib_interfacespec_static_libraries} + +LOCAL_CFLAGS := \ + -Wall \ + -Werror \ + +# These warnings are in code generated with vtsc +# b/31362043 +LOCAL_CFLAGS += \ + -Wno-unused-parameter \ + -Wno-unused-value \ + -Wno-duplicate-decl-specifier \ + +LOCAL_PROTOC_OPTIMIZE_TYPE := full + +LOCAL_MULTILIB := both + +include $(BUILD_SHARED_LIBRARY) diff --git a/testcases/host/fastboot_getvar/AndroidTest.xml b/testcases/host/fastboot_getvar/AndroidTest.xml index 69d0787c7..f3b627e35 100644 --- a/testcases/host/fastboot_getvar/AndroidTest.xml +++ b/testcases/host/fastboot_getvar/AndroidTest.xml @@ -18,7 +18,7 @@ <option name="test-suite-tag" value="apct-junit" /> <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController"> - <option name="vsr-min-api-level" value="31" /> + <option name="min-api-level" value="30" /> </object> <test class="com.android.tradefed.testtype.HostTest" > diff --git a/testcases/host/fastboot_getvar/OWNERS b/testcases/host/fastboot_getvar/OWNERS deleted file mode 100644 index 0427b5044..000000000 --- a/testcases/host/fastboot_getvar/OWNERS +++ /dev/null @@ -1,5 +0,0 @@ -# Bug component: 30545 -dvander@google.com -bowgotsai@google.com -elsk@google.com -smuckle@google.com diff --git a/testcases/host/fastboot_getvar/src/com/android/tests/FastbootGetvarUserspaceTest.java b/testcases/host/fastboot_getvar/src/com/android/tests/FastbootGetvarUserspaceTest.java index 806c27d79..3b5482314 100644 --- a/testcases/host/fastboot_getvar/src/com/android/tests/FastbootGetvarUserspaceTest.java +++ b/testcases/host/fastboot_getvar/src/com/android/tests/FastbootGetvarUserspaceTest.java @@ -17,14 +17,11 @@ package com.android.tests.fastboot_getvar; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import android.platform.test.annotations.RequiresDevice; -import com.android.tradefed.device.DeviceProperties; import com.android.tradefed.device.ITestDevice; +import com.android.tradefed.device.TestDeviceState; import com.android.tradefed.invoker.TestInformation; import com.android.tradefed.log.LogUtil.CLog; import com.android.tradefed.testtype.DeviceJUnit4ClassRunner; @@ -35,7 +32,6 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.HashSet; -import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Assert; @@ -45,69 +41,46 @@ import org.junit.Test; import org.junit.runner.RunWith; /* VTS test to verify userspace fastboot getvar information. */ -@RequiresDevice @RunWith(DeviceJUnit4ClassRunner.class) public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { private static final int PLATFORM_API_LEVEL_R = 30; private static final int ANDROID_RELEASE_VERSION_R = 11; + private ITestDevice mDevice; private static String executeShellKernelARM64 = "cat /proc/config.gz | gzip -d | grep CONFIG_ARM64=y"; - - // IMPORTANT: Multiple instances of this class will be created while sharding - // the tests across multiple devices. So it needs to use ConcurrentHashMap to - // make these static variables thread-safe. - private static ConcurrentHashMap<ITestDevice, String> sDeviceCodeName = - new ConcurrentHashMap<>(); - private static ConcurrentHashMap<ITestDevice, Boolean> sDeviceIsGKI10 = - new ConcurrentHashMap<>(); + private static boolean isGKI10; @BeforeClassWithInfo public static void setUpClass(TestInformation testInfo) throws Exception { - // Collects information while adb is available, prior to rebooting into fastbootd. boolean isKernelARM64 = testInfo.getDevice() .executeShellCommand(executeShellKernelARM64) .contains("CONFIG_ARM64"); - boolean isGKI10 = false; + isGKI10 = false; if (isKernelARM64) { String output = testInfo.getDevice().executeShellCommand("uname -r"); Pattern p = Pattern.compile("^(\\d+)\\.(\\d+)"); Matcher m1 = p.matcher(output); - assertTrue(m1.find()); + Assert.assertTrue(m1.find()); isGKI10 = (Integer.parseInt(m1.group(1)) == 5 && Integer.parseInt(m1.group(2)) == 4); } - - // Gets the code name via adb first. The following test cases might - // assert different values based on if the build is a final release build - // or not, where the value of the code name will be "REL" in this case. - String codeName = testInfo.getDevice().getProperty(DeviceProperties.BUILD_CODENAME); - assertNotNull(codeName); - codeName = codeName.trim(); - - // Saves the local variables to static variables for later use, because adb - // is not available in the following tests. - sDeviceIsGKI10.put(testInfo.getDevice(), isGKI10); - sDeviceCodeName.put(testInfo.getDevice(), codeName); - - // Transfers from adb to fastbootd. - if (!isGKI10) { - testInfo.getDevice().rebootIntoFastbootd(); - } } @Before public void setUp() throws Exception { - Assume.assumeFalse("Skipping test for fastbootd on GKI 1.0", - sDeviceIsGKI10.get(getTestInformation().getDevice())); + Assume.assumeFalse("Skipping test for fastbootd on GKI 1.0", isGKI10); + + mDevice = getDevice(); + + // Make sure the device is in fastbootd mode. + if (!TestDeviceState.FASTBOOT.equals(mDevice.getDeviceState())) { + mDevice.rebootIntoFastbootd(); + } } @AfterClassWithInfo public static void tearDownClass(TestInformation testInfo) throws Exception { - if (!sDeviceIsGKI10.get(testInfo.getDevice())) { - testInfo.getDevice().reboot(); // reboot from fastbootd to adb. - } - sDeviceIsGKI10.remove(testInfo.getDevice()); - sDeviceCodeName.remove(testInfo.getDevice()); + testInfo.getDevice().reboot(); } /* Devices launching in R and after must export cpu-abi. */ @@ -115,7 +88,7 @@ public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { public void testCpuAbiInfo() throws Exception { final HashSet<String> allCpuAbis = new HashSet<String>( Arrays.asList("armeabi-v7a", "arm64-v8a", "mips", "mips64", "x86", "x86_64")); - String cpuAbi = getTestInformation().getDevice().getFastbootVariable("cpu-abi"); + String cpuAbi = mDevice.getFastbootVariable("cpu-abi"); CLog.d("cpuAbi: '%s'", cpuAbi); assertTrue(allCpuAbis.contains(cpuAbi)); } @@ -123,41 +96,37 @@ public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { /* Devices launching in R and after must export version-os. */ @Test public void testOsVersion() throws Exception { - String osVersion = getTestInformation().getDevice().getFastbootVariable("version-os"); + String osVersion = mDevice.getFastbootVariable("version-os"); CLog.d("os version: '%s'", osVersion); - // The value of osVersion is derived from "ro.build.version.release", - // which is a user-visible version string. The value does not have - // has any particular structure. See https://r.android.com/657597 for - // details. - assertNotNull(osVersion); + // The value of osVersion might be a letter on pre-release builds, e.g., R, + // or is a number representing the Android release version, e.g., 11. + try { + int intOsVersion = Integer.parseInt(osVersion); + assertTrue(intOsVersion >= ANDROID_RELEASE_VERSION_R); + } catch (NumberFormatException nfe) { + assertTrue(osVersion.matches("[A-Z]+")); + } } /* Devices launching in R and after must export version-vndk. */ @Test public void testVndkVersion() throws Exception { - String vndkVersion = getTestInformation().getDevice().getFastbootVariable("version-vndk"); - String codeName = sDeviceCodeName.get(getTestInformation().getDevice()); - CLog.d("vndk version: '%s', code name: '%s'", vndkVersion, codeName); - // The value of vndkVersion might be a letter or a string on pre-release builds, - // e.g., R or Tiramisu. - // And it is a number representing the API level on final release builds, e.g., 30. - if ("REL".equals(codeName)) { - try { - int intVndkVersion = Integer.parseInt(vndkVersion); - assertTrue(intVndkVersion >= PLATFORM_API_LEVEL_R); - } catch (NumberFormatException nfe) { - fail("ro.vndk.version should be a number. But the current value is " + vndkVersion); - } - } else { - assertNotNull(vndkVersion); + String vndkVersion = mDevice.getFastbootVariable("version-vndk"); + CLog.d("vndk version: '%s'", vndkVersion); + // The value of vndkVersion might be a letter on pre-release builds, e.g., R, + // or is a number representing the API level on final release builds, e.g., 30. + try { + int intVndkVersion = Integer.parseInt(vndkVersion); + assertTrue(intVndkVersion >= PLATFORM_API_LEVEL_R); + } catch (NumberFormatException nfe) { + assertTrue(vndkVersion.matches("[A-Z]+")); } } /* Devices launching in R and after must export dynamic-partition. */ @Test public void testDynamicPartition() throws Exception { - String dynamic_partition = - getTestInformation().getDevice().getFastbootVariable("dynamic-partition"); + String dynamic_partition = mDevice.getFastbootVariable("dynamic-partition"); CLog.d("dynamic_partition: '%s'", dynamic_partition); assertTrue(dynamic_partition.equals("true")); } @@ -165,8 +134,7 @@ public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { /* Devices launching in R and after must export treble-enabled. */ @Test public void testTrebleEnable() throws Exception { - String treble_enabled = - getTestInformation().getDevice().getFastbootVariable("treble-enabled"); + String treble_enabled = mDevice.getFastbootVariable("treble-enabled"); CLog.d("treble_enabled: '%s'", treble_enabled); assertTrue(treble_enabled.equals("true") || treble_enabled.equals("false")); } @@ -174,8 +142,7 @@ public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { /* Devices launching in R and after must export first-api-level. */ @Test public void testFirstApiLevel() throws Exception { - String first_api_level = - getTestInformation().getDevice().getFastbootVariable("first-api-level"); + String first_api_level = mDevice.getFastbootVariable("first-api-level"); CLog.d("first_api_level: '%s'", first_api_level); try { int api_level = Integer.parseInt(first_api_level); @@ -188,7 +155,7 @@ public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { /* Devices launching in R and after must export security-patch-level. */ @Test public void testSecurityPatchLevel() throws Exception { - String SPL = getTestInformation().getDevice().getFastbootVariable("security-patch-level"); + String SPL = mDevice.getFastbootVariable("security-patch-level"); CLog.d("SPL: '%s'", SPL); try { SimpleDateFormat template = new SimpleDateFormat("yyyy-MM-dd"); @@ -201,8 +168,7 @@ public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { /* Devices launching in R and after must export system-fingerprint. */ @Test public void testSystemFingerprint() throws Exception { - String systemFingerprint = - getTestInformation().getDevice().getFastbootVariable("system-fingerprint"); + String systemFingerprint = mDevice.getFastbootVariable("system-fingerprint"); CLog.d("system fingerprint: '%s'", systemFingerprint); verifyFingerprint(systemFingerprint); } @@ -210,8 +176,7 @@ public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { /* Devices launching in R and after must export vendor-fingerprint. */ @Test public void testVendorFingerprint() throws Exception { - String vendorFingerprint = - getTestInformation().getDevice().getFastbootVariable("vendor-fingerprint"); + String vendorFingerprint = mDevice.getFastbootVariable("vendor-fingerprint"); CLog.d("vendor fingerprint: '%s'", vendorFingerprint); verifyFingerprint(vendorFingerprint); } @@ -240,6 +205,15 @@ public class FastbootGetvarUserspaceTest extends BaseHostJUnit4Test { assertEquals(2, devicePlatform.length); assertTrue(devicePlatform[0].matches("^[a-zA-Z0-9_-]+$")); // DEVICE + // Platform version is a letter on pre-release builds, e.g., R, or + // is a number on final release # builds, e.g., 11. + try { + int releaseVersion = Integer.parseInt(devicePlatform[1]); // VERSION.RELEASE + assertTrue(releaseVersion >= ANDROID_RELEASE_VERSION_R); + } catch (NumberFormatException nfe) { + assertTrue(devicePlatform[1].matches("[A-Z]+")); + } + assertTrue(fingerprintSegs[3].matches("^[a-zA-Z0-9._-]+$")); // ID String[] buildNumberVariant = fingerprintSegs[4].split(":"); diff --git a/testcases/host/fastboot_test/AndroidTest.xml b/testcases/host/fastboot_test/AndroidTest.xml index a6000bbed..41b07f24a 100644 --- a/testcases/host/fastboot_test/AndroidTest.xml +++ b/testcases/host/fastboot_test/AndroidTest.xml @@ -18,7 +18,7 @@ <option name="test-suite-tag" value="apct-junit" /> <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController"> - <option name="vsr-min-api-level" value="31" /> + <option name="min-api-level" value="29" /> <!-- TODO(b/146645516): remove this config after the bug is fixed. --> <option name="logcat-on-failure" value="false" /> </object> diff --git a/testcases/host/fastboot_test/OWNERS b/testcases/host/fastboot_test/OWNERS deleted file mode 100644 index d82cb64eb..000000000 --- a/testcases/host/fastboot_test/OWNERS +++ /dev/null @@ -1,4 +0,0 @@ -# Bug component: 30545 -dvander@google.com -elsk@google.com -smuckle@google.com diff --git a/testcases/host/fastboot_test/src/com/android/tests/FastbootVerifyUserspaceTest.java b/testcases/host/fastboot_test/src/com/android/tests/FastbootVerifyUserspaceTest.java index ce6415e35..b1e276d56 100644 --- a/testcases/host/fastboot_test/src/com/android/tests/FastbootVerifyUserspaceTest.java +++ b/testcases/host/fastboot_test/src/com/android/tests/FastbootVerifyUserspaceTest.java @@ -16,9 +16,7 @@ package com.android.tests.fastboot; -import android.platform.test.annotations.RequiresDevice; import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper; -import com.android.tradefed.device.IManagedTestDevice; import com.android.tradefed.device.ITestDevice; import com.android.tradefed.device.TestDeviceState; import com.android.tradefed.invoker.TestInformation; @@ -35,7 +33,6 @@ import java.io.File; import java.lang.Thread; import java.util.Arrays; import java.util.HashSet; -import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Assert; @@ -47,30 +44,24 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; /* VTS test to verify userspace fastboot implementation. */ -@RequiresDevice @RunWith(DeviceJUnit4ClassRunner.class) public class FastbootVerifyUserspaceTest extends BaseHostJUnit4Test { - // Default maximum command run time is set to 90 seconds. - private static final long MAX_CMD_RUN_TIME = 90000L; - private static String executeShellKernelARM64 = - "cat /proc/config.gz | gzip -d | grep CONFIG_ARM64=y"; + // Default maximum command run time is set to 1 minute. + private static final long MAX_CMD_RUN_TIME = 60000L; + private ITestDevice mDevice; private IRunUtil mRunUtil = RunUtil.getDefault(); private String mFuzzyFastbootPath; - - // IMPORTANT: Multiple instances of this class will be created while sharding - // the tests across multiple devices. So it needs to use ConcurrentHashMap to - // make these static variables thread-safe. - private static ConcurrentHashMap<ITestDevice, Boolean> sDeviceIsGKI10 = - new ConcurrentHashMap<>(); + private static String executeShellKernelARM64 = + "cat /proc/config.gz | gzip -d | grep CONFIG_ARM64=y"; + private static boolean isGKI10; @BeforeClassWithInfo public static void setUpClass(TestInformation testInfo) throws Exception { - // Collects information while adb is available, prior to rebooting into fastbootd. boolean isKernelARM64 = testInfo.getDevice() .executeShellCommand(executeShellKernelARM64) .contains("CONFIG_ARM64"); - boolean isGKI10 = false; + isGKI10 = false; if (isKernelARM64) { String output = testInfo.getDevice().executeShellCommand("uname -r"); Pattern p = Pattern.compile("^(\\d+)\\.(\\d+)"); @@ -78,42 +69,29 @@ public class FastbootVerifyUserspaceTest extends BaseHostJUnit4Test { Assert.assertTrue(m1.find()); isGKI10 = (Integer.parseInt(m1.group(1)) == 5 && Integer.parseInt(m1.group(2)) == 4); } - - // Saves the local variable to the static variable for later use, because adb - // is not available in the following tests. - sDeviceIsGKI10.put(testInfo.getDevice(), isGKI10); - - // Transfers from adb to fastbootd. - if (!isGKI10) { - testInfo.getDevice().rebootIntoFastbootd(); - } } @Before public void setUp() throws Exception { - Assume.assumeFalse("Skipping test for fastbootd on GKI 1.0", - sDeviceIsGKI10.get(getTestInformation().getDevice())); + Assume.assumeFalse("Skipping test for fastbootd on GKI 1.0", isGKI10); + + mDevice = getDevice(); CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild()); File file = buildHelper.getTestFile("fuzzy_fastboot", getAbi()); Assert.assertNotNull(file); mFuzzyFastbootPath = file.getAbsolutePath(); CLog.d("Locate `fuzzy_fastboot` at %s", mFuzzyFastbootPath); + + // Make sure the device is in fastbootd mode. + if (!TestDeviceState.FASTBOOT.equals(mDevice.getDeviceState())) { + mDevice.rebootIntoFastbootd(); + } } @AfterClassWithInfo public static void tearDownClass(TestInformation testInfo) throws Exception { - if (!sDeviceIsGKI10.get(testInfo.getDevice())) { - // Make sure the device state still is FASTBOOTD after the test class have - // been executed, because fastboot commands in the tests will disrupt - // device state - if (!TestDeviceState.FASTBOOTD.equals(testInfo.getDevice().getDeviceState())) { - ((IManagedTestDevice) testInfo.getDevice()) - .setDeviceState(TestDeviceState.FASTBOOTD); - } - testInfo.getDevice().reboot(); // reboot from fastbootd to adb. - } - sDeviceIsGKI10.remove(testInfo.getDevice()); + testInfo.getDevice().reboot(); } /* Runs fuzzy_fastboot gtest to verify slot operations in fastbootd implementation. */ @@ -121,8 +99,7 @@ public class FastbootVerifyUserspaceTest extends BaseHostJUnit4Test { @Test public void testFastbootdSlotOperations() throws Exception { CommandResult result = mRunUtil.runTimedCmd(MAX_CMD_RUN_TIME, mFuzzyFastbootPath, - String.format( - "--serial=%s", getTestInformation().getDevice().getFastbootSerialNumber()), + String.format("--serial=%s", mDevice.getFastbootSerialNumber()), "--gtest_filter=Conformance.Slots:Conformance.SetActive"); Assert.assertEquals(CommandStatus.SUCCESS, result.getStatus()); } @@ -131,8 +108,7 @@ public class FastbootVerifyUserspaceTest extends BaseHostJUnit4Test { @Test public void testLogicalPartitionCommands() throws Exception { CommandResult result = mRunUtil.runTimedCmd(MAX_CMD_RUN_TIME, mFuzzyFastbootPath, - String.format( - "--serial=%s", getTestInformation().getDevice().getFastbootSerialNumber()), + String.format("--serial=%s", mDevice.getFastbootSerialNumber()), "--gtest_filter=LogicalPartitionCompliance.GetVarIsLogical:LogicalPartitionCompliance.SuperPartition"); Assert.assertEquals(CommandStatus.SUCCESS, result.getStatus()); } @@ -140,8 +116,7 @@ public class FastbootVerifyUserspaceTest extends BaseHostJUnit4Test { /* Devices launching with DAP must have a super partition named "super". */ @Test public void testSuperPartitionName() throws Exception { - String superPartitionName = - getTestInformation().getDevice().getFastbootVariable("super-partition-name"); + String superPartitionName = mDevice.getFastbootVariable("super-partition-name"); Assert.assertEquals("super", superPartitionName); } @@ -149,8 +124,7 @@ public class FastbootVerifyUserspaceTest extends BaseHostJUnit4Test { @Test public void testFastbootReboot() throws Exception { CommandResult result = mRunUtil.runTimedCmd(MAX_CMD_RUN_TIME, mFuzzyFastbootPath, - String.format( - "--serial=%s", getTestInformation().getDevice().getFastbootSerialNumber()), + String.format("--serial=%s", mDevice.getFastbootSerialNumber()), "--gtest_filter=LogicalPartitionCompliance.FastbootRebootTest"); Assert.assertEquals(CommandStatus.SUCCESS, result.getStatus()); } @@ -159,8 +133,7 @@ public class FastbootVerifyUserspaceTest extends BaseHostJUnit4Test { @Test public void testLogicalPartitionFlashing() throws Exception { CommandResult result = mRunUtil.runTimedCmd(MAX_CMD_RUN_TIME, mFuzzyFastbootPath, - String.format( - "--serial=%s", getTestInformation().getDevice().getFastbootSerialNumber()), + String.format("--serial=%s", mDevice.getFastbootSerialNumber()), "--gtest_filter=LogicalPartitionCompliance.CreateResizeDeleteLP"); Assert.assertEquals(CommandStatus.SUCCESS, result.getStatus()); } diff --git a/testcases/host/firmware_dtbo_test/OWNERS b/testcases/host/firmware_dtbo_test/OWNERS deleted file mode 100644 index 57b1211e6..000000000 --- a/testcases/host/firmware_dtbo_test/OWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# Bug component: 30545 -smuckle@google.com diff --git a/testcases/host/firmware_test/OWNERS b/testcases/host/firmware_test/OWNERS deleted file mode 100644 index 6c6bae881..000000000 --- a/testcases/host/firmware_test/OWNERS +++ /dev/null @@ -1,3 +0,0 @@ -# Bug component: 30545 -smuckle@google.com -yochiang@google.com diff --git a/testcases/host/firmware_test/src/com/android/tests/firmware/FirmwareBootHeaderVerification.java b/testcases/host/firmware_test/src/com/android/tests/firmware/FirmwareBootHeaderVerification.java index dc6737d01..11ec4fcee 100644 --- a/testcases/host/firmware_test/src/com/android/tests/firmware/FirmwareBootHeaderVerification.java +++ b/testcases/host/firmware_test/src/com/android/tests/firmware/FirmwareBootHeaderVerification.java @@ -30,8 +30,6 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.util.zip.GZIPInputStream; import org.junit.AfterClass; import org.junit.Assert; @@ -78,7 +76,7 @@ public class FirmwareBootHeaderVerification extends BaseHostJUnit4Test { } private boolean isFullfeelPrecondition() throws DeviceNotAvailableException { - if (mSupportedAbis.contains("x86") || mSupportedAbis.contains("x86_64")) { + if (mSupportedAbis.contains("x86")) { mBlockDevPath = "/dev/block"; String acpio_idx_string = mDevice.getProperty(PROPERTY_ACPIO_IDX); if (Strings.isNullOrEmpty(acpio_idx_string)) { @@ -88,18 +86,7 @@ public class FirmwareBootHeaderVerification extends BaseHostJUnit4Test { return true; } - private boolean isKernelVersionLessThan(int major, int minor) - throws DeviceNotAvailableException { - String output = mDevice.executeShellCommand("uname -r"); - Pattern p = Pattern.compile("^(\\d+)\\.(\\d+)"); - Matcher m1 = p.matcher(output); - Assert.assertTrue("Unable to parse kernel release version: %s".format(output), m1.find()); - return Integer.parseInt(m1.group(1)) < major - || (Integer.parseInt(m1.group(1)) == major - && Integer.parseInt(m1.group(2)) < minor); - } - - private void CheckImageHeader(String imagePath, boolean isRecovery) throws Exception { + private void CheckImageHeader(String imagePath, boolean isRecovery) throws IOException { BootImageInfo bootImgInfo = new BootImageInfo(imagePath); // Check kernel size. Assert.assertNotEquals( @@ -108,12 +95,9 @@ public class FirmwareBootHeaderVerification extends BaseHostJUnit4Test { // Check image version. Assert.assertTrue("Device must at least have a boot image of version 2", (bootImgInfo.getImgHeaderVer() >= 2)); - // Check ramdisk size for kernels < 5.10. Kernels with versions >= 5.10 - // are verified by vts_generic_boot_image_test - if (isKernelVersionLessThan(5, 10)) { - Assert.assertNotEquals( - "boot.img must contain ramdisk", bootImgInfo.getRamdiskSize(), 0); - } + // Check ramdisk size. + Assert.assertNotEquals( + "boot.img must contain ramdisk", bootImgInfo.getRamdiskSize(), 0); } else { Assert.assertTrue("Device must at least have a boot image of version 1", (bootImgInfo.getImgHeaderVer() >= 1)); diff --git a/testcases/host/kernel_proc_file_api_test/OWNERS b/testcases/host/kernel_proc_file_api_test/OWNERS deleted file mode 100644 index 57b1211e6..000000000 --- a/testcases/host/kernel_proc_file_api_test/OWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# Bug component: 30545 -smuckle@google.com diff --git a/testcases/host/kernel_proc_file_api_test/proc_tests/ProcAsoundTests.py b/testcases/host/kernel_proc_file_api_test/proc_tests/ProcAsoundTests.py index 7731d2bc7..b32187ab4 100644 --- a/testcases/host/kernel_proc_file_api_test/proc_tests/ProcAsoundTests.py +++ b/testcases/host/kernel_proc_file_api_test/proc_tests/ProcAsoundTests.py @@ -25,7 +25,6 @@ class ProcAsoundCardsTest(KernelProcFileTestBase.KernelProcFileTestBase): t_LBRACKET = literal_token(r'\[') t_RBRACKET = literal_token(r'\]') - t_SLASH = literal_token(r'\/') t_NO = literal_token(r'no') t_SOUNDCARDS = literal_token(r'soundcards') @@ -58,7 +57,6 @@ class ProcAsoundCardsTest(KernelProcFileTestBase.KernelProcFileTestBase): | FLOAT | DASH | COLON - | SLASH | HEX_LITERAL''' p[0] = p[1] diff --git a/testcases/host/kernel_proc_file_api_test/proc_tests/ProcMemInfoTest.py b/testcases/host/kernel_proc_file_api_test/proc_tests/ProcMemInfoTest.py index febb4ac0b..935f36b3e 100644 --- a/testcases/host/kernel_proc_file_api_test/proc_tests/ProcMemInfoTest.py +++ b/testcases/host/kernel_proc_file_api_test/proc_tests/ProcMemInfoTest.py @@ -28,7 +28,7 @@ def token_name(text): def token_lu(text): return int(text) -@with_pattern(r'[ ]*(kB)?') +@with_pattern(r'(kB)?') def token_kb(text): return text @@ -79,7 +79,7 @@ class ProcMemInfoTest(KernelProcFileTestBase.KernelProcFileTestBase): lines = contents.split('\n') if lines[-1] != '': raise SyntaxError("missing final newline") - return [self.parse_line("{:name}: {:lu}{:kb}", line, + return [self.parse_line("{:name}: {:lu}{:^kb}", line, dict(name=token_name, lu=token_lu, kb=token_kb)) for line in lines[:-1]] def result_correct(self, parse_result): diff --git a/testcases/host/kernel_proc_file_api_test/proc_tests/ProcSimpleFileTests.py b/testcases/host/kernel_proc_file_api_test/proc_tests/ProcSimpleFileTests.py index fe247d6fc..12016f8bc 100644 --- a/testcases/host/kernel_proc_file_api_test/proc_tests/ProcSimpleFileTests.py +++ b/testcases/host/kernel_proc_file_api_test/proc_tests/ProcSimpleFileTests.py @@ -223,7 +223,7 @@ class ProcSysKernelRandomBootId(KernelProcFileTestBase.KernelProcFileTestBase): '''/proc/sys/kernel/random/boot_id generates a random ID each boot.''' def parse_contents(self, contents): - return self.parse_line("{:uuid}\n", contents, dict(uuid=token_uuid))[0] + return self.parse_line("{:uuid}", contents, dict(uuid=token_uuid))[0] def get_path(self): return "/proc/sys/kernel/random/boot_id" @@ -267,6 +267,24 @@ class ProcSchedChildRunsFirst(KernelProcFileTestBase.KernelProcFileTestBase): return target_file_utils.IsReadWrite +class ProcSchedLatencyNS(KernelProcFileTestBase.KernelProcFileTestBase): + '''/proc/sys/kernel/sched_latency_ns is the maximum latency in nanoseconds a + task may incur prior to being scheduled. + ''' + + def parse_contents(self, contents): + return self.parse_line("{:d}\n", contents)[0] + + def result_correct(self, result): + return result >= 100000 and result <= 1000000000 + + def get_path(self): + return "/proc/sys/kernel/sched_latency_ns" + + def get_permission_checker(self): + return target_file_utils.IsReadWrite + + class ProcSchedRTPeriodUS(KernelProcFileTestBase.KernelProcFileTestBase): '''/proc/sys/kernel/sched_rt_period_us defines the period length used by the system-wide RT execution limit in microseconds. @@ -304,6 +322,45 @@ class ProcSchedRTRuntimeUS(KernelProcFileTestBase.KernelProcFileTestBase): return target_file_utils.IsReadWrite +class ProcSchedTunableScaling(KernelProcFileTestBase.KernelProcFileTestBase): + '''/proc/sys/kernel/sched_tunable_scaling determines whether + sched_latency_ns should be automatically adjusted by the scheduler based on + the number of CPUs. + ''' + + def parse_contents(self, contents): + return self.parse_line("{:d}\n", contents)[0] + + def result_correct(self, result): + return result >= 0 and result <= 2 + + def get_path(self): + return "/proc/sys/kernel/sched_tunable_scaling" + + def get_permission_checker(self): + return target_file_utils.IsReadWrite + + +class ProcSchedWakeupGranularityNS( + KernelProcFileTestBase.KernelProcFileTestBase): + '''/proc/sys/kernel/sched_wakeup_granularity_ns defines how much more + virtual runtime task A must have than task B in nanoseconds in order for + task B to preempt it. + ''' + + def parse_contents(self, contents): + return self.parse_line("{:d}\n", contents)[0] + + def result_correct(self, result): + return result >= 0 and result <= 1000000000 + + def get_path(self): + return "/proc/sys/kernel/sched_wakeup_granularity_ns" + + def get_permission_checker(self): + return target_file_utils.IsReadWrite + + class ProcSysRqTest(KernelProcFileTestBase.KernelProcFileTestBase): '''/proc/sys/kernel/sysrq controls the functions allowed to be invoked via the SysRq key.''' diff --git a/testcases/host/kernel_proc_file_api_test/vts_kernel_proc_file_api_test.py b/testcases/host/kernel_proc_file_api_test/vts_kernel_proc_file_api_test.py index 5cd168633..22960dade 100644 --- a/testcases/host/kernel_proc_file_api_test/vts_kernel_proc_file_api_test.py +++ b/testcases/host/kernel_proc_file_api_test/vts_kernel_proc_file_api_test.py @@ -89,8 +89,11 @@ TEST_OBJECTS = { ProcSimpleFileTests.ProcProtectedSymlinks(), ProcSimpleFileTests.ProcRandomizeVaSpaceTest(), ProcSimpleFileTests.ProcSchedChildRunsFirst(), + ProcSimpleFileTests.ProcSchedLatencyNS(), ProcSimpleFileTests.ProcSchedRTPeriodUS(), ProcSimpleFileTests.ProcSchedRTRuntimeUS(), + ProcSimpleFileTests.ProcSchedTunableScaling(), + ProcSimpleFileTests.ProcSchedWakeupGranularityNS(), ProcShowUidStatTest.ProcShowUidStatTest(), ProcSimpleFileTests.ProcSuidDumpable(), ProcSimpleFileTests.ProcSysKernelRandomBootId(), diff --git a/testcases/host/selinux_test/OWNERS b/testcases/host/selinux_test/OWNERS deleted file mode 100644 index 57b1211e6..000000000 --- a/testcases/host/selinux_test/OWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# Bug component: 30545 -smuckle@google.com diff --git a/testcases/target/hal_lights/Android.bp b/testcases/target/hal_lights/Android.bp new file mode 100644 index 000000000..4d34b0a3c --- /dev/null +++ b/testcases/target/hal_lights/Android.bp @@ -0,0 +1,58 @@ +// +// Copyright (C) 2016 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. +// + +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_test { + name: "VtsHalLightsTestCases", + multilib: { + lib32: { + suffix: "32", + }, + lib64: { + suffix: "64", + }, + }, + + shared_libs: [ + "libdl", + "libhardware", + ], + + whole_static_libs: ["libVtsGtestMain"], + + static_libs: [ + "libbase", + "libtinyxml2", + "liblog", + "libgtest", + ], + + // Tag this module as a vts10 test artifact + test_suites: [ + "vts10", + ], + + cflags: [ + "-Wall", + "-Wextra", + "-Wunused", + "-Werror", + ], + srcs: ["hal_lights_basic_test.cpp"], +} diff --git a/testcases/target/hal_lights/AndroidTest.xml b/testcases/target/hal_lights/AndroidTest.xml new file mode 100644 index 000000000..4523f5884 --- /dev/null +++ b/testcases/target/hal_lights/AndroidTest.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 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. +--> +<configuration description="Config for VTS HAL Lights test cases"> + <option name="config-descriptor:metadata" key="plan" value="vts-misc" /> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher"> + <option name="cleanup" value="true" /> + <option name="push" value="VtsHalLightsTestCases->/data/local/tmp/VtsHalLightsTestCases" /> + <option name="append-bitness" value="true" /> + </target_preparer> + <test class="com.android.tradefed.testtype.GTest" > + <option name="native-test-device-path" value="/data/local/tmp" /> + <option name="module-name" value="VtsHalLightsTestCases" /> + <option name="runtime-hint" value="35s" /> + </test> +</configuration> diff --git a/testcases/target/hal_lights/hal_lights_basic_test.cpp b/testcases/target/hal_lights/hal_lights_basic_test.cpp new file mode 100644 index 000000000..100689f4c --- /dev/null +++ b/testcases/target/hal_lights/hal_lights_basic_test.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2016 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. + */ + +#include <gtest/gtest.h> + +#include <stdio.h> +#include <stdlib.h> + +#include <hardware/hardware.h> +#include <hardware/lights.h> + +#include <iostream> + +using namespace std; + +namespace { + +// VTS structural testcase for HAL Lights basic functionalities. +class VtsStructuralTestHalLightsBasicTest : public ::testing::Test { + protected: + VtsStructuralTestHalLightsBasicTest() { + int rc = hw_get_module_by_class(LIGHTS_HARDWARE_MODULE_ID, NULL, &module_); + if (rc || !module_) { + cerr << "could not find any lights HAL module." << endl; + module_ = NULL; + return; + } + + rc = module_->methods->open( + module_, LIGHT_ID_NOTIFICATIONS, + reinterpret_cast<struct hw_device_t**>(&device_)); + if (rc || !device_) { + cerr << "could not open a lights HAL device." << endl; + module_ = NULL; + return; + } + } + + virtual ~VtsStructuralTestHalLightsBasicTest() {} + + virtual void SetUp() { + // define operations to execute before running each testcase. + } + + virtual void TearDown() { + // define operations to execute after running each testcase. + } + + // a light device which is open. + struct light_device_t* device_; + + private: + const struct hw_module_t* module_; +}; + +TEST_F(VtsStructuralTestHalLightsBasicTest, example) { + ASSERT_TRUE(device_); + struct light_state_t* arg = + (struct light_state_t*)malloc(sizeof(struct light_state_t)); + arg->color = 0x80ff8000; + arg->flashMode = LIGHT_FLASH_NONE; + arg->flashOnMS = 0; + arg->flashOffMS = 0; + arg->brightnessMode = BRIGHTNESS_MODE_USER; + EXPECT_EQ(0, device_->set_light(device_, arg)); +} + +} // namespace diff --git a/testcases/target/hal_power/Android.bp b/testcases/target/hal_power/Android.bp new file mode 100644 index 000000000..02dd16e4d --- /dev/null +++ b/testcases/target/hal_power/Android.bp @@ -0,0 +1,59 @@ +// +// Copyright (C) 2016 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. +// + +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_test { + name: "VtsHalPowerTestCases", + multilib: { + lib32: { + suffix: "32", + }, + lib64: { + suffix: "64", + }, + }, + + shared_libs: [ + "libdl", + "libhardware", + ], + + whole_static_libs: ["libVtsGtestMain"], + + static_libs: [ + "libbase", + "libtinyxml2", + "liblog", + "libgtest", + ], + + // Tag this module as a vts10 test artifact + test_suites: [ + "vts10", + ], + + srcs: ["hal_power_basic_test.cpp"], + + cflags: [ + "-Wall", + "-Wextra", + "-Wunused", + "-Werror", + ], +} diff --git a/testcases/target/hal_power/AndroidTest.xml b/testcases/target/hal_power/AndroidTest.xml new file mode 100644 index 000000000..8b31176ad --- /dev/null +++ b/testcases/target/hal_power/AndroidTest.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2016 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. +--> +<configuration description="Config for VTS HAL Power test cases"> + <option name="config-descriptor:metadata" key="plan" value="vts-misc" /> + <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher"> + <option name="cleanup" value="true" /> + <option name="push" value="VtsHalPowerTestCases->/data/local/tmp/VtsHalPowerTestCases" /> + <option name="append-bitness" value="true" /> + </target_preparer> + <test class="com.android.tradefed.testtype.GTest" > + <option name="native-test-device-path" value="/data/local/tmp" /> + <option name="module-name" value="VtsHalPowerTestCases" /> + <option name="runtime-hint" value="180s" /> + </test> +</configuration> diff --git a/testcases/target/hal_power/hal_power_basic_test.cpp b/testcases/target/hal_power/hal_power_basic_test.cpp new file mode 100644 index 000000000..c6eaeac45 --- /dev/null +++ b/testcases/target/hal_power/hal_power_basic_test.cpp @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2016 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. + */ + +#include <gtest/gtest.h> + +#include <stdio.h> + +#include <hardware/hardware.h> +#include <hardware/power.h> +#include <log/log.h> + +#include <iostream> + +using namespace std; + +namespace { + +// VTS structural testcase for HAL Power basic functionalities. +class VtsStructuralTestHalPowerTest : public ::testing::Test { + protected: + VtsStructuralTestHalPowerTest() { + int rc = + hw_get_module(POWER_HARDWARE_MODULE_ID, (hw_module_t const **)&module_); + if (rc || !module_) { + cerr << "could not find any power HAL module." << endl; + module_ = NULL; + return; + } + if (module_->init) module_->init(module_); + } + + virtual ~VtsStructuralTestHalPowerTest() {} + + virtual void SetUp() { + // define operations to execute before running each testcase. + ASSERT_TRUE(module_->get_number_of_platform_modes) + << "get_number_of_platform_modes is NULL"; + ASSERT_TRUE(module_->get_voter_list) << "get_voter_list is NULL"; + ASSERT_TRUE(module_->get_number_of_platform_modes) + << "get_number_of_platform_modes is NULL"; + num_modes_ = module_->get_number_of_platform_modes(module_); + ASSERT_GT(num_modes_, 0) << "num_modes_ should be at least 1"; + } + + virtual void TearDown() { + // define operations to execute after running each testcase. + } + + struct power_module *module_; + + int num_modes_; +}; + +// get_number_of_platform_modes should always return the same value +// irrespective of how many times invoked. +TEST_F(VtsStructuralTestHalPowerTest, + get_number_of_platform_modes_returns_same_value) { + // NOTE: We can repeat this for few more times in a loop if the test can + // run longer. + sleep(1); + int rc2 = module_->get_number_of_platform_modes(module_); + EXPECT_EQ(num_modes_, rc2) + << "get_number_of_platform_modes returned unequal values"; +} + +// Check if residency duration and count decreases between successive +// invocations. +TEST_F(VtsStructuralTestHalPowerTest, check_if_the_values_decrease) { + power_state_platform_sleep_state_t *list1 = + (power_state_platform_sleep_state_t *)calloc( + num_modes_, sizeof(power_state_platform_sleep_state_t)); + ASSERT_TRUE(list1) << "power_state_platform_sleep_state_t* alloc failed"; + + power_state_platform_sleep_state_t *list2 = + (power_state_platform_sleep_state_t *)calloc( + num_modes_, sizeof(power_state_platform_sleep_state_t)); + ASSERT_TRUE(list2) << "power_state_platform_sleep_state_t* alloc failed"; + + size_t *voter_list = (size_t *)calloc(num_modes_, sizeof(*voter_list)); + ASSERT_TRUE(voter_list) << "voter_list* alloc failed"; + + module_->get_voter_list(module_, voter_list); + + for (int i = 0; i < num_modes_; i++) { + list1[i].voters = (power_state_voter_t *)calloc( + voter_list[i], sizeof(power_state_voter_t)); + ASSERT_TRUE(list1[i].voters) << "voter_t allocation failed"; + + list2[i].voters = (power_state_voter_t *)calloc( + voter_list[i], sizeof(power_state_voter_t)); + + ASSERT_TRUE(list2[i].voters) << "voter_t allocation failed"; + } + + ASSERT_EQ(0, module_->get_platform_low_power_stats(module_, list1)) + << "get_platform_low_power_stats failed"; + sleep(2); + ASSERT_EQ(0, module_->get_platform_low_power_stats(module_, list2)) + << "get_platform_low_power_stats failed"; + + for (int i = 0; i < num_modes_; i++) { + EXPECT_LE(list1[i].residency_in_msec_since_boot, + list2[i].residency_in_msec_since_boot) + << "residency_in_msec_since_boot decreased"; + EXPECT_LE(list1[i].total_transitions, list2[i].total_transitions) + << "total_transitions decreased"; + + for (unsigned int j = 0; j < list1[i].number_of_voters; j++) { + EXPECT_LE(list1[i].voters[j].total_time_in_msec_voted_for_since_boot, + list2[i].voters[j].total_time_in_msec_voted_for_since_boot) + << "total_time_in_msec_voted_for_since_boot decreased"; + EXPECT_LE(list1[i].voters[j].total_number_of_times_voted_since_boot, + list2[i].voters[j].total_number_of_times_voted_since_boot) + << "total_number_of_times_voted_since_boot decreased"; + } + } + for (int i = 0; i < num_modes_; i++) { + free(list1[i].voters); + free(list2[i].voters); + } + free(list1); + free(list2); + free(voter_list); +} + +// Check if get_platform_low_power_stats succeeds. +TEST_F(VtsStructuralTestHalPowerTest, + check_if_get_platform_low_power_stats_returns_success) { + power_state_platform_sleep_state_t *list1 = + (power_state_platform_sleep_state_t *)calloc( + num_modes_, sizeof(power_state_platform_sleep_state_t)); + ASSERT_TRUE(list1) << "power_state_platform_sleep_state_t* alloc failed"; + + size_t *voter_list = (size_t *)calloc(num_modes_, sizeof(*voter_list)); + ASSERT_TRUE(voter_list) << "voter_t allocation failed"; + + module_->get_voter_list(module_, voter_list); + for (int i = 0; i < num_modes_; i++) { + list1[i].voters = (power_state_voter_t *)calloc( + voter_list[i], sizeof(power_state_voter_t)); + ASSERT_TRUE(list1[i].voters) << "voter_t allocation failed"; + } + EXPECT_EQ(0, module_->get_platform_low_power_stats(module_, list1)) + << "get_platform_low_power_stats failed"; + for (int i = 0; i < num_modes_; i++) { + free(list1[i].voters); + } + free(list1); + free(voter_list); +} +} // namespace diff --git a/testcases/template/mobly/__init__.py b/testcases/template/mobly/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/testcases/template/mobly/__init__.py diff --git a/testcases/template/mobly/mobly_test.py b/testcases/template/mobly/mobly_test.py new file mode 100644 index 000000000..aabcbab15 --- /dev/null +++ b/testcases/template/mobly/mobly_test.py @@ -0,0 +1,285 @@ +# +# Copyright (C) 2017 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. +# + +import importlib +import json +import logging +import os +import sys +import time +import yaml + +from vts.runners.host import asserts +from vts.runners.host import base_test +from vts.runners.host import config_parser +from vts.runners.host import keys +from vts.runners.host import records +from vts.runners.host import test_runner +from vts.utils.python.io import capture_printout +from vts.utils.python.io import file_util + +from mobly import test_runner as mobly_test_runner + + +LIST_TEST_OUTPUT_START = '==========> ' +LIST_TEST_OUTPUT_END = ' <==========' +# Temp directory inside python log path. The name is required to be +# the set value for tradefed to skip reading contents as logs. +TEMP_DIR_NAME = 'temp' +CONFIG_FILE_NAME = 'test_config.yaml' +MOBLY_RESULT_JSON_FILE_NAME = 'test_run_summary.json' +MOBLY_RESULT_YAML_FILE_NAME = 'test_summary.yaml' + + +MOBLY_CONFIG_TEXT = '''TestBeds: + - Name: {module_name} + Controllers: + AndroidDevice: + - serial: {serial1} + - serial: {serial2} + +MoblyParams: + LogPath: {log_path} +''' + +#TODO(yuexima): +# 1. make DEVICES_REQUIRED configurable +# 2. add include filter function +DEVICES_REQUIRED = 2 + +RESULT_KEY_TYPE = 'Type' +RESULT_TYPE_SUMMARY = 'Summary' +RESULT_TYPE_RECORD = 'Record' +RESULT_TYPE_TEST_NAME_LIST = 'TestNameList' +RESULT_TYPE_CONTROLLER_INFO = 'ControllerInfo' + + +class MoblyTest(base_test.BaseTestClass): + '''Template class for running mobly test cases. + + Attributes: + mobly_dir: string, mobly test temp directory for mobly runner + mobly_config_file_path: string, mobly test config file path + result_handlers: dict, map of result type and handler functions + ''' + def setUpClass(self): + asserts.assertEqual( + len(self.android_devices), DEVICES_REQUIRED, + 'Exactly %s devices are required for this test.' % DEVICES_REQUIRED + ) + + for ad in self.android_devices: + logging.debug('Android device serial: %s' % ad.serial) + + logging.debug('Test cases: %s' % self.ListTestCases()) + + self.mobly_dir = os.path.join(logging.log_path, TEMP_DIR_NAME, + 'mobly', str(time.time())) + + file_util.Makedirs(self.mobly_dir) + + logging.debug('mobly log path: %s' % self.mobly_dir) + + self.result_handlers = { + RESULT_TYPE_SUMMARY: self.HandleSimplePrint, + RESULT_TYPE_RECORD: self.HandleRecord, + RESULT_TYPE_TEST_NAME_LIST: self.HandleSimplePrint, + RESULT_TYPE_CONTROLLER_INFO: self.HandleSimplePrint, + } + + def tearDownClass(self): + ''' Clear the mobly directory.''' + file_util.Rmdirs(self.mobly_dir, ignore_errors=True) + + def PrepareConfigFile(self): + '''Prepare mobly config file for running test.''' + self.mobly_config_file_path = os.path.join(self.mobly_dir, + CONFIG_FILE_NAME) + config_text = MOBLY_CONFIG_TEXT.format( + module_name=self.test_module_name, + serial1=self.android_devices[0].serial, + serial2=self.android_devices[1].serial, + log_path=self.mobly_dir + ) + with open(self.mobly_config_file_path, 'w') as f: + f.write(config_text) + + def ListTestCases(self): + '''List test cases. + + Returns: + List of string, test names. + ''' + classes = mobly_test_runner._find_test_class() + + with capture_printout.CaptureStdout() as output: + mobly_test_runner._print_test_names(classes) + + test_names = [] + + for line in output: + if (not line.startswith(LIST_TEST_OUTPUT_START) + and line.endswith(LIST_TEST_OUTPUT_END)): + test_names.append(line) + tr_record = records.TestResultRecord(line, self.test_module_name) + self.results.requested.append(tr_record) + + return test_names + + def RunMoblyModule(self): + '''Execute mobly test module.''' + # Because mobly and vts uses a similar runner, both will modify + # log_path from python logging. The following step is to preserve + # log path after mobly test finishes. + + # An alternative way is to start a new python process through shell + # command. In that case, test print out needs to be piped. + # This will also help avoid log overlapping + + logger = logging.getLogger() + logger_path = logger.log_path + logging_path = logging.log_path + + try: + mobly_test_runner.main(argv=['-c', self.mobly_config_file_path]) + finally: + logger.log_path = logger_path + logging.log_path = logging_path + + def GetMoblyResults(self): + '''Get mobly module run results and put in vts results.''' + file_handlers = ( + (MOBLY_RESULT_YAML_FILE_NAME, self.ParseYamlResults), + (MOBLY_RESULT_JSON_FILE_NAME, self.ParseJsonResults), + ) + + for pair in file_handlers: + file_path = file_util.FindFile(self.mobly_dir, pair[0]) + + if file_path: + logging.debug('Mobly test yaml result path: %s', file_path) + pair[1](file_path) + return + + asserts.fail('Mobly test result file not found.') + + def generateAllTests(self): + '''Run the mobly test module and parse results.''' + #TODO(yuexima): report test names + + self.PrepareConfigFile() + self.RunMoblyModule() + #TODO(yuexima): check whether DEBUG logs from mobly run are included + self.GetMoblyResults() + + def ParseJsonResults(self, result_path): + '''Parse mobly test json result. + + Args: + result_path: string, result json file path. + ''' + with open(path, 'r') as f: + mobly_summary = json.load(f) + + mobly_results = mobly_summary['Results'] + for result in mobly_results: + logging.debug('Adding result for %s' % result[records.TestResultEnums.RECORD_NAME]) + record = records.TestResultRecord(result[records.TestResultEnums.RECORD_NAME]) + record.test_class = result[records.TestResultEnums.RECORD_CLASS] + record.begin_time = result[records.TestResultEnums.RECORD_BEGIN_TIME] + record.end_time = result[records.TestResultEnums.RECORD_END_TIME] + record.result = result[records.TestResultEnums.RECORD_RESULT] + record.uid = result[records.TestResultEnums.RECORD_UID] + record.extras = result[records.TestResultEnums.RECORD_EXTRAS] + record.details = result[records.TestResultEnums.RECORD_DETAILS] + record.extra_errors = result[records.TestResultEnums.RECORD_EXTRA_ERRORS] + + self.results.addRecord(record) + + def ParseYamlResults(self, result_path): + '''Parse mobly test yaml result. + + Args: + result_path: string, result yaml file path. + ''' + with open(result_path, 'r') as stream: + try: + docs = yaml.load_all(stream) + for doc in docs: + type = doc.get(RESULT_KEY_TYPE) + if type is None: + logging.warn( + 'Mobly result document type unrecognized: %s', doc) + continue + + logging.debug('Parsing result type: %s', type) + + handler = self.result_handlers.get(type) + if handler is None: + logging.debug('Unknown result type: %s', type) + handler = self.HandleSimplePrint + + handler(doc) + except yaml.YAMLError as exc: + print(exc) + + def HandleRecord(self, doc): + '''Handle record result document type. + + Args: + doc: dict, result document item + ''' + logging.debug('Adding result for %s' % doc.get(records.TestResultEnums.RECORD_NAME)) + record = records.TestResultRecord(doc.get(records.TestResultEnums.RECORD_NAME)) + record.test_class = doc.get(records.TestResultEnums.RECORD_CLASS) + record.begin_time = doc.get(records.TestResultEnums.RECORD_BEGIN_TIME) + record.end_time = doc.get(records.TestResultEnums.RECORD_END_TIME) + record.result = doc.get(records.TestResultEnums.RECORD_RESULT) + record.uid = doc.get(records.TestResultEnums.RECORD_UID) + record.extras = doc.get(records.TestResultEnums.RECORD_EXTRAS) + record.details = doc.get(records.TestResultEnums.RECORD_DETAILS) + record.extra_errors = doc.get(records.TestResultEnums.RECORD_EXTRA_ERRORS) + + # 'Stacktrace' in yaml result is ignored. 'Stacktrace' is a more + # detailed version of record.details when exception is emitted. + + self.results.addRecord(record) + + def HandleSimplePrint(self, doc): + '''Simply print result document to log. + + Args: + doc: dict, result document item + ''' + for k, v in doc.items(): + logging.debug(str(k) + ": " + str(v)) + +def GetTestModuleNames(): + '''Returns a list of mobly test module specified in test configuration.''' + configs = config_parser.load_test_config_file(sys.argv[1]) + reduce_func = lambda x, y: x + y.get(keys.ConfigKeys.MOBLY_TEST_MODULE, []) + return reduce(reduce_func, configs, []) + +def ImportTestModules(): + '''Dynamically import mobly test modules.''' + for module_name in GetTestModuleNames(): + module, cls = module_name.rsplit('.', 1) + sys.modules['__main__'].__dict__[cls] = getattr( + importlib.import_module(module), cls) + +if __name__ == "__main__": + ImportTestModules() + test_runner.main() diff --git a/tools/vts-core-tradefed/Android.bp b/tools/vts-core-tradefed/Android.bp index 78b256fae..15f902782 100644 --- a/tools/vts-core-tradefed/Android.bp +++ b/tools/vts-core-tradefed/Android.bp @@ -34,7 +34,7 @@ tradefed_binary_host { wrapper: "etc/vts-tradefed", short_name: "VTS", full_name: "Vendor Test Suite", - version: "13_r1", + version: "12_r1", static_libs: [ "cts-tradefed-harness", "vts-core-tradefed-harness", diff --git a/tools/vts-core-tradefed/res/config/vts-ccd.xml b/tools/vts-core-tradefed/res/config/vts-ccd.xml index 3d394bb52..5d9df7517 100644 --- a/tools/vts-core-tradefed/res/config/vts-ccd.xml +++ b/tools/vts-core-tradefed/res/config/vts-ccd.xml @@ -19,11 +19,7 @@ <option name="plan" value="vts-ccd" /> <option name="test-tag" value="vts-ccd" /> - <system_checker class="com.android.tradefed.suite.checker.DeviceBaselineChecker"> - <option name="enable-device-baseline-settings" value="true" /> - <option name="enable-experimental-device-baseline-setters" value="keep_screen_on" /> - <option name="enable-experimental-device-baseline-setters" value="disable_os_auto_update" /> - </system_checker> + <option name="compatibility:skip-all-system-status-check" value="true" /> <target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsDeviceInfoCollector" /> <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DeviceInfoCollector"> diff --git a/tools/vts-core-tradefed/res/config/vts-kernel.xml b/tools/vts-core-tradefed/res/config/vts-kernel.xml index a5b15672e..6b6dc9b66 100644 --- a/tools/vts-core-tradefed/res/config/vts-kernel.xml +++ b/tools/vts-core-tradefed/res/config/vts-kernel.xml @@ -23,7 +23,6 @@ <option name="compatibility:include-filter" value="binderLibTest" /> <option name="compatibility:include-filter" value="binderSafeInterfaceTest " /> <option name="compatibility:include-filter" value="bpf_module_test" /> - <option name="compatibility:include-filter" value="drop_caches_test" /> <option name="compatibility:include-filter" value="ion-unit-tests" /> <option name="compatibility:include-filter" value="KernelApiSysfsTest" /> <option name="compatibility:include-filter" value="KernelDynamicPartitionsTest " /> diff --git a/tools/vts-core-tradefed/res/config/vts-validation-exclude.xml b/tools/vts-core-tradefed/res/config/vts-validation-exclude.xml index 27c3698b6..e86db6ec4 100644 --- a/tools/vts-core-tradefed/res/config/vts-validation-exclude.xml +++ b/tools/vts-core-tradefed/res/config/vts-validation-exclude.xml @@ -24,7 +24,6 @@ <option name="compatibility:exclude-filter" value="CtsResourcesLoaderTests" /> <option name="compatibility:exclude-filter" value="CtsWindowManagerJetpackTestCases" /> <option name="compatibility:exclude-filter" value="KernelDynamicPartitionsTest" /> - <option name="compatibility:exclude-filter" value="VtsHalBluetoothV1_0TargetTest" /> <option name="compatibility:exclude-filter" value="vts_compatibilityMatrix_validate_test" /> <option name="compatibility:exclude-filter" value="vts_core_liblp_test" /> <option name="compatibility:exclude-filter" value="vts_defaultPermissions_validate_test" /> @@ -42,8 +41,6 @@ <option name="compatibility:exclude-filter" value="vts_permission_validate_test" /> <option name="compatibility:exclude-filter" value="vts_ltp_test_arm_64" /> <option name="compatibility:exclude-filter" value="vts_ltp_test" /> - <option name="compatibility:exclude-filter" value="vts_security_avb_test AvbTest#SystemHashtree" /> - <option name="compatibility:exclude-filter" value="vts_security_avb_test AvbTest#SystemDescriptor" /> <option name="compatibility:exclude-filter" value="vts_test_binary_bow_module" /> <option name="compatibility:exclude-filter" value="vts_treble_platform_version_test" /> <option name="compatibility:exclude-filter" value="vts_treble_sys_prop_test" /> diff --git a/tools/vts-core-tradefed/res/config/vts-validation.xml b/tools/vts-core-tradefed/res/config/vts-validation.xml index 92a87deb8..14167c7a4 100644 --- a/tools/vts-core-tradefed/res/config/vts-validation.xml +++ b/tools/vts-core-tradefed/res/config/vts-validation.xml @@ -14,8 +14,8 @@ limitations under the License. --> <configuration description="Runs a subset of VTS tests using a general kernel image (GKI)"> + <option name="plan" value="vts-validation" /> <option name="result-attribute" key="GKI" value="1" /> <include name="vts" /> <include name="vts-validation-exclude" /> - <option name="plan" value="vts-validation" /> </configuration> diff --git a/tools/vts-core-tradefed/src/com/android/tradefed/testtype/binary/KernelTargetTest.java b/tools/vts-core-tradefed/src/com/android/tradefed/testtype/binary/KernelTargetTest.java index c8101cf4d..3ebdf16c5 100644 --- a/tools/vts-core-tradefed/src/com/android/tradefed/testtype/binary/KernelTargetTest.java +++ b/tools/vts-core-tradefed/src/com/android/tradefed/testtype/binary/KernelTargetTest.java @@ -34,8 +34,6 @@ import java.util.concurrent.TimeUnit; public class KernelTargetTest extends ExecutableTargetTest { @Option(name = "ignore-binary-check", description = "Ignore the binary check in findBinary().") private boolean mIgnoreBinaryCheck = false; - @Option(name = "exit-code-skip", description = "Exit code for skipped tests.") - private int mExitCodeSkip = 32; @Override public String findBinary(String binary) throws DeviceNotAvailableException { @@ -53,7 +51,8 @@ public class KernelTargetTest extends ExecutableTargetTest { */ protected void checkCommandResult( CommandResult result, ITestInvocationListener listener, TestDescription description) { - if (result.getExitCode() == mExitCodeSkip) { + int exitCodeTCONF = 32; + if (result.getExitCode() == exitCodeTCONF) { listener.testIgnored(description); } else { super.checkCommandResult(result, listener, description); diff --git a/utils/python/android/api.py b/utils/python/android/api.py index b3240d812..ab51ed2de 100644 --- a/utils/python/android/api.py +++ b/utils/python/android/api.py @@ -18,5 +18,3 @@ PLATFORM_API_LEVEL_O_MR1 = 27 PLATFORM_API_LEVEL_P = 28 PLATFORM_API_LEVEL_Q = 29 PLATFORM_API_LEVEL_R = 30 -PLATFORM_API_LEVEL_S = 31 -PLATFORM_API_LEVEL_T = 33 diff --git a/utils/python/coverage/Android.mk b/utils/python/coverage/Android.mk new file mode 100644 index 000000000..a4eb9dbb7 --- /dev/null +++ b/utils/python/coverage/Android.mk @@ -0,0 +1,42 @@ +# Copyright 2016 - 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. + +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE := vts_coverage_test +LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 +LOCAL_LICENSE_CONDITIONS := notice +LOCAL_MODULE_CLASS := FAKE +LOCAL_IS_HOST_MODULE := true + +include $(BUILD_SYSTEM)/base_rules.mk + +py_scripts := \ + $(LOCAL_PATH)/parser_test.py \ + $(LOCAL_PATH)/gcno_parser_test.py \ + $(LOCAL_PATH)/gcda_parser_test.py \ + $(LOCAL_PATH)/arc_summary_test.py \ + $(LOCAL_PATH)/function_summary_test.py \ + $(LOCAL_PATH)/coverage_report_test.py \ + +test_dependencies := \ + $(LOCAL_PATH)/testdata/sample.gcno \ + $(LOCAL_PATH)/testdata/sample.gcda + +$(LOCAL_BUILT_MODULE): PRIVATE_PY_SCRIPTS := $(py_scripts) +$(LOCAL_BUILT_MODULE): $(py_scripts) $(test_dependencies) + @echo "Regression test (build time): $(PRIVATE_MODULE)" + $(foreach py, $(PRIVATE_PY_SCRIPTS), (PYTHONPATH=$$PYTHONPATH:test python $(py)) &&) true + $(hide) touch $@ diff --git a/utils/python/coverage/README.md b/utils/python/coverage/README.md new file mode 100644 index 000000000..3c11a9b1d --- /dev/null +++ b/utils/python/coverage/README.md @@ -0,0 +1,18 @@ +# To run from another Python module + +Import the CoverageReport module by including the line: + + from vts.utils.python.coverage import CoverageReport + +Run the code by calling the parse function as follows: + html_report = CoverageReport.GenerateCoverageReport(src_file_name, src_file_content, gcov_file_content, + gcda_file_content) + +Args: + src_file_name: string, the source file name. + src_file_content: string, the C/C++ source file content. + gcov_file_content: string, the raw gcov binary file content. + gcda_file_content: string, the raw gcda binary file content. + +Returns: + the coverage HTML produced for 'src_file_name'. diff --git a/utils/python/coverage/__init__.py b/utils/python/coverage/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/utils/python/coverage/__init__.py diff --git a/utils/python/coverage/arc_summary.py b/utils/python/coverage/arc_summary.py new file mode 100644 index 000000000..ae9138f11 --- /dev/null +++ b/utils/python/coverage/arc_summary.py @@ -0,0 +1,90 @@ +# +# Copyright (C) 2016 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. +# + + +class ArcSummary(object): + """Summarizes an arc from a .gcno file. + + Attributes: + src_block_index: integer index of the source basic block. + dstBlockIndex: integer index of the destination basic block. + on_tree: True iff arc has flag GCOV_ARC_ON_TREE. + fake: True iff arc has flag GCOV_ARC_FAKE. + fallthrough: True iff arc has flag GCOV_ARC_FALLTHROUGH. + resolved: True iff the arc's count has been resolved. + count: Integer number of times the arc was covered. + """ + + GCOV_ARC_ON_TREE = 1 + GCOV_ARC_FAKE = 1 << 1 + GCOV_ARC_FALLTHROUGH = 1 << 2 + + def __init__(self, src_block, dst_block, flag): + """Inits the arc summary with provided values. + + Stores the source and destination block indices and parses + the arc flag. + + Args: + src_block: BlockSummary of source block. + dst_block: BlockSummary of destination block. + flag: integer flag for the given arc. + """ + + self.src_block = src_block + self.dst_block = dst_block + self.on_tree = bool(flag & self.GCOV_ARC_ON_TREE) + self.fake = bool(flag & self.GCOV_ARC_FAKE) + self.fallthrough = bool(flag & self.GCOV_ARC_FALLTHROUGH) + self.resolved = False + self.count = 0 + + def Resolve(self): + """Resolves the arc count and returns True if successful. + + Uses the property that the sum of counts of arcs entering a + node is equal to the sum of counts of arcs leaving a node. The + exception to this rule is fake non-fallthrough nodes, which have + no exit edges. In this case, remove the arc as an exit arc from + the source so that the source can be resolved. + + Returns: + True if the arc could be resolved and False otherwise. + """ + if self.fake and not self.fallthrough: + try: + self.src_block.exit_arcs.remove(self) + except ValueError: + pass + elif (len(self.src_block.entry_arcs) > 0 and + all(a.resolved for a in self.src_block.entry_arcs) and + all(a.resolved for a in self.src_block.exit_arcs if a != self)): + in_flow = sum(a.count for a in self.src_block.entry_arcs) + out_flow = sum(a.count for a in self.src_block.exit_arcs + if a != self) + self.count = in_flow - out_flow + self.resolved = True + elif (len(self.dst_block.exit_arcs) > 0 and + all(a.resolved for a in self.dst_block.exit_arcs) and + all(a.resolved for a in self.dst_block.entry_arcs if a != self)): + out_flow = sum(a.count for a in self.dst_block.exit_arcs) + in_flow = sum(a.count for a in self.dst_block.entry_arcs + if a != self) + self.count = out_flow - in_flow + self.resolved = True + else: + return False + return True diff --git a/utils/python/coverage/arc_summary_test.py b/utils/python/coverage/arc_summary_test.py new file mode 100644 index 000000000..6784be7c8 --- /dev/null +++ b/utils/python/coverage/arc_summary_test.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python +# +# Copyright (C) 2016 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. +# + +import os +import unittest + +from vts.utils.python.coverage import arc_summary +from vts.utils.python.coverage import block_summary + + +class ArcSummaryTest(unittest.TestCase): + """Tests for ArcSummary of vts.utils.python.coverage. + """ + + def testResolveRemove(self): + """Verifies that fake, non-fallthrough arc are resolved correctly. + + The arc should be removed as an exit arc from the source. + """ + src = block_summary.BlockSummary(0, 0) + dst = block_summary.BlockSummary(1, 0) + flag = arc_summary.ArcSummary.GCOV_ARC_FAKE + arc = arc_summary.ArcSummary(src, dst, flag) + src.exit_arcs.append(arc) + dst.entry_arcs.append(arc) + self.assertTrue(arc.Resolve()) + self.assertEqual(len(src.exit_arcs), 0) + + def testResolveFromSource(self): + """Verifies that arcs can be resolved from the source. + + In the case when the source has fully-resolved entry arcs, the arc + count should be resolved from the source. I.e. there is only one + missing arc and it can be solved for from the source. + """ + middle = block_summary.BlockSummary(-1, 0) + n = 10 + + # Create resolved arcs entering the middle block + for ident in range(n): + block = block_summary.BlockSummary(ident, 0) + arc = arc_summary.ArcSummary(block, middle, 0) + arc.resolved = True + arc.count = 1 + block.exit_arcs.append(arc) + middle.entry_arcs.append(arc) + + # Create resolved arcs exiting the middle block + for ident in range(n, 2 * n - 1): + block = block_summary.BlockSummary(ident, 0) + arc = arc_summary.ArcSummary(middle, block, 0) + arc.resolved = True + arc.count = 1 + block.entry_arcs.append(arc) + middle.exit_arcs.append(arc) + + # Create one unresolved arc exiting the middle + last = block_summary.BlockSummary(2 * n - 1, 0) + arc = arc_summary.ArcSummary(middle, last, 0) + middle.exit_arcs.append(arc) + last.entry_arcs.append(arc) + self.assertTrue(arc.Resolve()) + self.assertTrue(arc.resolved) + self.assertEqual(arc.count, 1) + + def testResolveFromDest(self): + """Verifies that arcs can be resolved from the destination block. + + In the case when the source has fully-resolved exit arcs, the arc + count should be resolved from the source. I.e. there is only one + missing arc and it can be solved for from the destination. + """ + middle = block_summary.BlockSummary(-1, 0) + n = 10 + + # Create resolved arcs exiting the middle block + for ident in range(n): + block = block_summary.BlockSummary(ident, 0) + arc = arc_summary.ArcSummary(middle, block, 0) + arc.resolved = True + arc.count = 1 + block.entry_arcs.append(arc) + middle.exit_arcs.append(arc) + + # Create resolved arcs entering the middle block + for ident in range(n, 2 * n - 1): + block = block_summary.BlockSummary(ident, 0) + arc = arc_summary.ArcSummary(block, middle, 0) + arc.resolved = True + arc.count = 1 + block.exit_arcs.append(arc) + middle.entry_arcs.append(arc) + + # Create one unresolved arc entering the middle + block = block_summary.BlockSummary(2 * n - 1, 0) + arc = arc_summary.ArcSummary(block, middle, 0) + middle.entry_arcs.append(arc) + block.exit_arcs.append(arc) + self.assertTrue(arc.Resolve()) + self.assertTrue(arc.resolved) + self.assertEqual(arc.count, 1) + + +if __name__ == "__main__": + unittest.main() diff --git a/utils/python/coverage/block_summary.py b/utils/python/coverage/block_summary.py new file mode 100644 index 000000000..794ea9b38 --- /dev/null +++ b/utils/python/coverage/block_summary.py @@ -0,0 +1,65 @@ +# +# Copyright (C) 2016 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. +# + + +class BlockSummary(object): + """Summarizes a block of code from a .gcno file. + + Contains all the lines in the block and the entry/exit + arcs from/to other basic blocks. + + Attributes: + flag: integer flag value. + entry_arcs: list of ArcSummary objects for each arc + entering the code block. + exit_arcs: list of ArcSummary objects for each arc exiting + the code block. + lines: list of line numbers represented by the basic block. + """ + + def __init__(self, index, flag): + """Inits the block summary with provided values. + + Initializes entryArcs, exitArcs, and lines to the empty list. + Stores the block flag in the flag attribute. + + Args: + index: the basic block number + flag: integer block flag. + """ + self.index = index + self.flag = flag + self.entry_arcs = [] + self.exit_arcs = [] + self.count = 0 + self.lines = [] + + def __str__(self): + """Serializes the block summary as a string. + + Returns: + String representation of the block. + """ + output = '\tBlock: %i, Count: %i' % (self.index, self.count) + if len(self.lines): + output += ', Lines: ' + ', '.join(str(line) for line in self.lines) + if len(self.entry_arcs): + output += ('\r\n\t\t' + str(self.index) + ' <-- ' + ', '.join( + str(a.src_block.index) for a in self.entry_arcs)) + if len(self.exit_arcs): + output += ('\r\n\t\t' + str(self.index) + ' --> ' + ', '.join( + str(a.dst_block.index) for a in self.exit_arcs)) + return output + '\r\n' diff --git a/utils/python/coverage/coverage_report.py b/utils/python/coverage/coverage_report.py new file mode 100644 index 000000000..c176e5ff2 --- /dev/null +++ b/utils/python/coverage/coverage_report.py @@ -0,0 +1,100 @@ +# +# Copyright (C) 2016 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. +# +"""Generates coverage reports using outputs from GCC. + +The GenerateCoverageReport() function returns HTML to display the coverage +at each line of code in a provided source file. Coverage information is +parsed from .gcno and .gcda file contents and combined with the source file +to reconstruct a coverage report. GenerateLineCoverageVector() is a helper +function that produces a vector of line counts and GenerateCoverageHTML() +uses the vector and source to produce the HTML coverage report. +""" + +import cgi +import io +import logging +import os +from vts.utils.python.coverage import gcda_parser +from vts.utils.python.coverage import gcno_parser + +GEN_TAG = "/gen/" + +def GenerateLineCoverageVector(gcno_file_summary, exclude_paths, coverage_dict): + """Process the gcno_file_summary and update the coverage dictionary. + + Create a coverage vector for each source file contained in gcno_file_summary + and update the corresponding item in coverage_dict. + + Args: + gcno_file_summary: FileSummary object after gcno and gcda files have + been parsed. + exclude_paths: a list of paths should be ignored in the coverage report. + coverage_dict: a dictionary for each source file and its corresponding + coverage vector. + """ + for ident in gcno_file_summary.functions: + func = gcno_file_summary.functions[ident] + file_name = func.src_file_name + if GEN_TAG in file_name: + logging.debug("Skip generated source file %s.", file_name) + continue + skip_file = False + for path in exclude_paths: + if file_name.startswith(path): + skip_file = True + break + if skip_file: + logging.debug("Skip excluded source file %s.", file_name) + continue + + src_lines_counts = coverage_dict[file_name] if file_name in coverage_dict else [] + for block in func.blocks: + for line in block.lines: + if line > len(src_lines_counts): + src_lines_counts.extend([-1] * + (line - len(src_lines_counts))) + if src_lines_counts[line - 1] < 0: + src_lines_counts[line - 1] = 0 + src_lines_counts[line - 1] += block.count + coverage_dict[file_name] = src_lines_counts + + +def GetCoverageStats(src_lines_counts): + """Returns the coverage stats. + + Args: + src_lines_counts: A list of non-negative integers or -1 representing + the number of times the i-th line was executed. + -1 indicates a line that is not executable. + + Returns: + integer, the number of lines instrumented for coverage measurement + integer, the number of executed or covered lines + """ + total = 0 + covered = 0 + if not src_lines_counts or not isinstance(src_lines_counts, list): + logging.error("GetCoverageStats: input invalid.") + return total, covered + + for line in src_lines_counts: + if line < 0: + continue + total += 1 + if line > 0: + covered += 1 + return total, covered + diff --git a/utils/python/coverage/coverage_report_test.py b/utils/python/coverage/coverage_report_test.py new file mode 100644 index 000000000..049d84c8d --- /dev/null +++ b/utils/python/coverage/coverage_report_test.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# +# Copyright (C) 2016 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. +# + +import os +import unittest + +from vts.utils.python.coverage import gcno_parser +from vts.utils.python.coverage import gcda_parser +from vts.utils.python.coverage import coverage_report + + +class CoverageReportTest(unittest.TestCase): + """Unit tests for CoverageReport of vts.utils.python.coverage. + """ + + GOLDEN_GCNO_PATH = 'testdata/sample.gcno' + GOLDEN_GCDA_PATH = 'testdata/sample.gcda' + + @classmethod + def setUpClass(cls): + dir_path = os.path.dirname(os.path.realpath(__file__)) + gcno_path = os.path.join(dir_path, cls.GOLDEN_GCNO_PATH) + with open(gcno_path, 'rb') as file: + gcno_summary = gcno_parser.GCNOParser(file).Parse() + gcda_path = os.path.join(dir_path, cls.GOLDEN_GCDA_PATH) + with open(gcda_path, 'rb') as file: + parser = gcda_parser.GCDAParser(file) + parser.Parse(gcno_summary) + cls.gcno_summary = gcno_summary + + def testGenerateLineCoverageVector(self): + """Tests that coverage vector is correctly generated. + + Runs GenerateLineCoverageVector on sample file and checks + result. + """ + coverage_dict = dict() + exclude_paths = [] + src_lines_counts = coverage_report.GenerateLineCoverageVector( + self.gcno_summary, exclude_paths, coverage_dict) + expected = {'sample.c': [-1, -1, -1, -1, 2, -1, -1, -1, -1, -1, 2, + 2, 2, -1, 2, -1, 2, 0, -1, 2, -1, -1, 2, 2, 502, + 500, -1, -1, 2, -1, 2, -1, -1, -1, 2, -1, + -1, -1, -1, 2, 2, 2]} + self.assertEqual(coverage_dict, expected) + + +if __name__ == "__main__": + unittest.main() diff --git a/utils/python/coverage/coverage_utils.py b/utils/python/coverage/coverage_utils.py new file mode 100644 index 000000000..217b02800 --- /dev/null +++ b/utils/python/coverage/coverage_utils.py @@ -0,0 +1,771 @@ +# +# Copyright (C) 2016 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. +import argparse +import io +import json +import logging +import os +import shutil +import sys +import time +import zipfile + +from vts.proto import VtsReportMessage_pb2 as ReportMsg +from vts.runners.host import keys +from vts.utils.python.archive import archive_parser +from vts.utils.python.common import cmd_utils +from vts.utils.python.controllers.adb import AdbError +from vts.utils.python.coverage import coverage_report +from vts.utils.python.coverage import gcda_parser +from vts.utils.python.coverage import gcno_parser +from vts.utils.python.coverage.parser import FileFormatError +from vts.utils.python.os import path_utils +from vts.utils.python.web import feature_utils + +FLUSH_PATH_VAR = "GCOV_PREFIX" # environment variable for gcov flush path +TARGET_COVERAGE_PATH = "/data/misc/trace/" # location to flush coverage +LOCAL_COVERAGE_PATH = "/tmp/vts-test-coverage" # location to pull coverage to host + +# Environment for test process +COVERAGE_TEST_ENV = "GCOV_PREFIX_OVERRIDE=true GCOV_PREFIX=/data/misc/trace/self" + +GCNO_SUFFIX = ".gcno" +GCDA_SUFFIX = ".gcda" +COVERAGE_SUFFIX = ".gcnodir" +GIT_PROJECT = "git_project" +MODULE_NAME = "module_name" +NAME = "name" +PATH = "path" +GEN_TAG = "/gen/" + +_BUILD_INFO = "BUILD_INFO" # name of build info artifact +_GCOV_ZIP = "gcov.zip" # name of gcov artifact zip +_REPO_DICT = "repo-dict" # name of dictionary from project to revision in BUILD_INFO + +_CLEAN_TRACE_COMMAND = "rm -rf /data/misc/trace/*" +_FLUSH_COMMAND = ( + "GCOV_PREFIX_OVERRIDE=true GCOV_PREFIX=/data/local/tmp/flusher " + "/data/local/tmp/vts_coverage_configure flush") +_SP_COVERAGE_PATH = "self" # relative location where same-process coverage is dumped. + +_CHECKSUM_GCNO_DICT = "checksum_gcno_dict" +_COVERAGE_ZIP = "coverage_zip" +_REVISION_DICT = "revision_dict" + + +class CoverageFeature(feature_utils.Feature): + """Feature object for coverage functionality. + + Attributes: + enabled: boolean, True if coverage is enabled, False otherwise + web: (optional) WebFeature, object storing web feature util for test run + local_coverage_path: path to store the coverage files. + _device_resource_dict: a map from device serial number to host resources directory. + _hal_names: the list of hal names for which to process coverage. + _coverage_report_file_prefix: prefix of the output coverage report file. + """ + + _TOGGLE_PARAM = keys.ConfigKeys.IKEY_ENABLE_COVERAGE + _REQUIRED_PARAMS = [keys.ConfigKeys.IKEY_ANDROID_DEVICE] + _OPTIONAL_PARAMS = [ + keys.ConfigKeys.IKEY_MODULES, + keys.ConfigKeys.IKEY_OUTPUT_COVERAGE_REPORT, + keys.ConfigKeys.IKEY_GLOBAL_COVERAGE, + keys.ConfigKeys.IKEY_EXCLUDE_COVERAGE_PATH, + keys.ConfigKeys.IKEY_COVERAGE_REPORT_PATH, + ] + + _DEFAULT_EXCLUDE_PATHS = [ + "bionic", "external/libcxx", "system/core", "system/libhidl", + "system/libfmq" + ] + + def __init__(self, user_params, web=None): + """Initializes the coverage feature. + + Args: + user_params: A dictionary from parameter name (String) to parameter value. + web: (optional) WebFeature, object storing web feature util for test run + local_coverage_path: (optional) path to store the .gcda files and coverage reports. + """ + self.ParseParameters(self._TOGGLE_PARAM, self._REQUIRED_PARAMS, + self._OPTIONAL_PARAMS, user_params) + self.web = web + self._device_resource_dict = {} + self._hal_names = None + + timestamp_seconds = str(int(time.time() * 1000000)) + self.local_coverage_path = os.path.join(LOCAL_COVERAGE_PATH, + timestamp_seconds) + if os.path.exists(self.local_coverage_path): + logging.debug("removing existing coverage path: %s", + self.local_coverage_path) + shutil.rmtree(self.local_coverage_path) + os.makedirs(self.local_coverage_path) + + self._coverage_report_dir = getattr( + self, keys.ConfigKeys.IKEY_COVERAGE_REPORT_PATH, None) + + self._coverage_report_file_prefix = "" + + self.global_coverage = getattr( + self, keys.ConfigKeys.IKEY_GLOBAL_COVERAGE, True) + if self.enabled: + android_devices = getattr(self, + keys.ConfigKeys.IKEY_ANDROID_DEVICE) + if not isinstance(android_devices, list): + logging.warn("Android device information not available.") + self.enabled = False + for device in android_devices: + serial = device.get(keys.ConfigKeys.IKEY_SERIAL) + coverage_resource_path = device.get( + keys.ConfigKeys.IKEY_GCOV_RESOURCES_PATH) + if not serial: + logging.error("Missing serial information in device: %s", + device) + continue + if not coverage_resource_path: + logging.error( + "Missing coverage resource path in device: %s", device) + continue + self._device_resource_dict[str(serial)] = str( + coverage_resource_path) + + if self.enabled: + logging.info("Coverage is enabled") + else: + logging.debug("Coverage is disabled.") + + def _FindGcnoSummary(self, gcda_file_path, gcno_file_parsers): + """Find the corresponding gcno summary for given gcda file. + + Identify the corresponding gcno summary for given gcda file from a list + of gcno files with the same checksum as the gcda file by matching + the the gcda file path. + Note: if none of the gcno summary contains the source file same as the + given gcda_file_path (e.g. when the corresponding source file does not + contain any executable codes), just return the last gcno summary in the + list as a fall back solution. + + Args: + gcda_file_path: the path of gcda file (without extensions). + gcno_file_parsers: a list of gcno file parser that has the same + chechsum. + + Returns: + The corresponding gcno summary for given gcda file. + """ + gcno_summary = None + # For each gcno files with the matched checksum, compare the + # gcda_file_path to find the corresponding gcno summary. + for gcno_file_parser in gcno_file_parsers: + try: + gcno_summary = gcno_file_parser.Parse() + except FileFormatError: + logging.error("Error parsing gcno for gcda %s", gcda_file_path) + break + legacy_build = "soong/.intermediates" not in gcda_file_path + for key in gcno_summary.functions: + src_file_path = gcno_summary.functions[key].src_file_name + src_file_name = src_file_path.rsplit(".", 1)[0] + # If build with legacy compile system, compare only the base + # source file name. Otherwise, compare the full source file name + # (with path info). + if legacy_build: + base_src_file_name = os.path.basename(src_file_name) + if gcda_file_path.endswith(base_src_file_name): + return gcno_summary + else: + if gcda_file_path.endswith(src_file_name): + return gcno_summary + # If no gcno file matched with the gcda_file_name, return the last + # gcno summary as a fall back solution. + return gcno_summary + + def _GetChecksumGcnoDict(self, cov_zip): + """Generates a dictionary from gcno checksum to GCNOParser object. + + Processes the gcnodir files in the zip file to produce a mapping from gcno + checksum to the GCNOParser object wrapping the gcno content. + Note there might be multiple gcno files corresponds to the same checksum. + + Args: + cov_zip: the zip file containing gcnodir files from the device build + + Returns: + the dictionary of gcno checksums to GCNOParser objects + """ + checksum_gcno_dict = dict() + fnames = cov_zip.namelist() + instrumented_modules = [ + f for f in fnames if f.endswith(COVERAGE_SUFFIX) + ] + for instrumented_module in instrumented_modules: + # Read the gcnodir file + archive = archive_parser.Archive( + cov_zip.open(instrumented_module).read()) + try: + archive.Parse() + except ValueError: + logging.error("Archive could not be parsed: %s", name) + continue + + for gcno_file_path in archive.files: + gcno_stream = io.BytesIO(archive.files[gcno_file_path]) + gcno_file_parser = gcno_parser.GCNOParser(gcno_stream) + if gcno_file_parser.checksum in checksum_gcno_dict: + checksum_gcno_dict[gcno_file_parser.checksum].append( + gcno_file_parser) + else: + checksum_gcno_dict[gcno_file_parser.checksum] = [ + gcno_file_parser + ] + return checksum_gcno_dict + + def _ClearTargetGcov(self, dut, serial, path_suffix=None): + """Removes gcov data from the device. + + Finds and removes all gcda files relative to TARGET_COVERAGE_PATH. + Args: + dut: the device under test. + path_suffix: optional string path suffix. + """ + path = TARGET_COVERAGE_PATH + if path_suffix: + path = path_utils.JoinTargetPath(path, path_suffix) + self._ExecuteOneAdbShellCommand(dut, serial, _CLEAN_TRACE_COMMAND) + + def _GetHalPids(self, dut, hal_names): + """Get the process id for the given hal names. + + Args: + dut: the device under test. + hal_names: list of strings for targeting hal names. + + Returns: + list of strings for the corresponding pids. + """ + logging.debug("hal_names: %s", str(hal_names)) + searchString = "|".join(hal_names) + entries = [] + try: + dut.rootAdb() + entries = dut.adb.shell( + "lshal -itp 2> /dev/null | grep -E \"{0}\"".format( + searchString)).splitlines() + except AdbError as e: + logging.error("failed to get pid entries") + + pids = set(pid.strip() + for pid in map(lambda entry: entry.split()[-1], entries) + if pid.isdigit()) + return pids + + def InitializeDeviceCoverage(self, dut=None, serial=None): + """Initializes the device for coverage before tests run. + + Flushes, then finds and removes all gcda files under + TARGET_COVERAGE_PATH before tests run. + + Args: + dut: the device under test. + """ + self._ExecuteOneAdbShellCommand(dut, serial, "setenforce 0") + self._ExecuteOneAdbShellCommand(dut, serial, _FLUSH_COMMAND) + logging.debug("Removing existing gcda files.") + self._ClearTargetGcov(dut, serial) + + # restart HALs to include coverage for initialization code. + if self._hal_names: + pids = self._GetHalPids(dut, self._hal_names) + for pid in pids: + cmd = "kill -9 " + pid + self._ExecuteOneAdbShellCommand(dut, serial, cmd) + + def _GetGcdaDict(self, dut, serial): + """Retrieves GCDA files from device and creates a dictionary of files. + + Find all GCDA files on the target device, copy them to the host using + adb, then return a dictionary mapping from the gcda basename to the + temp location on the host. + + Args: + dut: the device under test. + + Returns: + A dictionary with gcda basenames as keys and contents as the values. + """ + logging.debug("Creating gcda dictionary") + gcda_dict = {} + logging.debug("Storing gcda tmp files to: %s", + self.local_coverage_path) + + self._ExecuteOneAdbShellCommand(dut, serial, _FLUSH_COMMAND) + + gcda_files = set() + if self._hal_names: + pids = self._GetHalPids(dut, self._hal_names) + pids.add(_SP_COVERAGE_PATH) + for pid in pids: + path = path_utils.JoinTargetPath(TARGET_COVERAGE_PATH, pid) + try: + files = dut.adb.shell("find %s -name \"*.gcda\"" % path) + gcda_files.update(files.split("\n")) + except AdbError as e: + logging.info("No gcda files found in path: \"%s\"", path) + else: + cmd = ("find %s -name \"*.gcda\"" % TARGET_COVERAGE_PATH) + result = self._ExecuteOneAdbShellCommand(dut, serial, cmd) + if result: + gcda_files.update(result.split("\n")) + + for gcda in gcda_files: + if gcda: + basename = os.path.basename(gcda.strip()) + file_name = os.path.join(self.local_coverage_path, basename) + if dut is None: + results = cmd_utils.ExecuteShellCommand( + "adb -s %s pull %s %s " % (serial, gcda, file_name)) + if (results[cmd_utils.EXIT_CODE][0]): + logging.error( + "Fail to execute command: %s. error: %s" % + (cmd, str(results[cmd_utils.STDERR][0]))) + else: + dut.adb.pull("%s %s" % (gcda, file_name)) + gcda_content = open(file_name, "rb").read() + gcda_dict[gcda.strip()] = gcda_content + self._ClearTargetGcov(dut, serial) + return gcda_dict + + def _OutputCoverageReport(self, isGlobal, coverage_report_msg=None): + logging.info("Outputing coverage data") + timestamp_seconds = str(int(time.time() * 1000000)) + coverage_report_file_name = "coverage_report_" + timestamp_seconds + ".txt" + if self._coverage_report_file_prefix: + coverage_report_file_name = "coverage_report_" + self._coverage_report_file_prefix + ".txt" + + coverage_report_file = None + if (self._coverage_report_dir): + if not os.path.exists(self._coverage_report_dir): + os.makedirs(self._coverage_report_dir) + coverage_report_file = os.path.join(self._coverage_report_dir, + coverage_report_file_name) + else: + coverage_report_file = os.path.join(self.local_coverage_path, + coverage_report_file_name) + + logging.info("Storing coverage report to: %s", coverage_report_file) + if self.web and self.web.enabled: + coverage_report_msg = ReportMsg.TestReportMessage() + if isGlobal: + for c in self.web.report_msg.coverage: + coverage = coverage_report_msg.coverage.add() + coverage.CopyFrom(c) + else: + for c in self.web.current_test_report_msg.coverage: + coverage = coverage_report_msg.coverage.add() + coverage.CopyFrom(c) + if coverage_report_msg is not None: + with open(coverage_report_file, "w+") as f: + f.write(str(coverage_report_msg)) + + def _AutoProcess(self, cov_zip, revision_dict, gcda_dict, isGlobal): + """Process coverage data and appends coverage reports to the report message. + + Matches gcno files with gcda files and processes them into a coverage report + with references to the original source code used to build the system image. + Coverage information is appended as a CoverageReportMessage to the provided + report message. + + Git project information is automatically extracted from the build info and + the source file name enclosed in each gcno file. Git project names must + resemble paths and may differ from the paths to their project root by at + most one. If no match is found, then coverage information will not be + be processed. + + e.g. if the project path is test/vts, then its project name may be + test/vts or <some folder>/test/vts in order to be recognized. + + Args: + cov_zip: the ZipFile object containing the gcno coverage artifacts. + revision_dict: the dictionary from project name to project version. + gcda_dict: the dictionary of gcda basenames to gcda content (binary string) + isGlobal: boolean, True if the coverage data is for the entire test, False if only for + the current test case. + """ + checksum_gcno_dict = self._GetChecksumGcnoDict(cov_zip) + output_coverage_report = getattr( + self, keys.ConfigKeys.IKEY_OUTPUT_COVERAGE_REPORT, False) + exclude_coverage_path = getattr( + self, keys.ConfigKeys.IKEY_EXCLUDE_COVERAGE_PATH, []) + for idx, path in enumerate(exclude_coverage_path): + base_name = os.path.basename(path) + if base_name and "." not in base_name: + path = path if path.endswith("/") else path + "/" + exclude_coverage_path[idx] = path + exclude_coverage_path.extend(self._DEFAULT_EXCLUDE_PATHS) + + coverage_dict = dict() + coverage_report_message = ReportMsg.TestReportMessage() + + for gcda_name in gcda_dict: + if GEN_TAG in gcda_name: + # skip coverage measurement for intermediate code. + logging.warn("Skip for gcda file: %s", gcda_name) + continue + + gcda_stream = io.BytesIO(gcda_dict[gcda_name]) + gcda_file_parser = gcda_parser.GCDAParser(gcda_stream) + file_name = gcda_name.rsplit(".", 1)[0] + + if not gcda_file_parser.checksum in checksum_gcno_dict: + logging.info("No matching gcno file for gcda: %s", gcda_name) + continue + gcno_file_parsers = checksum_gcno_dict[gcda_file_parser.checksum] + gcno_summary = self._FindGcnoSummary(file_name, gcno_file_parsers) + if gcno_summary is None: + logging.error("No gcno file found for gcda %s.", gcda_name) + continue + + # Process and merge gcno/gcda data + try: + gcda_file_parser.Parse(gcno_summary) + except FileFormatError: + logging.error("Error parsing gcda file %s", gcda_name) + continue + + coverage_report.GenerateLineCoverageVector( + gcno_summary, exclude_coverage_path, coverage_dict) + + for src_file_path in coverage_dict: + # Get the git project information + # Assumes that the project name and path to the project root are similar + revision = None + for project_name in revision_dict: + # Matches cases when source file root and project name are the same + if src_file_path.startswith(str(project_name)): + git_project_name = str(project_name) + git_project_path = str(project_name) + revision = str(revision_dict[project_name]) + logging.debug("Source file '%s' matched with project '%s'", + src_file_path, git_project_name) + break + + parts = os.path.normpath(str(project_name)).split(os.sep, 1) + # Matches when project name has an additional prefix before the + # project path root. + if len(parts) > 1 and src_file_path.startswith(parts[-1]): + git_project_name = str(project_name) + git_project_path = parts[-1] + revision = str(revision_dict[project_name]) + logging.debug("Source file '%s' matched with project '%s'", + src_file_path, git_project_name) + break + + if not revision: + logging.info("Could not find git info for %s", src_file_path) + continue + + coverage_vec = coverage_dict[src_file_path] + total_count, covered_count = coverage_report.GetCoverageStats( + coverage_vec) + if self.web and self.web.enabled: + self.web.AddCoverageReport(coverage_vec, src_file_path, + git_project_name, git_project_path, + revision, covered_count, + total_count, isGlobal) + else: + coverage = coverage_report_message.coverage.add() + coverage.total_line_count = total_count + coverage.covered_line_count = covered_count + coverage.line_coverage_vector.extend(coverage_vec) + + src_file_path = os.path.relpath(src_file_path, + git_project_path) + coverage.file_path = src_file_path + coverage.revision = revision + coverage.project_name = git_project_name + + if output_coverage_report: + self._OutputCoverageReport(isGlobal, coverage_report_message) + + # TODO: consider to deprecate the manual process. + def _ManualProcess(self, cov_zip, revision_dict, gcda_dict, isGlobal): + """Process coverage data and appends coverage reports to the report message. + + Opens the gcno files in the cov_zip for the specified modules and matches + gcno/gcda files. Then, coverage vectors are generated for each set of matching + gcno/gcda files and appended as a CoverageReportMessage to the provided + report message. Unlike AutoProcess, coverage information is only processed + for the modules explicitly defined in 'modules'. + + Args: + cov_zip: the ZipFile object containing the gcno coverage artifacts. + revision_dict: the dictionary from project name to project version. + gcda_dict: the dictionary of gcda basenames to gcda content (binary string) + isGlobal: boolean, True if the coverage data is for the entire test, False if only for + the current test case. + """ + output_coverage_report = getattr( + self, keys.ConfigKeys.IKEY_OUTPUT_COVERAGE_REPORT, True) + modules = getattr(self, keys.ConfigKeys.IKEY_MODULES, None) + covered_modules = set(cov_zip.namelist()) + for module in modules: + if MODULE_NAME not in module or GIT_PROJECT not in module: + logging.error( + "Coverage module must specify name and git project: %s", + module) + continue + project = module[GIT_PROJECT] + if PATH not in project or NAME not in project: + logging.error("Project name and path not specified: %s", + project) + continue + + name = str(module[MODULE_NAME]) + COVERAGE_SUFFIX + git_project = str(project[NAME]) + git_project_path = str(project[PATH]) + + if name not in covered_modules: + logging.error("No coverage information for module %s", name) + continue + if git_project not in revision_dict: + logging.error( + "Git project not present in device revision dict: %s", + git_project) + continue + + revision = str(revision_dict[git_project]) + archive = archive_parser.Archive(cov_zip.open(name).read()) + try: + archive.Parse() + except ValueError: + logging.error("Archive could not be parsed: %s", name) + continue + + for gcno_file_path in archive.files: + file_name_path = gcno_file_path.rsplit(".", 1)[0] + file_name = os.path.basename(file_name_path) + gcno_content = archive.files[gcno_file_path] + gcno_stream = io.BytesIO(gcno_content) + try: + gcno_summary = gcno_parser.GCNOParser(gcno_stream).Parse() + except FileFormatError: + logging.error("Error parsing gcno file %s", gcno_file_path) + continue + src_file_path = None + + # Match gcno file with gcda file + gcda_name = file_name + GCDA_SUFFIX + if gcda_name not in gcda_dict: + logging.error("No gcda file found %s.", gcda_name) + continue + + src_file_path = self._ExtractSourceName( + gcno_summary, file_name) + + if not src_file_path: + logging.error("No source file found for %s.", + gcno_file_path) + continue + + # Process and merge gcno/gcda data + gcda_content = gcda_dict[gcda_name] + gcda_stream = io.BytesIO(gcda_content) + try: + gcda_parser.GCDAParser(gcda_stream).Parse(gcno_summary) + except FileFormatError: + logging.error("Error parsing gcda file %s", gcda_content) + continue + + if self.web and self.web.enabled: + coverage_vec = coverage_report.GenerateLineCoverageVector( + src_file_path, gcno_summary) + total_count, covered_count = coverage_report.GetCoverageStats( + coverage_vec) + self.web.AddCoverageReport(coverage_vec, src_file_path, + git_project, git_project_path, + revision, covered_count, + total_count, isGlobal) + + if output_coverage_report: + self._OutputCoverageReport(isGlobal) + + def SetCoverageData(self, dut=None, serial=None, isGlobal=False): + """Sets and processes coverage data. + + Organizes coverage data and processes it into a coverage report in the + current test case + + Requires feature to be enabled; no-op otherwise. + + Args: + dut: the device object for which to pull coverage data + isGlobal: True if the coverage data is for the entire test, False if + if the coverage data is just for the current test case. + """ + if not self.enabled: + return + + if serial is None: + serial = "default" if dut is None else dut.adb.shell( + "getprop ro.serialno").strip() + + if not serial in self._device_resource_dict: + logging.error("Invalid device provided: %s", serial) + return + + resource_path = self._device_resource_dict[serial] + if not resource_path: + logging.error("Coverage resource path not found.") + return + + gcda_dict = self._GetGcdaDict(dut, serial) + logging.debug("Coverage file paths %s", str([fp for fp in gcda_dict])) + + cov_zip = zipfile.ZipFile(os.path.join(resource_path, _GCOV_ZIP)) + + revision_dict = json.load( + open(os.path.join(resource_path, _BUILD_INFO)))[_REPO_DICT] + + if not hasattr(self, keys.ConfigKeys.IKEY_MODULES): + # auto-process coverage data + self._AutoProcess(cov_zip, revision_dict, gcda_dict, isGlobal) + else: + # explicitly process coverage data for the specified modules + self._ManualProcess(cov_zip, revision_dict, gcda_dict, isGlobal) + + # cleanup the downloaded gcda files. + logging.debug("Cleaning up gcda files.") + files = os.listdir(self.local_coverage_path) + for item in files: + if item.endswith(".gcda"): + os.remove(os.path.join(self.local_coverage_path, item)) + + def SetHalNames(self, names=[]): + """Sets the HAL names for which to process coverage. + + Args: + names: list of strings, names of hal (e.g. android.hardware.light@2.0) + """ + self._hal_names = list(names) + + def SetCoverageReportFilePrefix(self, prefix): + """Sets the prefix for outputting the coverage report file. + + Args: + prefix: strings, prefix of the coverage report file. + """ + self._coverage_report_file_prefix = prefix + + def SetCoverageReportDirectory(self, corverage_report_dir): + """Sets the path for storing the coverage report file. + + Args: + corverage_report_dir: strings, dir to store the coverage report file. + """ + self._coverage_report_dir = corverage_report_dir + + def _ExecuteOneAdbShellCommand(self, dut, serial, cmd): + """Helper method to execute a shell command and return results. + + Args: + dut: the device under test. + cmd: string, command to execute. + Returns: + stdout result of the command, None if command fails. + """ + if dut is None: + results = cmd_utils.ExecuteShellCommand("adb -s %s shell %s" % + (serial, cmd)) + if (results[cmd_utils.EXIT_CODE][0]): + logging.error("Fail to execute command: %s. error: %s" % + (cmd, str(results[cmd_utils.STDERR][0]))) + return None + else: + return results[cmd_utils.STDOUT][0] + else: + try: + return dut.adb.shell(cmd) + except AdbError as e: + logging.warn("Fail to execute command: %s. error: %s" % + (cmd, str(e))) + return None + + +if __name__ == '__main__': + """ Tools to process coverage data. + + Usage: + python coverage_utils.py operation [--serial=device_serial_number] + [--report_prefix=prefix_of_coverage_report] + + Example: + python coverage_utils.py init_coverage + python coverage_utils.py get_coverage --serial HT7821A00243 + python coverage_utils.py get_coverage --serial HT7821A00243 --report_prefix=test + """ + logging.basicConfig(level=logging.INFO) + parser = argparse.ArgumentParser(description="Coverage process tool.") + parser.add_argument( + "--report_prefix", + dest="report_prefix", + required=False, + help="Prefix of the coverage report.") + parser.add_argument( + "--report_path", + dest="report_path", + required=False, + help="directory to store the coverage reports.") + parser.add_argument( + "--serial", dest="serial", required=True, help="Device serial number.") + parser.add_argument( + "--gcov_rescource_path", + dest="gcov_rescource_path", + required=True, + help="Directory that stores gcov resource files.") + parser.add_argument( + "operation", + help= + "Operation for processing coverage data, e.g. 'init_coverage', get_coverage'" + ) + args = parser.parse_args() + + if args.operation != "init_coverage" and args.operation != "get_coverage": + print "Unsupported operation. Exiting..." + sys.exit(1) + user_params = { + keys.ConfigKeys.IKEY_ENABLE_COVERAGE: + True, + keys.ConfigKeys.IKEY_ANDROID_DEVICE: [{ + keys.ConfigKeys.IKEY_SERIAL: + args.serial, + keys.ConfigKeys.IKEY_GCOV_RESOURCES_PATH: + args.gcov_rescource_path, + }], + keys.ConfigKeys.IKEY_OUTPUT_COVERAGE_REPORT: + True, + keys.ConfigKeys.IKEY_GLOBAL_COVERAGE: + True + } + coverage = CoverageFeature(user_params) + if args.operation == "init_coverage": + coverage.InitializeDeviceCoverage(serial=args.serial) + elif args.operation == "get_coverage": + if args.report_prefix: + coverage.SetCoverageReportFilePrefix(args.report_prefix) + if args.report_path: + coverage.SetCoverageReportDirectory(args.report_path) + coverage.SetCoverageData(serial=args.serial, isGlobal=True) diff --git a/utils/python/coverage/file_summary.py b/utils/python/coverage/file_summary.py new file mode 100644 index 000000000..211188a8e --- /dev/null +++ b/utils/python/coverage/file_summary.py @@ -0,0 +1,42 @@ +# +# Copyright (C) 2016 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. +# + + +class FileSummary(object): + """Summarizes structure and coverage information from GCC output. + + Represents the data in .gcno and .gcda files. + + Attributes: + functions: Dictionary of FunctionSummary objects for each function described + in a GCNO file (key: integer ident, value: FunctionSummary object) + """ + + def __init__(self): + """Inits the object with an empty list in its functions attribute. + """ + self.functions = {} + + def __str__(self): + """Serializes the summary as a string. + + Returns: + String representation of the functions, blocks, arcs, and lines. + """ + output = 'Coverage Summary:\r\n' + for ident in self.functions: + output += str(self.functions[ident]) + return output diff --git a/utils/python/coverage/function_summary.py b/utils/python/coverage/function_summary.py new file mode 100644 index 000000000..3cf89ea7e --- /dev/null +++ b/utils/python/coverage/function_summary.py @@ -0,0 +1,102 @@ +# +# Copyright (C) 2016 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. +# + + +class FunctionSummary(object): + """Summarizes a function and its blocks from .gcno file. + + Attributes: + blocks: list of BlockSummary objects for each block in the function. + ident: integer function identifier. + name: function name. + src_file_name: name of source file containing the function. + first_line_number: integer line number at which the function begins in + srcFile. + """ + + def __init__(self, ident, name, src_file_name, first_line_number): + """Inits the function summary with provided values. + + Stores the identification string, name, source file name, and + first line number in the object attributes. Initializes the block + attribute to the empty list. + + Args: + ident: integer function identifier. + name: function name. + src_file_name: name of source file containing the function. + first_line_number: integer line number at which the function begins in + the source file. + """ + self.blocks = [] + self.ident = ident + self.name = name + self.src_file_name = src_file_name + self.first_line_number = first_line_number + + def Resolve(self): + """Resolves the block and arc counts. + + Using the edges that were resolved by the GCDA file, + counts are resolved in the unresolved arcs. Then, block + counts are resolved by summing the counts along arcs entering + the block. + + Returns: + True if the counts could be resolved and False otherwise. + """ + + unresolved_arcs = [] + for block in self.blocks: + for arc in block.exit_arcs: + if not arc.resolved: + unresolved_arcs.append(arc) + + index = 0 + prev_length = len(unresolved_arcs) + 1 + # Resolve the arc counts + while len(unresolved_arcs) > 0: + index = index % len(unresolved_arcs) + if index == 0 and len(unresolved_arcs) == prev_length: + return False + else: + prev_length = len(unresolved_arcs) + arc = unresolved_arcs[index] + if arc.Resolve(): + unresolved_arcs.remove(arc) + else: + index = index + 1 + + # Resolve the block counts + for block in self.blocks: + if len(block.entry_arcs): + block.count = sum(arc.count for arc in block.entry_arcs) + else: + block.count = sum(arc.count for arc in block.exit_arcs) + + return True + + def __str__(self): + """Serializes the function summary as a string. + + Returns: + String representation of the functions and its blocks. + """ + output = ('Function: %s : %s\r\n\tFirst Line Number:%i\r\n' % + (self.src_file_name, self.name, self.first_line_number)) + for b in self.blocks: + output += str(b) + return output diff --git a/utils/python/coverage/function_summary_test.py b/utils/python/coverage/function_summary_test.py new file mode 100644 index 000000000..16ea4db99 --- /dev/null +++ b/utils/python/coverage/function_summary_test.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python +# +# Copyright (C) 2016 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. +# + +import os +import unittest + +from vts.utils.python.coverage import arc_summary +from vts.utils.python.coverage import block_summary +from vts.utils.python.coverage import function_summary + + +class FunctionSummaryTest(unittest.TestCase): + """Tests for FunctionSummary of vts.utils.python.coverage. + """ + + def setUp(self): + """Creates a function summary and a chain of blocks. + + Creates an arc between adjacent blocks. All arcs are left with default + values (unresolved, count of 0). + """ + self.n = 10 + self.count = 5 + self.function_summary = function_summary.FunctionSummary(0, 'test', + 'test.c', 0) + self.function_summary.blocks = [block_summary.BlockSummary(i, 0) + for i in range(self.n)] + self.arcs = [] + for i in range(1, self.n): + arc = arc_summary.ArcSummary(self.function_summary.blocks[i - 1], + self.function_summary.blocks[i], 0) + self.function_summary.blocks[i - 1].exit_arcs.append(arc) + self.function_summary.blocks[i].entry_arcs.append(arc) + self.arcs.append(arc) + + def testResolveChainStart(self): + """Tests for correct resolution in a long chain. + + Test resolution for the case when there is a chain of unresolved arcs + after a resolved arc. + """ + self.arcs[0].resolved = True + self.arcs[0].count = self.count + + self.function_summary.Resolve() + for arc in self.arcs: + self.assertTrue(arc.resolved) + self.assertEqual(self.count, arc.count) + self.assertEqual(self.count, arc.src_block.count) + self.assertEqual(self.count, arc.dst_block.count) + + def testResolveChainEnd(self): + """Tests for correct resolution in a long chain. + + Test resolution for the case when there is a chain of unresolved arcs + before a resolved arc. + """ + self.arcs[-1].resolved = True + self.arcs[-1].count = self.count + + self.function_summary.Resolve() + for arc in self.arcs: + self.assertTrue(arc.resolved) + self.assertEqual(self.count, arc.count) + self.assertEqual(self.count, arc.src_block.count) + self.assertEqual(self.count, arc.dst_block.count) + + def testResolveFailure(self): + """Tests for failure when no progress can be made. + + Test that Resolve() returns False when there is not enough information + to resolve any arcs. + """ + self.assertFalse(self.function_summary.Resolve()) + + +if __name__ == "__main__": + unittest.main() diff --git a/utils/python/coverage/gcda_parser.py b/utils/python/coverage/gcda_parser.py new file mode 100644 index 000000000..b2dbc3cf3 --- /dev/null +++ b/utils/python/coverage/gcda_parser.py @@ -0,0 +1,192 @@ +# +# Copyright (C) 2016 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. +# +"""Parses the contents of a GCDA file generated by the GCC compiler. + +The parse() function updates a summary object, which was created by +the GCNO parser, and includes coverage information along arcs and at +code blocks. + + + Typical usage example: + + parse(file_name, file_summary) +""" + +import struct +import sys + +from vts.utils.python.coverage import parser +from vts.utils.python.coverage import gcno_parser + +class GCDAParser(parser.GcovStreamParserUtil): + """Parser object class stores stateful information for parsing GCDA files. + + Stores the file stream and a FileSummary object as it is updated. + + Attributes: + checksum: The checksum (int) of the file + file_summary: The FileSummary object describing the source file + format: Character denoting the endianness of the file + stream: File stream object for a GCDA file + """ + + MAGIC = 0x67636461 + TAG_FUNCTION = 0x01000000 + TAG_COUNTER = 0x01a10000 + TAG_OBJECT = 0xa1000000 + TAG_PROGRAM = 0xa3000000 + + def __init__(self, stream): + """Inits the parser with the input stream and default values. + + The byte order is set by default to little endian and the summary file + must be provided from the output of the GCNOparser. + + Args: + stream: An input binary file stream to a .gcno file + """ + self._file_summary = None + super(GCDAParser, self).__init__(stream, self.MAGIC) + + @property + def file_summary(self): + """Gets the FileSummary object where coverage data is stored. + + Returns: + A FileSummary object. + """ + return self._file_summary + + @file_summary.setter + def file_summary(self, file_summary): + """Sets the FileSummary object in which to store coverage data. + + Args: + file_summary: A FileSummary object from a processed gcno file + """ + self._file_summary = file_summary + + def Parse(self, file_summary): + """Runs the parser on the file opened in the stream attribute. + + Reads coverage information from the GCDA file stream and resolves + block and edge weights. + + Returns: + FileSummary object representing the coverage for functions, blocks, + arcs, and lines in the opened GCNO file. + + Raises: + parser.FileFormatError: invalid file format or invalid counts. + """ + self.file_summary = file_summary + func = None + + while True: + tag = str() + + try: + while True: + tag = self.ReadInt() + if (tag == self.TAG_FUNCTION or tag == self.TAG_COUNTER or + tag == self.TAG_OBJECT or tag == self.TAG_PROGRAM): + break + length = self.ReadInt() + except parser.FileFormatError: + return self.file_summary # end of file reached + + if tag == self.TAG_FUNCTION: + func = self.ReadFunction(length) + elif tag == self.TAG_COUNTER: + self.ReadCounts(func) + if not func.Resolve(): + raise parser.FileFormatError( + "Corrupt file: Counts could not be resolved.") + elif tag == self.TAG_OBJECT: + pass + elif tag == self.TAG_PROGRAM: + self.ReadInt() # checksum + for i in range(length - 1): + self.ReadInt() + + def ReadFunction(self, length): + """Reads a function header from the stream. + + Reads information about a function from the gcda file stream and + returns the function. + + Args: + func: the function for which coverage information will be read. + + Raises: + parser.FileFormatError: Corrupt file. + """ + ident = self.ReadInt() + func = self.file_summary.functions[ident] + checksum = self.ReadInt() + words_read = 3 + if int(self.version[1]) > 4: + self.ReadInt() + words_read = 4 + + if words_read < length: + gcda_name = self.ReadString() + + return func + + def ReadCounts(self, func): + """Reads arc counts from the stream. + + Reads counts from the gcda file stream for arcs that are not + fake and are not in the tree. Updates their counts and marks them + as having resolved counts. + + Args: + func: FunctionSummary for which arc counts will be read. + """ + for block in func.blocks: + for arc in block.exit_arcs: + if not arc.fake and not arc.on_tree: + count = self.ReadInt64() + arc.count = count + arc.resolved = True + + +def ParseGcdaFile(file_name, file_summary): + """Parses the .gcno file specified by the input. + + Reads the .gcno file specified and parses the information describing + basic blocks, functions, and arcs. + + Args: + file_name: A string file path to a .gcno file + file_summary: The summary from a parsed gcno file + + Returns: + A summary object containing information about the coverage for each + block in each function. + """ + + with open(file_name, 'rb') as stream: + return GCDAParser(stream).Parse(file_summary) + + +if __name__ == '__main__': + if len(sys.argv) != 2: + print('usage: gcda_parser.py [gcda file name] [gcno file name]') + else: + file_summary = gcno_parser.ParseGcnoFile(sys.argv[2]) + print(str(ParseGcdaFile(sys.argv[1], file_summary))) diff --git a/utils/python/coverage/gcda_parser_test.py b/utils/python/coverage/gcda_parser_test.py new file mode 100644 index 000000000..df1b4b062 --- /dev/null +++ b/utils/python/coverage/gcda_parser_test.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python +# +# Copyright (C) 2016 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. +# +import os +import unittest + +from vts.utils.python.coverage import arc_summary +from vts.utils.python.coverage import block_summary +from vts.utils.python.coverage import file_summary +from vts.utils.python.coverage import function_summary +from vts.utils.python.coverage import gcda_parser +from vts.utils.python.coverage import gcno_parser +from vts.utils.python.coverage.parser_test import MockStream + + +class GCDAParserTest(unittest.TestCase): + """Tests for GCDA parser of vts.utils.python.coverage. + """ + + GOLDEN_GCNO_PATH = 'testdata/sample.gcno' + GOLDEN_GCDA_PATH = 'testdata/sample.gcda' + + def setUp(self): + """Creates a stream for each test. + """ + self.stream = MockStream(gcda_parser.GCDAParser.MAGIC) + + def testReadFunction(self): + """Verifies that the correct function is read and returned. + """ + ident = 100 + checksum = 0 + fs = file_summary.FileSummary() + func = function_summary.FunctionSummary(ident, 'test', 'test.c', 0) + fs.functions[ident] = func + self.stream = MockStream.concat_int(self.stream, ident) + self.stream = MockStream.concat_int(self.stream, 0) + self.stream = MockStream.concat_int(self.stream, 0) + self.stream = MockStream.concat_string(self.stream, 'test') + length = 5 + parser = gcda_parser.GCDAParser(self.stream) + parser.file_summary = fs + func = parser.ReadFunction(5) + assert (func.ident == ident) + + def testReadCountsNormal(self): + """Verifies that counts are read correctly. + + Verifies that arcs are marked as resolved and count is correct. + """ + n = 5 + fs = file_summary.FileSummary() + func = function_summary.FunctionSummary(0, 'test', 'test.c', 0) + blocks = [block_summary.BlockSummary(i, 0) for i in range(n)] + func.blocks = blocks + fs.functions[func.ident] = func + for i in range(1, n): + arc = arc_summary.ArcSummary(blocks[0], blocks[i], 0) + blocks[0].exit_arcs.append(arc) + blocks[i].entry_arcs.append(arc) + self.stream = MockStream.concat_int64(self.stream, i) + parser = gcda_parser.GCDAParser(self.stream) + parser.file_summary = fs + parser.ReadCounts(func) + for i, arc in zip(range(1, n), blocks[0].exit_arcs): + self.assertEqual(i, arc.count) + self.assertTrue(arc.resolved) + + def testReadCountsFakeOrOnTree(self): + """Verifies that counts are read correctly when there are skipped arcs. + + Verifies that the fake arc and the arc on the tree are skipped while other + arcs are read and resolved correctly. + """ + n = 10 + fs = file_summary.FileSummary() + func = function_summary.FunctionSummary(0, 'test', 'test.c', 0) + blocks = [block_summary.BlockSummary(i, 0) for i in range(n)] + func.blocks = blocks + fs.functions[func.ident] = func + + arc = arc_summary.ArcSummary(blocks[0], blocks[1], + arc_summary.ArcSummary.GCOV_ARC_FAKE) + blocks[0].exit_arcs.append(arc) + blocks[1].entry_arcs.append(arc) + + arc = arc_summary.ArcSummary(blocks[0], blocks[2], + arc_summary.ArcSummary.GCOV_ARC_ON_TREE) + blocks[0].exit_arcs.append(arc) + blocks[2].entry_arcs.append(arc) + + for i in range(3, n): + arc = arc_summary.ArcSummary(blocks[0], blocks[i], 0) + blocks[0].exit_arcs.append(arc) + blocks[i].entry_arcs.append(arc) + self.stream = MockStream.concat_int64(self.stream, i) + + parser = gcda_parser.GCDAParser(self.stream) + parser.file_summary = fs + parser.ReadCounts(func) + self.assertFalse(blocks[0].exit_arcs[0].resolved) + self.assertFalse(blocks[0].exit_arcs[1].resolved) + for i, arc in zip(range(3, n), blocks[0].exit_arcs[2:]): + self.assertEqual(i, arc.count) + self.assertTrue(arc.resolved) + + def testSampleFile(self): + """Asserts correct parsing of sample GCDA file. + + Verifies the block coverage counts for each function. + """ + dir_path = os.path.dirname(os.path.realpath(__file__)) + gcno_path = os.path.join(dir_path, self.GOLDEN_GCNO_PATH) + gcda_path = os.path.join(dir_path, self.GOLDEN_GCDA_PATH) + summary = gcno_parser.ParseGcnoFile(gcno_path) + gcda_parser.ParseGcdaFile(gcda_path, summary) + # Function: main + expected_list = [2, 0, 2, 2, 2, 0, 2, 2, 500, 502, 2, 2] + for index, expected in zip(range(len(expected_list)), expected_list): + self.assertEqual(summary.functions[3].blocks[index].count, + expected) + + # Function: testFunctionName + expected_list = [2, 2, 2, 2, 2] + for index, expected in zip(range(len(expected_list)), expected_list): + self.assertEqual(summary.functions[4].blocks[index].count, + expected) + + +if __name__ == "__main__": + unittest.main() diff --git a/utils/python/coverage/gcno_parser.py b/utils/python/coverage/gcno_parser.py new file mode 100644 index 000000000..62bafd9fb --- /dev/null +++ b/utils/python/coverage/gcno_parser.py @@ -0,0 +1,242 @@ +# +# Copyright (C) 2016 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. +# +"""Parses the contents of a GCNO file generated by the GCC compiler. + +The parse() function returns a FileSummary object, which +contains descriptions of all functions in the parsed .gcno file. Each +FunctionSummary object describes the code blocks within each function, +the line numbers associated within each block, and the arcs exiting/entering +each block. + + + Typical usage example: + + summary = parse(file_name) +""" + +import math +import struct +import sys + +from vts.utils.python.coverage import arc_summary +from vts.utils.python.coverage import block_summary +from vts.utils.python.coverage import file_summary +from vts.utils.python.coverage import function_summary +from vts.utils.python.coverage import parser + + +class GCNOParser(parser.GcovStreamParserUtil): + """Parser object class stores stateful information for parsing GCNO file. + + Stores the file stream and summary object as it is updated. + + Attributes: + checksum: The checksum (int) of the file + file_summary: The FileSummary object describing the GCNO file + format: Character denoting the endianness of the file + parsed: True if the content has been parsed, False otherwise + stream: File stream object for a GCNO file + version: The (integer) version of the GCNO file + """ + + MAGIC = 0x67636e6f + TAG_FUNCTION = 0x01000000 + TAG_BLOCKS = 0x01410000 + TAG_ARCS = 0x01430000 + TAG_LINES = 0x01450000 + BYTES_IN_WORD = 4 + HEADER_LENGTH = 3 # number of words in a section header + + def __init__(self, stream): + """Inits the parser with the input stream and default values. + + The byte order is set by default to little endian and the summary file + is instantiated with an empty FileSummary object. + + Args: + stream: An input binary file stream to a .gcno file + """ + super(GCNOParser, self).__init__(stream, self.MAGIC) + self.file_summary = file_summary.FileSummary() + self.parsed = False + + def Parse(self): + """Runs the parser on the file opened in the stream attribute. + + Reads the binary file and extracts functions, blocks, arcs, and + lines. Information is stored the summary attribute. + + Returns: + FileSummary object representing the functions, blocks, arcs, + and lines in the opened GCNO file. + + Raises: + parser.FileFormatError: invalid file format. + """ + if self.parsed: + return self.file_summary + + func = None + + while True: + tag = str() + + try: + while True: + tag = self.ReadInt() + if (tag == self.TAG_FUNCTION or tag == self.TAG_BLOCKS or + tag == self.TAG_ARCS or tag == self.TAG_LINES): + break + length = self.ReadInt() + except parser.FileFormatError: + if not func: + raise parser.FileFormatError("Invalid file.") + self.file_summary.functions[func.ident] = func + self.parsed = True + return self.file_summary # end of file reached + + if tag == self.TAG_FUNCTION: + if func: + self.file_summary.functions[func.ident] = func + func = self.ReadFunction() + + elif tag == self.TAG_BLOCKS: + self.ReadBlocks(length, func) + + elif tag == self.TAG_ARCS: + self.ReadArcs(length, func) + + elif tag == self.TAG_LINES: + self.ReadLines(length, func) + + def ReadFunction(self): + """Reads and returns a function from the stream. + + Reads information about a function from the gcno file stream and + returns a summary object. + + Returns: + FunctionSummary object containing the function name, source file, + and first line number. + + Raises: + parser.FileFormatError: Function could not be read. + """ + ident = self.ReadInt() + self.ReadInt() # line number checksum + if int(self.version[1]) > 4: + self.ReadInt() # configuration checksum + name = self.ReadString() + source_file_name = self.ReadString() + first_line_number = self.ReadInt() + return function_summary.FunctionSummary(ident, name, source_file_name, + first_line_number) + + def ReadBlocks(self, length, func): + """Reads the basic block information from the stream. + + Reads information about the basic blocks from the gcno file + stream and updates the specified function. + + Args: + length: number of blocks to read + func: FunctionSummary object for the blocks' parent function + + Raises: + parser.FileFormatError: Blocks could not be read. Corrupt file. + """ + + blocks = [] + for _ in range(length): + block_flag = self.ReadInt() + block = block_summary.BlockSummary(len(blocks), block_flag) + blocks.append(block) + func.blocks.extend(blocks) + + def ReadArcs(self, length, func): + """Reads the arcs from the stream. + + Parses the arcs from the gcno file and updates the input + function summary with arc information. + + Args: + length: represents the number of bytes to read + func: FunctionSummary object for the arcs' parent fuction + + Raises: + parser.FileFormatError: Arcs could not be read. Corrupt file. + """ + + src_block_index = self.ReadInt() + src_block = func.blocks[src_block_index] + n_arcs = (length - 1) / 2 + arcs = [] + for _ in range(n_arcs): + dst_block_index = self.ReadInt() + dst_block = func.blocks[dst_block_index] + flag = self.ReadInt() + arc = arc_summary.ArcSummary(src_block, dst_block, flag) + src_block.exit_arcs.append(arc) + dst_block.entry_arcs.append(arc) + + def ReadLines(self, length, func): + """Reads the line information from the stream. + + Parses the lines from the gcno file and updates the input + function summary with line information. + + Args: + length: represents the number of bytes to read + func: FunctionSummary object for the lines' parent fuction + + Raises: + parser.FileFormatError: Lines could not be read. Corrupt file. + """ + + block_number = self.ReadInt() + self.ReadInt() + lines = [] + src = self.ReadString() # source file name + src_length = int(math.ceil(len(src) * 1.0 / self.BYTES_IN_WORD)) + 1 + for i in range(length - src_length - self.HEADER_LENGTH): + line = self.ReadInt() + if line: + lines.append(line) + func.blocks[block_number].lines = lines + + +def ParseGcnoFile(file_name): + """Parses the .gcno file specified by the input. + + Reads the .gcno file specified and parses the information describing + basic blocks, functions, and arcs. + + Args: + file_name: A string file path to a .gcno file + + Returns: + A FileSummary object containing information about all of the + fuctions, blocks, and arcs in the .gcno file. + """ + + with open(file_name, 'rb') as stream: + return GCNOParser(stream).Parse() + +if __name__ == '__main__': + if len(sys.argv) < 3 or sys.argv[1] != '-f': + print('usage: gcno_parser.py -f [file name]') + else: + print(str(ParseGcnoFile(sys.argv[2]))) diff --git a/utils/python/coverage/gcno_parser_test.py b/utils/python/coverage/gcno_parser_test.py new file mode 100644 index 000000000..9918817a7 --- /dev/null +++ b/utils/python/coverage/gcno_parser_test.py @@ -0,0 +1,219 @@ +#!/usr/bin/env python +# +# Copyright (C) 2016 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. +# + +import math +import os +import struct +import unittest + +from vts.utils.python.coverage import arc_summary +from vts.utils.python.coverage import block_summary +from vts.utils.python.coverage import function_summary +from vts.utils.python.coverage import gcno_parser +from vts.utils.python.coverage.parser_test import MockStream + + +class GCNOParserTest(unittest.TestCase): + """Tests for GCNO parser of vts.utils.python.coverage. + + Ensures error handling, byte order detection, and correct + parsing of functions, blocks, arcs, and lines. + """ + + GOLDEN_GCNO_PATH = 'testdata/sample.gcno' + + def setUp(self): + """Creates a stream for each test. + """ + self.stream = MockStream() + + def testReadFunction(self): + """Asserts that the function is read correctly. + + Verifies that ident, name, source file name, + and first line number are all read correctly. + """ + ident = 102010 + self.stream = MockStream.concat_int(self.stream, ident) + self.stream = MockStream.concat_int(self.stream, 0) + self.stream = MockStream.concat_int(self.stream, 0) + name = "TestFunction" + src_file_name = "TestSouceFile.c" + first_line_number = 102 + self.stream = MockStream.concat_string(self.stream, name) + self.stream = MockStream.concat_string(self.stream, src_file_name) + self.stream = MockStream.concat_int(self.stream, first_line_number) + parser = gcno_parser.GCNOParser(self.stream) + summary = parser.ReadFunction() + self.assertEqual(name, summary.name) + self.assertEqual(ident, summary.ident) + self.assertEqual(src_file_name, summary.src_file_name) + self.assertEqual(first_line_number, summary.first_line_number) + + def testReadBlocks(self): + """Asserts that blocks are correctly read from the stream. + + Tests correct values for flag and index. + """ + n_blocks = 10 + func = function_summary.FunctionSummary(0, "func", "src.c", 1) + for i in range(n_blocks): + self.stream = MockStream.concat_int(self.stream, 3 * i) + parser = gcno_parser.GCNOParser(self.stream) + parser.ReadBlocks(n_blocks, func) + self.assertEqual(len(func.blocks), n_blocks) + for i in range(n_blocks): + self.assertEqual(func.blocks[i].flag, 3 * i) + self.assertEqual(func.blocks[i].index, i) + + def testReadArcsNormal(self): + """Asserts that arcs are correctly read from the stream. + + Does not test the use of flags. Validates that arcs are + created in both blocks and the source/destination are + correct for each. + """ + n_blocks = 50 + func = function_summary.FunctionSummary(0, "func", "src.c", 1) + func.blocks = [block_summary.BlockSummary(i, 3 * i) + for i in range(n_blocks)] + src_block_index = 0 + skip = 2 + self.stream = MockStream.concat_int(self.stream, src_block_index) + for i in range(src_block_index + 1, n_blocks, skip): + self.stream = MockStream.concat_int(self.stream, i) + self.stream = MockStream.concat_int( + self.stream, 0) # no flag applied to the arc + parser = gcno_parser.GCNOParser(self.stream) + n_arcs = len(range(src_block_index + 1, n_blocks, skip)) + parser.ReadArcs(n_arcs * 2 + 1, func) + j = 0 + for i in range(src_block_index + 1, n_blocks, skip): + self.assertEqual( + func.blocks[src_block_index].exit_arcs[j].src_block.index, + src_block_index) + self.assertEqual( + func.blocks[src_block_index].exit_arcs[j].dst_block.index, i) + self.assertEqual(func.blocks[i].entry_arcs[0].src_block.index, + src_block_index) + self.assertEqual(func.blocks[i].entry_arcs[0].dst_block.index, i) + j += 1 + + def testReadArcFlags(self): + """Asserts that arc flags are correctly interpreted. + """ + n_blocks = 5 + func = function_summary.FunctionSummary(0, "func", "src.c", 1) + func.blocks = [block_summary.BlockSummary(i, 3 * i) + for i in range(n_blocks)] + self.stream = MockStream.concat_int(self.stream, + 0) # source block index + + self.stream = MockStream.concat_int(self.stream, 1) # normal arc + self.stream = MockStream.concat_int(self.stream, 0) + + self.stream = MockStream.concat_int(self.stream, 2) # on-tree arc + self.stream = MockStream.concat_int( + self.stream, arc_summary.ArcSummary.GCOV_ARC_ON_TREE) + + self.stream = MockStream.concat_int(self.stream, 3) # fake arc + self.stream = MockStream.concat_int( + self.stream, arc_summary.ArcSummary.GCOV_ARC_FAKE) + + self.stream = MockStream.concat_int(self.stream, 4) # fallthrough arc + self.stream = MockStream.concat_int( + self.stream, arc_summary.ArcSummary.GCOV_ARC_FALLTHROUGH) + + parser = gcno_parser.GCNOParser(self.stream) + parser.ReadArcs(4 * 2 + 1, func) + + self.assertFalse(func.blocks[0].exit_arcs[0].on_tree) + self.assertFalse(func.blocks[0].exit_arcs[0].fake) + self.assertFalse(func.blocks[0].exit_arcs[0].fallthrough) + + self.assertTrue(func.blocks[0].exit_arcs[1].on_tree) + self.assertFalse(func.blocks[0].exit_arcs[1].fake) + self.assertFalse(func.blocks[0].exit_arcs[1].fallthrough) + + self.assertFalse(func.blocks[0].exit_arcs[2].on_tree) + self.assertTrue(func.blocks[0].exit_arcs[2].fake) + self.assertFalse(func.blocks[0].exit_arcs[2].fallthrough) + + self.assertFalse(func.blocks[0].exit_arcs[3].on_tree) + self.assertFalse(func.blocks[0].exit_arcs[3].fake) + self.assertTrue(func.blocks[0].exit_arcs[3].fallthrough) + + def testReadLines(self): + """Asserts that lines are read correctly. + + Blocks must have correct references to the lines contained + in the block. + """ + self.stream = MockStream.concat_int(self.stream, 2) # block number + self.stream = MockStream.concat_int(self.stream, 0) # dummy + name = "src.c" + name_length = int( + math.ceil(1.0 * len(name) / MockStream.BYTES_PER_WORD)) + 1 + self.stream = MockStream.concat_string(self.stream, name) + n_arcs = 5 + for i in range(1, n_arcs + 1): + self.stream = MockStream.concat_int(self.stream, i) + + n_blocks = 5 + func = function_summary.FunctionSummary(0, "func", name, 1) + func.blocks = [block_summary.BlockSummary(i, 3 * i) + for i in range(n_blocks)] + parser = gcno_parser.GCNOParser(self.stream) + parser.ReadLines(n_arcs + name_length + 3, func) + self.assertEqual(len(func.blocks[2].lines), 5) + self.assertEqual(func.blocks[2].lines, range(1, 6)) + + def testSampleFile(self): + """Asserts correct parsing of sample GCNO file. + + Verifies the blocks and lines for each function in + the file. + """ + dir_path = os.path.dirname(os.path.realpath(__file__)) + file_path = os.path.join(dir_path, self.GOLDEN_GCNO_PATH) + summary = gcno_parser.ParseGcnoFile(file_path) + self.assertEqual(len(summary.functions), 2) + + # Check function: testFunctionName + func = summary.functions[4] + self.assertEqual(func.name, 'testFunctionName') + self.assertEqual(func.src_file_name, 'sample.c') + self.assertEqual(func.first_line_number, 35) + self.assertEqual(len(func.blocks), 5) + expected_list = [[], [], [35, 40, 41], [42], []] + for index, expected in zip(range(5), expected_list): + self.assertEqual(func.blocks[index].lines, expected) + + # Check function: main + func = summary.functions[3] + self.assertEqual(func.name, 'main') + self.assertEqual(func.first_line_number, 5) + self.assertEqual(len(func.blocks), 12) + self.assertEqual(func.blocks[0].lines, []) + expected_list = [[], [], [5, 11, 12, 13], [15], [17], [18], [20], + [23, 24, 25], [26, 25], [], [29], [31]] + for index, expected in zip(range(12), expected_list): + self.assertEqual(func.blocks[index].lines, expected) + + +if __name__ == "__main__": + unittest.main() diff --git a/utils/python/coverage/parser.py b/utils/python/coverage/parser.py new file mode 100644 index 000000000..fbee8738b --- /dev/null +++ b/utils/python/coverage/parser.py @@ -0,0 +1,116 @@ +# +# Copyright (C) 2016 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. +# +"""Generic parser class for reading GCNO and GCDA files. + +Implements read functions for strings, 32-bit integers, and +64-bit integers. +""" + +import struct + + +class FileFormatError(Exception): + """Exception for invalid file format. + + Thrown when an unexpected value type is read from the file stream + or when the end of file is reached unexpectedly.""" + + pass + + +class GcovStreamParserUtil(object): + """Parser object for storing the stream and format information. + + Attributes: + stream: File stream object for a GCNO file + format: Character denoting the endianness of the file + checksum: The checksum (int) of the file + """ + + def __init__(self, stream, magic): + """Inits the parser with the input stream. + + The byte order is set by default to little endian and the summary file + is instantiated with an empty GCNOSummary object. + + Args: + stream: An input binary file stream to a .gcno file + gcno_summary: The summary from a parsed gcno file + """ + self.stream = stream + self.format = '<' + + tag = self.ReadInt() + self.version = ''.join( + struct.unpack(self.format + 'ssss', self.stream.read(4))) + self.checksum = self.ReadInt() + + if tag != magic: + tag = struct.unpack('>I', struct.pack('<I', tag))[0] + if tag == magic: # switch endianness + self.format = '>' + else: + raise FileFormatError('Invalid file format.') + + def ReadInt(self): + """Reads and returns an integer from the stream. + + Returns: + A 4-byte integer from the stream attribute. + + Raises: + FileFormatError: Corrupt file. + """ + try: + return struct.unpack(self.format + 'I', self.stream.read(4))[0] + except (TypeError, ValueError, struct.error) as error: + raise FileFormatError('Corrupt file.') + + def ReadInt64(self): + """Reads and returns a 64-bit integer from the stream. + + Returns: + An 8-byte integer from the stream attribute. + + Raises: + FileFormatError: Corrupt file. + """ + lo = self.ReadInt() + hi = self.ReadInt() + return (hi << 32) | lo + + def ReadString(self): + """Reads and returns a string from the stream. + + First reads an integer denoting the number of words to read, + then reads and returns the string with trailing padding characters + stripped. + + Returns: + A string from the stream attribute. + + Raises: + FileFormatError: End of file reached. + """ + length = self.ReadInt() << 2 + if length > 0: + try: + return ''.join( + struct.unpack(self.format + 's' * length, self.stream.read( + length))).rstrip('\x00') + except (TypeError, ValueError, struct.error): + raise FileFormatError('Corrupt file.') + return str() diff --git a/utils/python/coverage/parser_test.py b/utils/python/coverage/parser_test.py new file mode 100644 index 000000000..0916f9a8a --- /dev/null +++ b/utils/python/coverage/parser_test.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python +# +# Copyright (C) 2016 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. +# + +import math +import os +import struct +import unittest + +from vts.utils.python.coverage import parser + +MAGIC = 0x67636e6f + + +class MockStream(object): + """MockStream object allows for mocking file reading behavior. + + Allows for adding integers and strings to the file stream in a + specified byte format and then reads them as if from a file. + + Attributes: + content: the byte list representing a file stream + cursor: the index into the content such that everything before it + has been read already. + """ + BYTES_PER_WORD = 4 + + def __init__(self, magic=MAGIC, format='<'): + self.format = format + self.magic = magic + version = struct.unpack(format + 'I', '*802')[0] + self.content = struct.pack(format + 'III', magic, version, 0) + self.cursor = 0 + + @classmethod + def concat_int(cls, stream, integer): + """Returns the stream with a binary formatted integer concatenated. + + Args: + stream: the stream to which the integer will be concatenated. + integer: the integer to be concatenated to the content stream. + format: the string format decorator to apply to the integer. + + Returns: + The content with the binary-formatted integer concatenated. + """ + new_content = stream.content + struct.pack(stream.format + 'I', + integer) + s = MockStream(stream.magic, stream.format) + s.content = new_content + s.cursor = stream.cursor + return s + + @classmethod + def concat_int64(cls, stream, integer): + """Returns the stream with a binary formatted int64 concatenated. + + Args: + stream: the stream to which the integer will be concatenated. + integer: the 8-byte int to be concatenated to the content stream. + format: the string format decorator to apply to the long. + + Returns: + The content with the binary-formatted int64 concatenated. + """ + lo = ((1 << 32) - 1) & integer + hi = (integer - lo) >> 32 + new_content = stream.content + struct.pack(stream.format + 'II', lo, + hi) + s = MockStream(stream.magic, stream.format) + s.content = new_content + s.cursor = stream.cursor + return s + + @classmethod + def concat_string(cls, stream, string): + """Returns the stream with a binary formatted string concatenated. + + Preceeds the string with an integer representing the number of + words in the string. Pads the string so that it is word-aligned. + + Args: + stream: the stream to which the string will be concatenated. + string: the string to be concatenated to the content stream. + format: the string format decorator to apply to the integer. + + Returns: + The content with the formatted binary string concatenated. + """ + byte_count = len(string) + word_count = int( + math.ceil(byte_count * 1.0 / MockStream.BYTES_PER_WORD)) + padding = '\x00' * ( + MockStream.BYTES_PER_WORD * word_count - byte_count) + new_content = stream.content + struct.pack( + stream.format + 'I', word_count) + bytes(string + padding) + s = MockStream(stream.magic, stream.format) + s.content = new_content + s.cursor = stream.cursor + return s + + def read(self, n_bytes): + """Reads the specified number of bytes from the content stream. + + Args: + n_bytes: integer number of bytes to read. + + Returns: + The string of length n_bytes beginning at the cursor location + in the content stream. + """ + content = self.content[self.cursor:self.cursor + n_bytes] + self.cursor += n_bytes + return content + + +class ParserTest(unittest.TestCase): + """Tests for stream parser of vts.utils.python.coverage. + + Ensures error handling, byte order detection, and correct + parsing of integers and strings. + """ + + def setUp(self): + """Creates a stream for each test. + """ + self.stream = MockStream() + + def testLittleEndiannessInitialization(self): + """Tests parser init with little-endian byte order. + + Verifies that the byte-order is correctly detected. + """ + p = parser.GcovStreamParserUtil(self.stream, MAGIC) + self.assertEqual(p.format, '<') + + def testBigEndiannessInitialization(self): + """Tests parser init with big-endian byte order. + + Verifies that the byte-order is correctly detected. + """ + self.stream = MockStream(format='>') + p = parser.GcovStreamParserUtil(self.stream, MAGIC) + self.assertEqual(p.format, '>') + + def testReadIntNormal(self): + """Asserts that integers are correctly read from the stream. + + Tests the normal case--when the value is actually an integer. + """ + integer = 2016 + self.stream = MockStream.concat_int(self.stream, integer) + p = parser.GcovStreamParserUtil(self.stream, MAGIC) + self.assertEqual(p.ReadInt(), integer) + + def testReadIntEof(self): + """Asserts that an error is thrown when the EOF is reached. + """ + p = parser.GcovStreamParserUtil(self.stream, MAGIC) + self.assertRaises(parser.FileFormatError, p.ReadInt) + + def testReadInt64(self): + """Asserts that longs are read correctly. + """ + number = 68719476836 + self.stream = MockStream.concat_int64(self.stream, number) + p = parser.GcovStreamParserUtil(self.stream, MAGIC) + self.assertEqual(number, p.ReadInt64()) + + self.stream = MockStream(format='>') + self.stream = MockStream.concat_int64(self.stream, number) + p = parser.GcovStreamParserUtil(self.stream, MAGIC) + self.assertEqual(number, p.ReadInt64()) + + def testReadStringNormal(self): + """Asserts that strings are correctly read from the stream. + + Tests the normal case--when the string is correctly formatted. + """ + test_string = "This is a test." + self.stream = MockStream.concat_string(self.stream, test_string) + p = parser.GcovStreamParserUtil(self.stream, MAGIC) + self.assertEqual(p.ReadString(), test_string) + + def testReadStringError(self): + """Asserts that invalid string format raises error. + + Tests when the string length is too short and EOF is reached. + """ + test_string = "This is a test." + byte_count = len(test_string) + word_count = int(round(byte_count / 4.0)) + padding = '\x00' * (4 * word_count - byte_count) + test_string_padded = test_string + padding + content = struct.pack('<I', word_count + 1) # will cause EOF error + content += bytes(test_string_padded) + self.stream.content += content + p = parser.GcovStreamParserUtil(self.stream, MAGIC) + self.assertRaises(parser.FileFormatError, p.ReadString) + + +if __name__ == "__main__": + unittest.main() diff --git a/utils/python/coverage/sancov_parser.py b/utils/python/coverage/sancov_parser.py new file mode 100644 index 000000000..b74f94309 --- /dev/null +++ b/utils/python/coverage/sancov_parser.py @@ -0,0 +1,105 @@ +# +# Copyright (C) 2017 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. +# +"""Parses the contents of a sancov file generated by LLVM Sanitizer Coverage. + + + Typical usage example: + + ParseSancovFile(file_name) +""" + +import struct +import parser + + +MAGIC32 = 0xC0BFFFFFFFFFFF32 +MAGIC64 = 0xC0BFFFFFFFFFFF64 + + +class SancovParser(object): + """Sancov parser object to represent *.sancov files. + + Attributes: + _sancov_file: the stream-like file handle to a sancov file + _bitness: the bitness of the offsets (32/64) + _entry_type: the type of each offset (32bit->Integer, 64bit->Long) + """ + + def __init__(self, sancov_file): + """Inits the parser with the input stream and default values. + + Args: + sancov_file: An input binary file stream to a .sancov file + """ + self._sancov_file = sancov_file + self._bitness = -1 + self._entry_type = None + self._size = 0 + + def Parse(self): + """Runs the parser to generate the unpacked binary offsets in the file. + + Returns: + A tuple of offsets into the original binary. + + Raises: + parser.FileFormatError: invalid file format or invalid counts. + """ + self.GetBitness() + return struct.unpack_from( + self._entry_type * (self._size * 8 / self._bitness), + self._sancov_file.read(self._size)) + + def GetBitness(self): + """Parses the magic header to determine the bitness. + + Returns: + The sancov file bitness. + + Raises: + parser.FileFormatError: invalid file format or invalid counts. + """ + if self._bitness > 0: + return self._bitness + self._sancov_file.seek(0, 2) + self._size = self._sancov_file.tell() - 8 + self._sancov_file.seek(0, 0) + if self._size < 0: + raise parser.FileFormatError('Empty file.') + magic = struct.unpack('L', self._sancov_file.read(8))[0]; + if magic == MAGIC64: + self._entry_type = 'L' + self._bitness = 64 + elif magic == MAGIC32: + self._entry_type = 'I' + self._bitness = 32 + else: + raise parser.FileFormatError('Invalid magic.') + return self._bitness + +def ParseSancovFile(file_name): + """Parses the .sancov file specified by the input. + + Args: + file_name: A string file path to a .sancov file + + Returns: + A tuple of bitness, and the unpacked offsets into the original binary. + """ + with open(file_name, 'rb') as stream: + p = SancovParser(stream) + offsets = p.Parse() + return (p._bitness, offsets) diff --git a/utils/python/coverage/sancov_parser_test.py b/utils/python/coverage/sancov_parser_test.py new file mode 100644 index 000000000..852f2f2bf --- /dev/null +++ b/utils/python/coverage/sancov_parser_test.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python +# +# Copyright (C) 2017 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. +# + +import io +import struct +import unittest +import sys +import os + +import parser +import sancov_parser + + +class SancovParserTest(unittest.TestCase): + """Tests for sancov_parser in package vts.utils.python.coverage. + + Ensures error handling, bitness detection, and correct + parsing of offsets in the file.. + """ + + GOLDEN_SANCOV_PATH = os.path.join(sys.path[0], 'testdata/sample.sancov') + GOLDEN_EXPECTED_BITNESS = 64 + GOLDEN_EXPECTED_OFFSETS = ( + 12115, 12219, 12463, 12527, 17123, 17311, 17507, 17771, 17975, 17987, 18107, 18167, + 18299, 18503, 18571, 18743, 18755, 18791, 18903, 19127, 19715, 21027, 21123, 21223, + 21335, 21407, 21455, 21611, 21643, 21683, 23227, 23303, 23343, 23503, 23767, 23779, + 23791, 23819, 23867, 24615, 24651, 24743, 24775) + + def testInvalidMagic(self): + """Asserts that an exception is raised when the magic is invalid. + """ + stream = io.BytesIO(struct.pack('L', 0xC0BFFFFFFFFFFF10)) + p = sancov_parser.SancovParser(stream) + with self.assertRaises(parser.FileFormatError) as context: + p.Parse() + self.assertTrue('Invalid magic' in str(context.exception)) + + def testMagic32(self): + """Asserts that values are correctly read in 32-bit sancov files. + """ + stream = io.BytesIO(struct.pack('L', sancov_parser.MAGIC32)) + stream.seek(8) + values = (1, 2, 3) + stream.write(struct.pack('III', *values)) + stream.seek(0) + p = sancov_parser.SancovParser(stream) + s = p.Parse() + self.assertEqual(32, p._bitness) + self.assertEqual(values, s) + + def testMagic64(self): + """Asserts that values are correctly read in 64-bit sancov files. + """ + stream = io.BytesIO(struct.pack('L', sancov_parser.MAGIC64)) + stream.seek(8) + values = (4, 5, 6) + stream.write(struct.pack('LLL', *values)) + stream.seek(0) + p = sancov_parser.SancovParser(stream) + s = p.Parse() + self.assertEqual(64, p._bitness) + self.assertEqual(values, s) + + def testGetBitness32(self): + """Asserts that bitness is correctly determined from a 32-bit sancov file. + """ + stream = io.BytesIO(struct.pack('L', sancov_parser.MAGIC32)) + p = sancov_parser.SancovParser(stream) + self.assertEqual(32, p.GetBitness()) + + def testGetBitness64(self): + """Asserts that bitness is correctly determined from a 64-bit sancov file. + """ + stream = io.BytesIO(struct.pack('L', sancov_parser.MAGIC64)) + p = sancov_parser.SancovParser(stream) + self.assertEqual(64, p.GetBitness()) + + def testGolden(self): + """Asserts that offsets are correctly parsed from the golden file. + """ + bitness, offsets = sancov_parser.ParseSancovFile(self.GOLDEN_SANCOV_PATH) + self.assertEqual(self.GOLDEN_EXPECTED_BITNESS, bitness) + self.assertEqual(self.GOLDEN_EXPECTED_OFFSETS, offsets) + + + +if __name__ == "__main__": + unittest.main() diff --git a/utils/python/coverage/sancov_utils.py b/utils/python/coverage/sancov_utils.py new file mode 100644 index 000000000..17b0954c2 --- /dev/null +++ b/utils/python/coverage/sancov_utils.py @@ -0,0 +1,346 @@ +# +# Copyright (C) 2017 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. +import json +import logging +import os +import shutil +import subprocess +import tempfile +import zipfile + +from vts.runners.host import keys +from vts.utils.python.web import feature_utils +from vts.utils.python.controllers.adb import AdbError +from vts.utils.python.coverage import sancov_parser + + +class SancovFeature(feature_utils.Feature): + """Feature object for sanitizer coverage functionality. + + Attributes: + enabled: boolean, True if sancov is enabled, False otherwise + web: (optional) WebFeature, object storing web feature util for test run + """ + _DEFAULT_EXCLUDE_PATHS = [ + 'bionic', 'external/libcxx', 'system/core', 'system/libhidl' + ] + _TOGGLE_PARAM = keys.ConfigKeys.IKEY_ENABLE_SANCOV + _REQUIRED_PARAMS = [keys.ConfigKeys.IKEY_ANDROID_DEVICE] + + _PROCESS_INIT_COMMAND = ( + '\"echo coverage=1 > /data/asan/system/asan.options.{0} && ' + 'echo coverage_dir={1}/{2} >> /data/asan/system/asan.options.{0} && ' + 'rm -rf {1}/{2} &&' + 'mkdir {1}/{2} && ' + 'killall {0}\"') + _FLUSH_COMMAND = '/data/local/tmp/vts_coverage_configure flush {0}' + _TARGET_SANCOV_PATH = '/data/misc/trace' + _SEARCH_PATHS = [(os.path.join('data', 'asan', 'vendor', 'bin'), + None), (os.path.join('vendor', 'bin'), None), + (os.path.join('data', 'asan', 'vendor', 'lib'), + 32), (os.path.join('vendor', 'lib'), 32), (os.path.join( + 'data', 'asan', 'vendor', + 'lib64'), 64), (os.path.join('vendor', 'lib64'), 64)] + + _BUILD_INFO = 'BUILD_INFO' + _REPO_DICT = 'repo-dict' + _SYMBOLS_ZIP = 'symbols.zip' + + def __init__(self, + user_params, + web=None, + exclude_paths=_DEFAULT_EXCLUDE_PATHS): + """Initializes the sanitizer coverage feature. + + Args: + user_params: A dictionary from parameter name (String) to parameter value. + web: (optional) WebFeature, object storing web feature util for test run. + exclude_paths: (optional) list of strings, paths to exclude for coverage. + """ + self.ParseParameters( + self._TOGGLE_PARAM, self._REQUIRED_PARAMS, user_params=user_params) + self.web = web + self._device_resource_dict = {} + self._file_vectors = {} + self._exclude_paths = exclude_paths + if self.enabled: + android_devices = getattr(self, + keys.ConfigKeys.IKEY_ANDROID_DEVICE) + if not isinstance(android_devices, list): + logging.warn('Android device information not available') + self.enabled = False + for device in android_devices: + serial = str(device.get(keys.ConfigKeys.IKEY_SERIAL)) + sancov_resource_path = str( + device.get(keys.ConfigKeys.IKEY_SANCOV_RESOURCES_PATH)) + if not serial or not sancov_resource_path: + logging.warn('Missing sancov information in device: %s', + device) + continue + self._device_resource_dict[serial] = sancov_resource_path + if self.enabled: + logging.info('Sancov is enabled.') + else: + logging.debug('Sancov is disabled.') + + def InitializeDeviceCoverage(self, dut, hals): + """Initializes the sanitizer coverage on the device for the provided HAL. + + Args: + dut: The device under test. + hals: A list of the HAL name and version (string) for which to + measure coverage (e.g. ['android.hardware.light@2.0']) + """ + serial = dut.adb.shell('getprop ro.serialno').strip() + if serial not in self._device_resource_dict: + logging.error("Invalid device provided: %s", serial) + return + + for hal in hals: + entries = dut.adb.shell( + 'lshal -itp 2> /dev/null | grep {0}'.format(hal)).splitlines() + pids = set([ + pid.strip() + for pid in map(lambda entry: entry.split()[-1], entries) + if pid.isdigit() + ]) + + if len(pids) == 0: + logging.warn('No matching processes IDs found for HAL %s', hal) + return + processes = dut.adb.shell('ps -p {0} -o comm='.format( + ' '.join(pids))).splitlines() + process_names = set([ + name.strip() for name in processes + if name.strip() and not name.endswith(' (deleted)') + ]) + + if len(process_names) == 0: + logging.warn('No matching processes names found for HAL %s', + hal) + return + + for process_name in process_names: + cmd = self._PROCESS_INIT_COMMAND.format( + process_name, self._TARGET_SANCOV_PATH, hal) + try: + dut.adb.shell(cmd.format(process_name)) + except AdbError as e: + logging.error('Command failed: \"%s\"', cmd) + continue + + def FlushDeviceCoverage(self, dut, hals): + """Flushes the sanitizer coverage on the device for the provided HAL. + + Args: + dut: The device under test. + hals: A list of HAL name and version (string) for which to flush + coverage (e.g. ['android.hardware.light@2.0-service']) + """ + serial = dut.adb.shell('getprop ro.serialno').strip() + if serial not in self._device_resource_dict: + logging.error('Invalid device provided: %s', serial) + return + for hal in hals: + dut.adb.shell(self._FLUSH_COMMAND.format(hal)) + + def _InitializeFileVectors(self, serial, binary_path): + """Parse the binary and read the debugging information. + + Parse the debugging information in the binary to determine executable lines + of code for all of the files included in the binary. + + Args: + serial: The serial of the device under test. + binary_path: The path to the unstripped binary on the host. + """ + file_vectors = self._file_vectors[serial] + args = ['readelf', '--debug-dump=decodedline', binary_path] + with tempfile.TemporaryFile('w+b') as tmp: + subprocess.call(args, stdout=tmp) + tmp.seek(0) + file = None + for entry in tmp: + entry_parts = entry.split() + if len(entry_parts) == 0: + continue + elif len(entry_parts) < 3 and entry_parts[-1].endswith(':'): + file = entry_parts[-1].rsplit(':')[0] + for path in self._exclude_paths: + if file.startswith(path): + file = None + break + continue + elif len(entry_parts) == 3 and file is not None: + line_no_string = entry_parts[1] + try: + line = int(line_no_string) + except ValueError: + continue + if file not in file_vectors: + file_vectors[file] = [-1] * line + if line > len(file_vectors[file]): + file_vectors[file].extend( + [-2] * (line - len(file_vectors[file]))) + file_vectors[file][line - 1] = 0 + + def _UpdateLineCounts(self, serial, lines): + """Update the line counts with the symbolized output lines. + + Increment the line counts using the symbolized line information. + + Args: + serial: The serial of the device under test. + lines: A list of strings in the format returned by addr2line (e.g. <file>:<line no>). + """ + file_vectors = self._file_vectors[serial] + for line in lines: + file, line_no_string = line.rsplit(':', 1) + if file == '??': # some lines cannot be symbolized and will report as '??' + continue + try: + line_no = int(line_no_string) + except ValueError: + continue # some lines cannot be symbolized and will report as '??' + if not file in file_vectors: # file is excluded + continue + if line_no > len(file_vectors[file]): + file_vectors[file].extend([-1] * + (line_no - len(file_vectors[file]))) + if file_vectors[file][line_no - 1] < 0: + file_vectors[file][line_no - 1] = 0 + file_vectors[file][line_no - 1] += 1 + + def Upload(self): + """Append the coverage information to the web proto report. + """ + if not self.web or not self.web.enabled: + return + + for device_serial in self._device_resource_dict: + resource_path = self._device_resource_dict[device_serial] + rev_map = json.load( + open(os.path.join(resource_path, + self._BUILD_INFO)))[self._REPO_DICT] + + for file in self._file_vectors[device_serial]: + + # Get the git project information + # Assumes that the project name and path to the project root are similar + revision = None + for project_name in rev_map: + # Matches when source file root and project name are the same + if file.startswith(str(project_name)): + git_project_name = str(project_name) + git_project_path = str(project_name) + revision = str(rev_map[project_name]) + break + + parts = os.path.normpath(str(project_name)).split( + os.sep, 1) + # Matches when project name has an additional prefix before the project path root. + if len(parts) > 1 and file.startswith(parts[-1]): + git_project_name = str(project_name) + git_project_path = parts[-1] + revision = str(rev_map[project_name]) + break + + if not revision: + logging.info("Could not find git info for %s", file) + continue + + covered_count = sum( + map(lambda count: 1 if count > 0 else 0, + self._file_vectors[device_serial][file])) + total_count = sum( + map(lambda count: 1 if count >= 0 else 0, + self._file_vectors[device_serial][file])) + self.web.AddCoverageReport( + self._file_vectors[device_serial][file], file, + git_project_name, git_project_path, revision, + covered_count, total_count, True) + + def ProcessDeviceCoverage(self, dut, hals): + """Process device coverage. + + Fetch sancov files from the target, parse the sancov files, symbolize the output, + and update the line counters. + + Args: + dut: The device under test. + hals: A list of HAL name and version (string) for which to process + coverage (e.g. ['android.hardware.light@2.0']) + """ + serial = dut.adb.shell('getprop ro.serialno').strip() + product = dut.adb.shell('getprop ro.build.product').strip() + + if not serial in self._device_resource_dict: + logging.error('Invalid device provided: %s', serial) + return + + if serial not in self._file_vectors: + self._file_vectors[serial] = {} + + symbols_zip = zipfile.ZipFile( + os.path.join(self._device_resource_dict[serial], + self._SYMBOLS_ZIP)) + + sancov_files = [] + for hal in hals: + sancov_files.extend( + dut.adb.shell('find {0}/{1} -name \"*.sancov\"'.format( + self._TARGET_SANCOV_PATH, hal)).splitlines()) + temp_dir = tempfile.mkdtemp() + + binary_to_sancov = {} + for file in sancov_files: + dut.adb.pull(file, temp_dir) + binary, pid, _ = os.path.basename(file).rsplit('.', 2) + bitness, offsets = sancov_parser.ParseSancovFile( + os.path.join(temp_dir, os.path.basename(file))) + binary_to_sancov[binary] = (bitness, offsets) + + for hal in hals: + dut.adb.shell('rm -rf {0}/{1}'.format(self._TARGET_SANCOV_PATH, + hal)) + + search_root = os.path.join('out', 'target', 'product', product, + 'symbols') + for path, bitness in self._SEARCH_PATHS: + for name in [ + f for f in symbols_zip.namelist() + if f.startswith(os.path.join(search_root, path)) + ]: + basename = os.path.basename(name) + if basename in binary_to_sancov and ( + bitness is None + or binary_to_sancov[basename][0] == bitness): + with symbols_zip.open( + name) as source, tempfile.NamedTemporaryFile( + 'w+b') as target: + shutil.copyfileobj(source, target) + target.seek(0) + self._InitializeFileVectors(serial, target.name) + addrs = map(lambda addr: '{0:#x}'.format(addr), + binary_to_sancov[basename][1]) + args = ['addr2line', '-pe', target.name] + args.extend(addrs) + with tempfile.TemporaryFile('w+b') as tmp: + subprocess.call(args, stdout=tmp) + tmp.seek(0) + c = tmp.read().split() + self._UpdateLineCounts(serial, c) + del binary_to_sancov[basename] + shutil.rmtree(temp_dir) diff --git a/utils/python/coverage/testdata/sample.c b/utils/python/coverage/testdata/sample.c new file mode 100644 index 000000000..39d245a61 --- /dev/null +++ b/utils/python/coverage/testdata/sample.c @@ -0,0 +1,43 @@ +#include <stdlib.h> +#include <stdio.h> + + +int main(argc, argv) +int argc; +char **argv; + +{ + int x, y; + x = 100; + y = 250; + testFunctionName(x + y); + + printf("The value of x is %d. \n", x); + + if (x > y) { + printf("X is bigger."); + } else { + printf("Y is bigger."); + } + + int z = 0; + int i = 0; + for (; i < y; i++) { + z = -z + 2*i; + } + + printf("The value of z is %d.\n", z); + + exit(0); + +} + +int testFunctionName(a) +int a; + +{ + int b; + b = a << 2; + printf("%i times 4 = %i\n", a, b); + return b; +}
\ No newline at end of file diff --git a/utils/python/coverage/testdata/sample.gcda b/utils/python/coverage/testdata/sample.gcda Binary files differnew file mode 100644 index 000000000..144d91dcd --- /dev/null +++ b/utils/python/coverage/testdata/sample.gcda diff --git a/utils/python/coverage/testdata/sample.gcno b/utils/python/coverage/testdata/sample.gcno Binary files differnew file mode 100644 index 000000000..2f999072f --- /dev/null +++ b/utils/python/coverage/testdata/sample.gcno diff --git a/utils/python/coverage/testdata/sample.sancov b/utils/python/coverage/testdata/sample.sancov Binary files differnew file mode 100644 index 000000000..b65650b1e --- /dev/null +++ b/utils/python/coverage/testdata/sample.sancov |