summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-15 21:51:51 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-15 21:51:51 +0000
commit3632265538fb15c7e7886eb42aa4ad14224611ec (patch)
treecf97cbbca48921ec108bd9d06cd741cc3a986298
parent2dd869fd02e8398dbd15574f1dd6d979eb23339b (diff)
parentf72cf4491e923bd331cbb3d8e315d8c62bbb8814 (diff)
downloadvts-3632265538fb15c7e7886eb42aa4ad14224611ec.tar.gz
Change-Id: Ib087488a23042f99031c6a3be83cb7df7305d450
-rw-r--r--compilation_tools/vtsc/VtsCompilerUtils.h5
-rw-r--r--proto/AndroidSystemControlMessage.proto4
-rw-r--r--proto/AndroidSystemControlMessage_pb2.py206
-rw-r--r--proto/ComponentSpecificationMessage_pb2.py587
-rw-r--r--proto/ExecutionSpecificationMessage_pb2.py81
-rw-r--r--proto/TestSchedulingPolicyMessage_pb2.py34
-rw-r--r--proto/VtsDriverControlMessage.proto4
-rw-r--r--proto/VtsDriverControlMessage_pb2.py415
-rw-r--r--proto/VtsFuzzTaskMessage_pb2.py114
-rw-r--r--proto/VtsProfilingMessage_pb2.py71
-rw-r--r--proto/VtsReportMessage_pb2.py380
-rw-r--r--proto/VtsResourceControllerMessage_pb2.py200
-rwxr-xr-xrunners/host/tcp_client/vts_tcp_client.py4
-rw-r--r--runners/target/vts_hal_hidl_target/Android.bp1
-rw-r--r--specification/Android.bp100
-rw-r--r--specification/Android.mk96
-rw-r--r--testcases/host/fastboot_getvar/AndroidTest.xml2
-rw-r--r--testcases/host/fastboot_getvar/OWNERS5
-rw-r--r--testcases/host/fastboot_getvar/src/com/android/tests/FastbootGetvarUserspaceTest.java122
-rw-r--r--testcases/host/fastboot_test/AndroidTest.xml2
-rw-r--r--testcases/host/fastboot_test/OWNERS4
-rw-r--r--testcases/host/fastboot_test/src/com/android/tests/FastbootVerifyUserspaceTest.java69
-rw-r--r--testcases/host/firmware_dtbo_test/OWNERS2
-rw-r--r--testcases/host/firmware_test/OWNERS3
-rw-r--r--testcases/host/firmware_test/src/com/android/tests/firmware/FirmwareBootHeaderVerification.java26
-rw-r--r--testcases/host/kernel_proc_file_api_test/OWNERS2
-rw-r--r--testcases/host/kernel_proc_file_api_test/proc_tests/ProcAsoundTests.py2
-rw-r--r--testcases/host/kernel_proc_file_api_test/proc_tests/ProcMemInfoTest.py4
-rw-r--r--testcases/host/kernel_proc_file_api_test/proc_tests/ProcSimpleFileTests.py59
-rw-r--r--testcases/host/kernel_proc_file_api_test/vts_kernel_proc_file_api_test.py3
-rw-r--r--testcases/host/selinux_test/OWNERS2
-rw-r--r--testcases/target/hal_lights/Android.bp58
-rw-r--r--testcases/target/hal_lights/AndroidTest.xml28
-rw-r--r--testcases/target/hal_lights/hal_lights_basic_test.cpp81
-rw-r--r--testcases/target/hal_power/Android.bp59
-rw-r--r--testcases/target/hal_power/AndroidTest.xml28
-rw-r--r--testcases/target/hal_power/hal_power_basic_test.cpp164
-rw-r--r--testcases/template/mobly/__init__.py0
-rw-r--r--testcases/template/mobly/mobly_test.py285
-rw-r--r--tools/vts-core-tradefed/Android.bp2
-rw-r--r--tools/vts-core-tradefed/res/config/vts-ccd.xml6
-rw-r--r--tools/vts-core-tradefed/res/config/vts-kernel.xml1
-rw-r--r--tools/vts-core-tradefed/res/config/vts-validation-exclude.xml3
-rw-r--r--tools/vts-core-tradefed/res/config/vts-validation.xml2
-rw-r--r--tools/vts-core-tradefed/src/com/android/tradefed/testtype/binary/KernelTargetTest.java5
-rw-r--r--utils/python/android/api.py2
-rw-r--r--utils/python/coverage/Android.mk42
-rw-r--r--utils/python/coverage/README.md18
-rw-r--r--utils/python/coverage/__init__.py0
-rw-r--r--utils/python/coverage/arc_summary.py90
-rw-r--r--utils/python/coverage/arc_summary_test.py119
-rw-r--r--utils/python/coverage/block_summary.py65
-rw-r--r--utils/python/coverage/coverage_report.py100
-rw-r--r--utils/python/coverage/coverage_report_test.py63
-rw-r--r--utils/python/coverage/coverage_utils.py771
-rw-r--r--utils/python/coverage/file_summary.py42
-rw-r--r--utils/python/coverage/function_summary.py102
-rw-r--r--utils/python/coverage/function_summary_test.py92
-rw-r--r--utils/python/coverage/gcda_parser.py192
-rw-r--r--utils/python/coverage/gcda_parser_test.py144
-rw-r--r--utils/python/coverage/gcno_parser.py242
-rw-r--r--utils/python/coverage/gcno_parser_test.py219
-rw-r--r--utils/python/coverage/parser.py116
-rw-r--r--utils/python/coverage/parser_test.py216
-rw-r--r--utils/python/coverage/sancov_parser.py105
-rw-r--r--utils/python/coverage/sancov_parser_test.py102
-rw-r--r--utils/python/coverage/sancov_utils.py346
-rw-r--r--utils/python/coverage/testdata/sample.c43
-rw-r--r--utils/python/coverage/testdata/sample.gcdabin0 -> 328 bytes
-rw-r--r--utils/python/coverage/testdata/sample.gcnobin0 -> 1092 bytes
-rw-r--r--utils/python/coverage/testdata/sample.sancovbin0 -> 352 bytes
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
new file mode 100644
index 000000000..144d91dcd
--- /dev/null
+++ b/utils/python/coverage/testdata/sample.gcda
Binary files differ
diff --git a/utils/python/coverage/testdata/sample.gcno b/utils/python/coverage/testdata/sample.gcno
new file mode 100644
index 000000000..2f999072f
--- /dev/null
+++ b/utils/python/coverage/testdata/sample.gcno
Binary files differ
diff --git a/utils/python/coverage/testdata/sample.sancov b/utils/python/coverage/testdata/sample.sancov
new file mode 100644
index 000000000..b65650b1e
--- /dev/null
+++ b/utils/python/coverage/testdata/sample.sancov
Binary files differ