[automerger skipped] DO NOT MERGE Update VTS tag version to V11_R17 am: b938c77c5b -s ours am: 21e923b859 -s ours am: e39cde2e19 -s ours

am skip reason: contains skip directive

Original change: https://android-review.googlesource.com/c/platform/test/vts/+/3031728

Change-Id: Iea3e4472a54214c8a72db2a2299af6ae636f0117
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/compilation_tools/vtsc/VtsCompilerUtils.h b/compilation_tools/vtsc/VtsCompilerUtils.h
index 344ce9d..7e265a0 100644
--- a/compilation_tools/vtsc/VtsCompilerUtils.h
+++ b/compilation_tools/vtsc/VtsCompilerUtils.h
@@ -17,9 +17,10 @@
 #ifndef VTS_COMPILATION_TOOLS_VTSC_CODE_UTILS_H_
 #define VTS_COMPILATION_TOOLS_VTSC_CODE_UTILS_H_
 
-#include <string>
-
 #include <hidl-util/FQName.h>
+#include <sys/types.h>
+
+#include <string>
 
 #include "test/vts/proto/ComponentSpecificationMessage.pb.h"
 
diff --git a/proto/AndroidSystemControlMessage.proto b/proto/AndroidSystemControlMessage.proto
index de66640..f40125e 100644
--- a/proto/AndroidSystemControlMessage.proto
+++ b/proto/AndroidSystemControlMessage.proto
@@ -176,8 +176,8 @@
   // coverage measurement data.
   optional bytes result = 1004;
 
-  repeated bytes stdout = 2001;
-  repeated bytes stderr = 2002;
+  repeated bytes stdout_str = 2001;
+  repeated bytes stderr_str = 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 f19d73b..8ab0f5f 100644
--- a/proto/AndroidSystemControlMessage_pb2.py
+++ b/proto/AndroidSystemControlMessage_pb2.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: AndroidSystemControlMessage.proto
 
@@ -8,7 +9,6 @@
 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 @@
   name='AndroidSystemControlMessage.proto',
   package='android.vts',
   syntax='proto2',
-  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')
+  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')
   ,
   dependencies=[ComponentSpecificationMessage__pb2.DESCRIPTOR,VtsResourceControllerMessage__pb2.DESCRIPTOR,])
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 _COMMANDTYPE = _descriptor.EnumDescriptor(
   name='CommandType',
@@ -35,65 +35,65 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_COMMAND_TYPE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LIST_HALS', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SET_HOST_INFO', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PING', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CHECK_DRIVER_SERVICE', index=4, number=101,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LAUNCH_DRIVER_SERVICE', index=5, number=102,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_AGENT_COMMAND_READ_SPECIFICATION', index=6, number=103,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LIST_APIS', index=7, number=201,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CALL_API', index=8, number=202,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_AGENT_COMMAND_GET_ATTRIBUTE', index=9, number=203,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_AGENT_COMMAND_EXECUTE_SHELL_COMMAND', index=10, number=301,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_FMQ_COMMAND', index=11, number=401,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_HIDL_MEMORY_COMMAND', index=12, number=402,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_HIDL_HANDLE_COMMAND', index=13, number=403,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
-  serialized_start=1518,
-  serialized_end=1893,
+  serialized_options=None,
+  serialized_start=1526,
+  serialized_end=1901,
 )
 _sym_db.RegisterEnumDescriptor(_COMMANDTYPE)
 
@@ -106,21 +106,21 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_RESPONSE_CODE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SUCCESS', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FAIL', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
-  serialized_start=1895,
-  serialized_end=1959,
+  serialized_options=None,
+  serialized_start=1903,
+  serialized_end=1967,
 )
 _sym_db.RegisterEnumDescriptor(_RESPONSECODE)
 
@@ -133,37 +133,37 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UKNOWN_VTS_DRIVER_TYPE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_DRIVER_TYPE_HAL_CONVENTIONAL', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_DRIVER_TYPE_HAL_LEGACY', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_DRIVER_TYPE_HAL_HIDL', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_DRIVER_TYPE_HAL_HIDL_WRAPPED_CONVENTIONAL', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_DRIVER_TYPE_LIB_SHARED', index=5, number=11,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_DRIVER_TYPE_SHELL', index=6, number=21,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
-  serialized_start=1962,
-  serialized_end=2215,
+  serialized_options=None,
+  serialized_start=1970,
+  serialized_end=2223,
 )
 _sym_db.RegisterEnumDescriptor(_VTSDRIVERTYPE)
 
@@ -208,168 +208,168 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -393,91 +393,91 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='stdout', full_name='android.vts.AndroidSystemControlResponseMessage.stdout', index=5,
+      name='stdout_str', full_name='android.vts.AndroidSystemControlResponseMessage.stdout_str', 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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _descriptor.FieldDescriptor(
-      name='stderr', full_name='android.vts.AndroidSystemControlResponseMessage.stderr', index=6,
+      name='stderr_str', full_name='android.vts.AndroidSystemControlResponseMessage.stderr_str', 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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
   oneofs=[
   ],
   serialized_start=895,
-  serialized_end=1304,
+  serialized_end=1312,
 )
 
 
@@ -494,35 +494,35 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1306,
-  serialized_end=1425,
+  serialized_start=1314,
+  serialized_end=1433,
 )
 
 
@@ -539,21 +539,21 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1427,
-  serialized_end=1515,
+  serialized_start=1435,
+  serialized_end=1523,
 )
 
 _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['command_type'].enum_type = _COMMANDTYPE
@@ -574,36 +574,36 @@
 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,), dict(
-  DESCRIPTOR = _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE,
-  __module__ = 'AndroidSystemControlMessage_pb2'
+AndroidSystemControlCommandMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlCommandMessage', (_message.Message,), {
+  'DESCRIPTOR' : _ANDROIDSYSTEMCONTROLCOMMANDMESSAGE,
+  '__module__' : 'AndroidSystemControlMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemControlCommandMessage)
-  ))
+  })
 _sym_db.RegisterMessage(AndroidSystemControlCommandMessage)
 
-AndroidSystemControlResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlResponseMessage', (_message.Message,), dict(
-  DESCRIPTOR = _ANDROIDSYSTEMCONTROLRESPONSEMESSAGE,
-  __module__ = 'AndroidSystemControlMessage_pb2'
+AndroidSystemControlResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemControlResponseMessage', (_message.Message,), {
+  'DESCRIPTOR' : _ANDROIDSYSTEMCONTROLRESPONSEMESSAGE,
+  '__module__' : 'AndroidSystemControlMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemControlResponseMessage)
-  ))
+  })
 _sym_db.RegisterMessage(AndroidSystemControlResponseMessage)
 
-AndroidSystemCallbackRequestMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackRequestMessage', (_message.Message,), dict(
-  DESCRIPTOR = _ANDROIDSYSTEMCALLBACKREQUESTMESSAGE,
-  __module__ = 'AndroidSystemControlMessage_pb2'
+AndroidSystemCallbackRequestMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackRequestMessage', (_message.Message,), {
+  'DESCRIPTOR' : _ANDROIDSYSTEMCALLBACKREQUESTMESSAGE,
+  '__module__' : 'AndroidSystemControlMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemCallbackRequestMessage)
-  ))
+  })
 _sym_db.RegisterMessage(AndroidSystemCallbackRequestMessage)
 
-AndroidSystemCallbackResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackResponseMessage', (_message.Message,), dict(
-  DESCRIPTOR = _ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE,
-  __module__ = 'AndroidSystemControlMessage_pb2'
+AndroidSystemCallbackResponseMessage = _reflection.GeneratedProtocolMessageType('AndroidSystemCallbackResponseMessage', (_message.Message,), {
+  'DESCRIPTOR' : _ANDROIDSYSTEMCALLBACKRESPONSEMESSAGE,
+  '__module__' : 'AndroidSystemControlMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.AndroidSystemCallbackResponseMessage)
-  ))
+  })
 _sym_db.RegisterMessage(AndroidSystemCallbackResponseMessage)
 
 
-_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['target_version'].has_options = True
-_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['target_version']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
+_ANDROIDSYSTEMCONTROLCOMMANDMESSAGE.fields_by_name['target_version']._options = None
 # @@protoc_insertion_point(module_scope)
diff --git a/proto/ComponentSpecificationMessage_pb2.py b/proto/ComponentSpecificationMessage_pb2.py
index 517bf19..69f8937 100644
--- a/proto/ComponentSpecificationMessage_pb2.py
+++ b/proto/ComponentSpecificationMessage_pb2.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: ComponentSpecificationMessage.proto
 
@@ -8,7 +9,6 @@
 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 @@
   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 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_CLASS', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HAL_CONVENTIONAL', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HAL_CONVENTIONAL_SUBMODULE', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HAL_LEGACY', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HAL_HIDL', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HAL_HIDL_WRAPPED_CONVENTIONAL', index=5, number=5,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LIB_SHARED', index=6, number=11,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KERNEL', index=7, number=21,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='KERNEL_MODULE', index=8, number=22,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=5138,
   serialized_end=5339,
 )
@@ -83,135 +83,135 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_TYPE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='AUDIO', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CAMERA', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GPS', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LIGHT', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='WIFI', index=5, number=5,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MOBILE', index=6, number=6,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BLUETOOTH', index=7, number=7,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='NFC', index=8, number=8,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='POWER', index=9, number=9,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEMTRACK', index=10, number=10,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BFP', index=11, number=11,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VIBRATOR', index=12, number=12,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='THERMAL', index=13, number=13,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TV_INPUT', index=14, number=14,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TV_CEC', index=15, number=15,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SENSORS', index=16, number=16,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VEHICLE', index=17, number=17,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VR', index=18, number=18,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GRAPHICS_ALLOCATOR', index=19, number=19,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GRAPHICS_MAPPER', index=20, number=20,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='RADIO', index=21, number=21,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CONTEXTHUB', index=22, number=22,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='GRAPHICS_COMPOSER', index=23, number=23,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEDIA_OMX', index=24, number=24,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TESTS_MSGQ', index=25, number=25,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TESTS_MEMORY', index=26, number=26,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DUMPSTATE', index=27, number=27,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BIONIC_LIBM', index=28, number=1001,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='BIONIC_LIBC', index=29, number=1002,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VNDK_LIBCUTILS', index=30, number=1101,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SYSCALL', index=31, number=2001,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=5342,
   serialized_end=5815,
 )
@@ -226,95 +226,95 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_VARIABLE_TYPE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_PREDEFINED', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_SCALAR', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_STRING', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_ENUM', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_ARRAY', index=5, number=5,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_VECTOR', index=6, number=6,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_STRUCT', index=7, number=7,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_FUNCTION_POINTER', index=8, number=8,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_VOID', index=9, number=9,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_HIDL_CALLBACK', index=10, number=10,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_SUBMODULE', index=11, number=11,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_UNION', index=12, number=12,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_HIDL_INTERFACE', index=13, number=13,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_HANDLE', index=14, number=14,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_MASK', index=15, number=15,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_HIDL_MEMORY', index=16, number=16,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_POINTER', index=17, number=17,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_FMQ_SYNC', index=18, number=18,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_FMQ_UNSYNC', index=19, number=19,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_REF', index=20, number=20,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TYPE_SAFE_UNION', index=21, number=21,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=5818,
   serialized_end=6253,
 )
@@ -329,19 +329,19 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_TARGET_ARCH', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TARGET_ARCH_ARM', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TARGET_ARCH_ARM64', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=6255,
   serialized_end=6336,
 )
@@ -356,31 +356,31 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='FILE_TYPE', index=0, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DIR_TYPE', index=1, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='DEV_TYPE', index=2, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PIPE_TYPE', index=3, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SOCKET_TYPE', index=4, number=5,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LINK_TYPE', index=5, number=6,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=6338,
   serialized_end=6436,
 )
@@ -475,35 +475,35 @@
       has_default_value=True, default_value=False,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -527,21 +527,21 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -565,77 +565,77 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -659,126 +659,126 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -802,140 +802,140 @@
       has_default_value=False, default_value=False,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -959,42 +959,42 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1018,21 +1018,21 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1056,28 +1056,28 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1101,35 +1101,35 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1153,49 +1153,49 @@
       has_default_value=False, default_value=1,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1219,56 +1219,56 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1292,231 +1292,231 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1540,42 +1540,42 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1599,35 +1599,35 @@
       has_default_value=True, default_value=False,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1651,98 +1651,98 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1816,119 +1816,116 @@
 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,), dict(
-  DESCRIPTOR = _CALLFLOWSPECIFICATIONMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+CallFlowSpecificationMessage = _reflection.GeneratedProtocolMessageType('CallFlowSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _CALLFLOWSPECIFICATIONMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.CallFlowSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(CallFlowSpecificationMessage)
 
-NativeCodeCoverageRawDataMessage = _reflection.GeneratedProtocolMessageType('NativeCodeCoverageRawDataMessage', (_message.Message,), dict(
-  DESCRIPTOR = _NATIVECODECOVERAGERAWDATAMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+NativeCodeCoverageRawDataMessage = _reflection.GeneratedProtocolMessageType('NativeCodeCoverageRawDataMessage', (_message.Message,), {
+  'DESCRIPTOR' : _NATIVECODECOVERAGERAWDATAMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.NativeCodeCoverageRawDataMessage)
-  ))
+  })
 _sym_db.RegisterMessage(NativeCodeCoverageRawDataMessage)
 
-FunctionCallMessage = _reflection.GeneratedProtocolMessageType('FunctionCallMessage', (_message.Message,), dict(
-  DESCRIPTOR = _FUNCTIONCALLMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+FunctionCallMessage = _reflection.GeneratedProtocolMessageType('FunctionCallMessage', (_message.Message,), {
+  'DESCRIPTOR' : _FUNCTIONCALLMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.FunctionCallMessage)
-  ))
+  })
 _sym_db.RegisterMessage(FunctionCallMessage)
 
-FunctionSpecificationMessage = _reflection.GeneratedProtocolMessageType('FunctionSpecificationMessage', (_message.Message,), dict(
-  DESCRIPTOR = _FUNCTIONSPECIFICATIONMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+FunctionSpecificationMessage = _reflection.GeneratedProtocolMessageType('FunctionSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _FUNCTIONSPECIFICATIONMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.FunctionSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(FunctionSpecificationMessage)
 
-ScalarDataValueMessage = _reflection.GeneratedProtocolMessageType('ScalarDataValueMessage', (_message.Message,), dict(
-  DESCRIPTOR = _SCALARDATAVALUEMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+ScalarDataValueMessage = _reflection.GeneratedProtocolMessageType('ScalarDataValueMessage', (_message.Message,), {
+  'DESCRIPTOR' : _SCALARDATAVALUEMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.ScalarDataValueMessage)
-  ))
+  })
 _sym_db.RegisterMessage(ScalarDataValueMessage)
 
-FunctionPointerSpecificationMessage = _reflection.GeneratedProtocolMessageType('FunctionPointerSpecificationMessage', (_message.Message,), dict(
-  DESCRIPTOR = _FUNCTIONPOINTERSPECIFICATIONMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+FunctionPointerSpecificationMessage = _reflection.GeneratedProtocolMessageType('FunctionPointerSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _FUNCTIONPOINTERSPECIFICATIONMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.FunctionPointerSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(FunctionPointerSpecificationMessage)
 
-StringDataValueMessage = _reflection.GeneratedProtocolMessageType('StringDataValueMessage', (_message.Message,), dict(
-  DESCRIPTOR = _STRINGDATAVALUEMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+StringDataValueMessage = _reflection.GeneratedProtocolMessageType('StringDataValueMessage', (_message.Message,), {
+  'DESCRIPTOR' : _STRINGDATAVALUEMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.StringDataValueMessage)
-  ))
+  })
 _sym_db.RegisterMessage(StringDataValueMessage)
 
-EnumDataValueMessage = _reflection.GeneratedProtocolMessageType('EnumDataValueMessage', (_message.Message,), dict(
-  DESCRIPTOR = _ENUMDATAVALUEMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+EnumDataValueMessage = _reflection.GeneratedProtocolMessageType('EnumDataValueMessage', (_message.Message,), {
+  'DESCRIPTOR' : _ENUMDATAVALUEMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.EnumDataValueMessage)
-  ))
+  })
 _sym_db.RegisterMessage(EnumDataValueMessage)
 
-MemoryDataValueMessage = _reflection.GeneratedProtocolMessageType('MemoryDataValueMessage', (_message.Message,), dict(
-  DESCRIPTOR = _MEMORYDATAVALUEMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+MemoryDataValueMessage = _reflection.GeneratedProtocolMessageType('MemoryDataValueMessage', (_message.Message,), {
+  'DESCRIPTOR' : _MEMORYDATAVALUEMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.MemoryDataValueMessage)
-  ))
+  })
 _sym_db.RegisterMessage(MemoryDataValueMessage)
 
-FdMessage = _reflection.GeneratedProtocolMessageType('FdMessage', (_message.Message,), dict(
-  DESCRIPTOR = _FDMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+FdMessage = _reflection.GeneratedProtocolMessageType('FdMessage', (_message.Message,), {
+  'DESCRIPTOR' : _FDMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.FdMessage)
-  ))
+  })
 _sym_db.RegisterMessage(FdMessage)
 
-HandleDataValueMessage = _reflection.GeneratedProtocolMessageType('HandleDataValueMessage', (_message.Message,), dict(
-  DESCRIPTOR = _HANDLEDATAVALUEMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+HandleDataValueMessage = _reflection.GeneratedProtocolMessageType('HandleDataValueMessage', (_message.Message,), {
+  'DESCRIPTOR' : _HANDLEDATAVALUEMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.HandleDataValueMessage)
-  ))
+  })
 _sym_db.RegisterMessage(HandleDataValueMessage)
 
-VariableSpecificationMessage = _reflection.GeneratedProtocolMessageType('VariableSpecificationMessage', (_message.Message,), dict(
-  DESCRIPTOR = _VARIABLESPECIFICATIONMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+VariableSpecificationMessage = _reflection.GeneratedProtocolMessageType('VariableSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _VARIABLESPECIFICATIONMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.VariableSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(VariableSpecificationMessage)
 
-StructSpecificationMessage = _reflection.GeneratedProtocolMessageType('StructSpecificationMessage', (_message.Message,), dict(
-  DESCRIPTOR = _STRUCTSPECIFICATIONMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+StructSpecificationMessage = _reflection.GeneratedProtocolMessageType('StructSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _STRUCTSPECIFICATIONMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.StructSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(StructSpecificationMessage)
 
-InterfaceSpecificationMessage = _reflection.GeneratedProtocolMessageType('InterfaceSpecificationMessage', (_message.Message,), dict(
-  DESCRIPTOR = _INTERFACESPECIFICATIONMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+InterfaceSpecificationMessage = _reflection.GeneratedProtocolMessageType('InterfaceSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _INTERFACESPECIFICATIONMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.InterfaceSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(InterfaceSpecificationMessage)
 
-ComponentSpecificationMessage = _reflection.GeneratedProtocolMessageType('ComponentSpecificationMessage', (_message.Message,), dict(
-  DESCRIPTOR = _COMPONENTSPECIFICATIONMESSAGE,
-  __module__ = 'ComponentSpecificationMessage_pb2'
+ComponentSpecificationMessage = _reflection.GeneratedProtocolMessageType('ComponentSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _COMPONENTSPECIFICATIONMESSAGE,
+  '__module__' : 'ComponentSpecificationMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.ComponentSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(ComponentSpecificationMessage)
 
 
-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'))
+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
 # @@protoc_insertion_point(module_scope)
diff --git a/proto/ExecutionSpecificationMessage_pb2.py b/proto/ExecutionSpecificationMessage_pb2.py
new file mode 100644
index 0000000..23b360b
--- /dev/null
+++ b/proto/ExecutionSpecificationMessage_pb2.py
@@ -0,0 +1,81 @@
+# -*- 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 92a9897..d02fc22 100644
--- a/proto/TestSchedulingPolicyMessage_pb2.py
+++ b/proto/TestSchedulingPolicyMessage_pb2.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: TestSchedulingPolicyMessage.proto
 
@@ -8,7 +9,6 @@
 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 @@
   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 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UKNOWN_TEST_SCHEDULING_MODE_TYPE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TEST_SCHEDULING_MODE_TOT_BEST_EFFORT', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TEST_SCHEDULING_MODE_PERIODIC', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=206,
   serialized_end=341,
 )
@@ -70,35 +70,35 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -111,15 +111,15 @@
 _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,), dict(
-  DESCRIPTOR = _TESTSCHEDULINGPOLICYMESSAGE,
-  __module__ = 'TestSchedulingPolicyMessage_pb2'
+TestSchedulingPolicyMessage = _reflection.GeneratedProtocolMessageType('TestSchedulingPolicyMessage', (_message.Message,), {
+  'DESCRIPTOR' : _TESTSCHEDULINGPOLICYMESSAGE,
+  '__module__' : 'TestSchedulingPolicyMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.TestSchedulingPolicyMessage)
-  ))
+  })
 _sym_db.RegisterMessage(TestSchedulingPolicyMessage)
 
 
-DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB\036VtsTestSchedulingPolicyMessage'))
+DESCRIPTOR._options = None
 # @@protoc_insertion_point(module_scope)
diff --git a/proto/VtsDriverControlMessage.proto b/proto/VtsDriverControlMessage.proto
index 70477a6..5912100 100644
--- a/proto/VtsDriverControlMessage.proto
+++ b/proto/VtsDriverControlMessage.proto
@@ -135,9 +135,9 @@
   optional bytes return_message = 12;
 
   // The stdout message for each command
-  repeated bytes stdout = 1001;
+  repeated bytes stdout_str = 1001;
   // The stderr message for each command
-  repeated bytes stderr = 1002;
+  repeated bytes stderr_str = 1002;
   // The exit code for each command
   repeated int32 exit_code = 1003;
 
diff --git a/proto/VtsDriverControlMessage_pb2.py b/proto/VtsDriverControlMessage_pb2.py
new file mode 100644
index 0000000..5fa131f
--- /dev/null
+++ b/proto/VtsDriverControlMessage_pb2.py
@@ -0,0 +1,415 @@
+# -*- 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 64978f2..64a7ff2 100644
--- a/proto/VtsFuzzTaskMessage_pb2.py
+++ b/proto/VtsFuzzTaskMessage_pb2.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: VtsFuzzTaskMessage.proto
 
@@ -8,7 +9,6 @@
 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 @@
   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 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='READY', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='LOCKED', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PROCESSED', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=1052,
   serialized_end=1098,
 )
@@ -62,23 +62,23 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='NOT_PROCESSED', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CRASH_DUPLICATE', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CRASH_NEW', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PASS', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=1100,
   serialized_end=1173,
 )
@@ -108,42 +108,42 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -167,56 +167,56 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -240,63 +240,63 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -320,35 +320,35 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -373,36 +373,36 @@
 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,), dict(
-  DESCRIPTOR = _TESTSUITESPECIFICATIONMESSAGE,
-  __module__ = 'VtsFuzzTaskMessage_pb2'
+TestSuiteSpecificationMessage = _reflection.GeneratedProtocolMessageType('TestSuiteSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _TESTSUITESPECIFICATIONMESSAGE,
+  '__module__' : 'VtsFuzzTaskMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.TestSuiteSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(TestSuiteSpecificationMessage)
 
-CorpusSpecificationMessage = _reflection.GeneratedProtocolMessageType('CorpusSpecificationMessage', (_message.Message,), dict(
-  DESCRIPTOR = _CORPUSSPECIFICATIONMESSAGE,
-  __module__ = 'VtsFuzzTaskMessage_pb2'
+CorpusSpecificationMessage = _reflection.GeneratedProtocolMessageType('CorpusSpecificationMessage', (_message.Message,), {
+  'DESCRIPTOR' : _CORPUSSPECIFICATIONMESSAGE,
+  '__module__' : 'VtsFuzzTaskMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.CorpusSpecificationMessage)
-  ))
+  })
 _sym_db.RegisterMessage(CorpusSpecificationMessage)
 
-FuzzTaskUnitMessage = _reflection.GeneratedProtocolMessageType('FuzzTaskUnitMessage', (_message.Message,), dict(
-  DESCRIPTOR = _FUZZTASKUNITMESSAGE,
-  __module__ = 'VtsFuzzTaskMessage_pb2'
+FuzzTaskUnitMessage = _reflection.GeneratedProtocolMessageType('FuzzTaskUnitMessage', (_message.Message,), {
+  'DESCRIPTOR' : _FUZZTASKUNITMESSAGE,
+  '__module__' : 'VtsFuzzTaskMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.FuzzTaskUnitMessage)
-  ))
+  })
 _sym_db.RegisterMessage(FuzzTaskUnitMessage)
 
-VtsFuzzTaskMessage = _reflection.GeneratedProtocolMessageType('VtsFuzzTaskMessage', (_message.Message,), dict(
-  DESCRIPTOR = _VTSFUZZTASKMESSAGE,
-  __module__ = 'VtsFuzzTaskMessage_pb2'
+VtsFuzzTaskMessage = _reflection.GeneratedProtocolMessageType('VtsFuzzTaskMessage', (_message.Message,), {
+  'DESCRIPTOR' : _VTSFUZZTASKMESSAGE,
+  '__module__' : 'VtsFuzzTaskMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.VtsFuzzTaskMessage)
-  ))
+  })
 _sym_db.RegisterMessage(VtsFuzzTaskMessage)
 
 
-DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB\027VtsFuzzTaskMessageClass'))
+DESCRIPTOR._options = None
 # @@protoc_insertion_point(module_scope)
diff --git a/proto/VtsProfilingMessage_pb2.py b/proto/VtsProfilingMessage_pb2.py
index 850c059..27b18d9 100644
--- a/proto/VtsProfilingMessage_pb2.py
+++ b/proto/VtsProfilingMessage_pb2.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: VtsProfilingMessage.proto
 
@@ -8,7 +9,6 @@
 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 @@
   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 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='SERVER_API_ENTRY', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SERVER_API_EXIT', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CLIENT_API_ENTRY', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='CLIENT_API_EXIT', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SYNC_CALLBACK_ENTRY', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='SYNC_CALLBACK_EXIT', index=5, number=5,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ASYNC_CALLBACK_ENTRY', index=6, number=6,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='ASYNC_CALLBACK_EXIT', index=7, number=7,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PASSTHROUGH_ENTRY', index=8, number=8,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='PASSTHROUGH_EXIT', index=9, number=9,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=421,
   serialized_end=678,
 )
@@ -107,63 +107,63 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -187,14 +187,14 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -210,24 +210,23 @@
 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,), dict(
-  DESCRIPTOR = _VTSPROFILINGRECORD,
-  __module__ = 'VtsProfilingMessage_pb2'
+VtsProfilingRecord = _reflection.GeneratedProtocolMessageType('VtsProfilingRecord', (_message.Message,), {
+  'DESCRIPTOR' : _VTSPROFILINGRECORD,
+  '__module__' : 'VtsProfilingMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.VtsProfilingRecord)
-  ))
+  })
 _sym_db.RegisterMessage(VtsProfilingRecord)
 
-VtsProfilingMessage = _reflection.GeneratedProtocolMessageType('VtsProfilingMessage', (_message.Message,), dict(
-  DESCRIPTOR = _VTSPROFILINGMESSAGE,
-  __module__ = 'VtsProfilingMessage_pb2'
+VtsProfilingMessage = _reflection.GeneratedProtocolMessageType('VtsProfilingMessage', (_message.Message,), {
+  'DESCRIPTOR' : _VTSPROFILINGMESSAGE,
+  '__module__' : 'VtsProfilingMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.VtsProfilingMessage)
-  ))
+  })
 _sym_db.RegisterMessage(VtsProfilingMessage)
 
 
-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'))
+DESCRIPTOR._options = None
+_VTSPROFILINGRECORD.fields_by_name['version']._options = None
 # @@protoc_insertion_point(module_scope)
diff --git a/proto/VtsReportMessage_pb2.py b/proto/VtsReportMessage_pb2.py
index 5da6b95..75177c2 100644
--- a/proto/VtsReportMessage_pb2.py
+++ b/proto/VtsReportMessage_pb2.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: VtsReportMessage.proto
 
@@ -8,7 +9,6 @@
 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 @@
   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 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_RESULT', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TEST_CASE_RESULT_PASS', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TEST_CASE_RESULT_FAIL', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TEST_CASE_RESULT_SKIP', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TEST_CASE_RESULT_EXCEPTION', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='TEST_CASE_RESULT_TIMEOUT', index=5, number=5,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=2866,
   serialized_end=3045,
 )
@@ -71,27 +71,27 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_VTS_TESTTYPE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_HOST_DRIVEN_STRUCTURAL', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_HOST_DRIVEN_FUZZING', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_TARGET_SIDE_GTEST', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_TARGET_SIDE_FUZZING', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=3048,
   serialized_end=3204,
 )
@@ -106,23 +106,23 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_REGRESSION_MODE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_REGRESSION_MODE_DISABLED', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_REGRESSION_MODE_INCREASING', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_REGRESSION_MODE_DECREASING', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=3207,
   serialized_end=3370,
 )
@@ -137,23 +137,23 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='UNKNOWN_VTS_PROFILING_TYPE', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_PROFILING_TYPE_TIMESTAMP', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_PROFILING_TYPE_LABELED_VECTOR', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='VTS_PROFILING_TYPE_UNLABELED_VECTOR', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=3373,
   serialized_end=3537,
 )
@@ -195,77 +195,77 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -289,42 +289,42 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -348,14 +348,14 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -379,63 +379,63 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -459,77 +459,77 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -553,28 +553,28 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -598,70 +598,70 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -685,42 +685,42 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -744,28 +744,28 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -789,28 +789,28 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -834,28 +834,28 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -879,119 +879,119 @@
       has_default_value=False, default_value=_b(""),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
+      serialized_options=_b('\030\001'), file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1015,42 +1015,42 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1074,28 +1074,28 @@
       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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -1146,118 +1146,112 @@
 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,), dict(
-  DESCRIPTOR = _ANDROIDDEVICEINFOMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+AndroidDeviceInfoMessage = _reflection.GeneratedProtocolMessageType('AndroidDeviceInfoMessage', (_message.Message,), {
+  'DESCRIPTOR' : _ANDROIDDEVICEINFOMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.AndroidDeviceInfoMessage)
-  ))
+  })
 _sym_db.RegisterMessage(AndroidDeviceInfoMessage)
 
-AndroidBuildInfo = _reflection.GeneratedProtocolMessageType('AndroidBuildInfo', (_message.Message,), dict(
-  DESCRIPTOR = _ANDROIDBUILDINFO,
-  __module__ = 'VtsReportMessage_pb2'
+AndroidBuildInfo = _reflection.GeneratedProtocolMessageType('AndroidBuildInfo', (_message.Message,), {
+  'DESCRIPTOR' : _ANDROIDBUILDINFO,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.AndroidBuildInfo)
-  ))
+  })
 _sym_db.RegisterMessage(AndroidBuildInfo)
 
-VtsHostInfo = _reflection.GeneratedProtocolMessageType('VtsHostInfo', (_message.Message,), dict(
-  DESCRIPTOR = _VTSHOSTINFO,
-  __module__ = 'VtsReportMessage_pb2'
+VtsHostInfo = _reflection.GeneratedProtocolMessageType('VtsHostInfo', (_message.Message,), {
+  'DESCRIPTOR' : _VTSHOSTINFO,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.VtsHostInfo)
-  ))
+  })
 _sym_db.RegisterMessage(VtsHostInfo)
 
-TestCaseReportMessage = _reflection.GeneratedProtocolMessageType('TestCaseReportMessage', (_message.Message,), dict(
-  DESCRIPTOR = _TESTCASEREPORTMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+TestCaseReportMessage = _reflection.GeneratedProtocolMessageType('TestCaseReportMessage', (_message.Message,), {
+  'DESCRIPTOR' : _TESTCASEREPORTMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.TestCaseReportMessage)
-  ))
+  })
 _sym_db.RegisterMessage(TestCaseReportMessage)
 
-ProfilingReportMessage = _reflection.GeneratedProtocolMessageType('ProfilingReportMessage', (_message.Message,), dict(
-  DESCRIPTOR = _PROFILINGREPORTMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+ProfilingReportMessage = _reflection.GeneratedProtocolMessageType('ProfilingReportMessage', (_message.Message,), {
+  'DESCRIPTOR' : _PROFILINGREPORTMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.ProfilingReportMessage)
-  ))
+  })
 _sym_db.RegisterMessage(ProfilingReportMessage)
 
-SystraceReportMessage = _reflection.GeneratedProtocolMessageType('SystraceReportMessage', (_message.Message,), dict(
-  DESCRIPTOR = _SYSTRACEREPORTMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+SystraceReportMessage = _reflection.GeneratedProtocolMessageType('SystraceReportMessage', (_message.Message,), {
+  'DESCRIPTOR' : _SYSTRACEREPORTMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.SystraceReportMessage)
-  ))
+  })
 _sym_db.RegisterMessage(SystraceReportMessage)
 
-CoverageReportMessage = _reflection.GeneratedProtocolMessageType('CoverageReportMessage', (_message.Message,), dict(
-  DESCRIPTOR = _COVERAGEREPORTMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+CoverageReportMessage = _reflection.GeneratedProtocolMessageType('CoverageReportMessage', (_message.Message,), {
+  'DESCRIPTOR' : _COVERAGEREPORTMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.CoverageReportMessage)
-  ))
+  })
 _sym_db.RegisterMessage(CoverageReportMessage)
 
-HalInterfaceMessage = _reflection.GeneratedProtocolMessageType('HalInterfaceMessage', (_message.Message,), dict(
-  DESCRIPTOR = _HALINTERFACEMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+HalInterfaceMessage = _reflection.GeneratedProtocolMessageType('HalInterfaceMessage', (_message.Message,), {
+  'DESCRIPTOR' : _HALINTERFACEMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.HalInterfaceMessage)
-  ))
+  })
 _sym_db.RegisterMessage(HalInterfaceMessage)
 
-ApiCoverageReportMessage = _reflection.GeneratedProtocolMessageType('ApiCoverageReportMessage', (_message.Message,), dict(
-  DESCRIPTOR = _APICOVERAGEREPORTMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+ApiCoverageReportMessage = _reflection.GeneratedProtocolMessageType('ApiCoverageReportMessage', (_message.Message,), {
+  'DESCRIPTOR' : _APICOVERAGEREPORTMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.ApiCoverageReportMessage)
-  ))
+  })
 _sym_db.RegisterMessage(ApiCoverageReportMessage)
 
-LogMessage = _reflection.GeneratedProtocolMessageType('LogMessage', (_message.Message,), dict(
-  DESCRIPTOR = _LOGMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+LogMessage = _reflection.GeneratedProtocolMessageType('LogMessage', (_message.Message,), {
+  'DESCRIPTOR' : _LOGMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.LogMessage)
-  ))
+  })
 _sym_db.RegisterMessage(LogMessage)
 
-UrlResourceMessage = _reflection.GeneratedProtocolMessageType('UrlResourceMessage', (_message.Message,), dict(
-  DESCRIPTOR = _URLRESOURCEMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+UrlResourceMessage = _reflection.GeneratedProtocolMessageType('UrlResourceMessage', (_message.Message,), {
+  'DESCRIPTOR' : _URLRESOURCEMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.UrlResourceMessage)
-  ))
+  })
 _sym_db.RegisterMessage(UrlResourceMessage)
 
-TestReportMessage = _reflection.GeneratedProtocolMessageType('TestReportMessage', (_message.Message,), dict(
-  DESCRIPTOR = _TESTREPORTMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+TestReportMessage = _reflection.GeneratedProtocolMessageType('TestReportMessage', (_message.Message,), {
+  'DESCRIPTOR' : _TESTREPORTMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.TestReportMessage)
-  ))
+  })
 _sym_db.RegisterMessage(TestReportMessage)
 
-TestPlanReportMessage = _reflection.GeneratedProtocolMessageType('TestPlanReportMessage', (_message.Message,), dict(
-  DESCRIPTOR = _TESTPLANREPORTMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+TestPlanReportMessage = _reflection.GeneratedProtocolMessageType('TestPlanReportMessage', (_message.Message,), {
+  'DESCRIPTOR' : _TESTPLANREPORTMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.TestPlanReportMessage)
-  ))
+  })
 _sym_db.RegisterMessage(TestPlanReportMessage)
 
-DashboardPostMessage = _reflection.GeneratedProtocolMessageType('DashboardPostMessage', (_message.Message,), dict(
-  DESCRIPTOR = _DASHBOARDPOSTMESSAGE,
-  __module__ = 'VtsReportMessage_pb2'
+DashboardPostMessage = _reflection.GeneratedProtocolMessageType('DashboardPostMessage', (_message.Message,), {
+  'DESCRIPTOR' : _DASHBOARDPOSTMESSAGE,
+  '__module__' : 'VtsReportMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.DashboardPostMessage)
-  ))
+  })
 _sym_db.RegisterMessage(DashboardPostMessage)
 
 
-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'))
+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
 # @@protoc_insertion_point(module_scope)
diff --git a/proto/VtsResourceControllerMessage_pb2.py b/proto/VtsResourceControllerMessage_pb2.py
index 17b831a..d9acb3f 100644
--- a/proto/VtsResourceControllerMessage_pb2.py
+++ b/proto/VtsResourceControllerMessage_pb2.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: VtsResourceControllerMessage.proto
 
@@ -8,7 +9,6 @@
 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 @@
   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 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='FMQ_UNKNOWN', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_CREATE', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_READ', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_READ_BLOCKING', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_READ_BLOCKING_LONG', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_WRITE', index=5, number=5,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_WRITE_BLOCKING', index=6, number=6,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_WRITE_BLOCKING_LONG', index=7, number=7,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_AVAILABLE_WRITE', index=8, number=8,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_AVAILABLE_READ', index=9, number=9,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_GET_QUANTUM_SIZE', index=10, number=10,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_GET_QUANTUM_COUNT', index=11, number=11,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_IS_VALID', index=12, number=12,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='FMQ_GET_DESC_ADDR', index=13, number=13,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=1129,
   serialized_end=1445,
 )
@@ -105,47 +105,47 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_UNKNOWN', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_ALLOCATE', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_START_READ', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_START_READ_RANGE', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_READ_BYTES', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_START_UPDATE', index=5, number=5,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_START_UPDATE_RANGE', index=6, number=6,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_UPDATE_BYTES', index=7, number=7,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_COMMIT', index=8, number=8,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='MEM_PROTO_GET_SIZE', index=9, number=9,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=1448,
   serialized_end=1729,
 )
@@ -160,27 +160,27 @@
   values=[
     _descriptor.EnumValueDescriptor(
       name='HANDLE_PROTO_UNKNOWN', index=0, number=0,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HANDLE_PROTO_CREATE_FILE', index=1, number=1,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HANDLE_PROTO_READ_FILE', index=2, number=2,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HANDLE_PROTO_WRITE_FILE', index=3, number=3,
-      options=None,
+      serialized_options=None,
       type=None),
     _descriptor.EnumValueDescriptor(
       name='HANDLE_PROTO_DELETE', index=4, number=4,
-      options=None,
+      serialized_options=None,
       type=None),
   ],
   containing_type=None,
-  options=None,
+  serialized_options=None,
   serialized_start=1732,
   serialized_end=1884,
 )
@@ -232,84 +232,84 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -333,35 +333,35 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -385,49 +385,49 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -451,35 +451,35 @@
       has_default_value=False, default_value=False,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -503,42 +503,42 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -562,35 +562,35 @@
       has_default_value=False, default_value=False,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
     _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,
-      options=None),
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
   nested_types=[],
   enum_types=[
   ],
-  options=None,
+  serialized_options=None,
   is_extendable=False,
   syntax='proto2',
   extension_ranges=[],
@@ -615,50 +615,50 @@
 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,), dict(
-  DESCRIPTOR = _FMQREQUESTMESSAGE,
-  __module__ = 'VtsResourceControllerMessage_pb2'
+FmqRequestMessage = _reflection.GeneratedProtocolMessageType('FmqRequestMessage', (_message.Message,), {
+  'DESCRIPTOR' : _FMQREQUESTMESSAGE,
+  '__module__' : 'VtsResourceControllerMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.FmqRequestMessage)
-  ))
+  })
 _sym_db.RegisterMessage(FmqRequestMessage)
 
-FmqResponseMessage = _reflection.GeneratedProtocolMessageType('FmqResponseMessage', (_message.Message,), dict(
-  DESCRIPTOR = _FMQRESPONSEMESSAGE,
-  __module__ = 'VtsResourceControllerMessage_pb2'
+FmqResponseMessage = _reflection.GeneratedProtocolMessageType('FmqResponseMessage', (_message.Message,), {
+  'DESCRIPTOR' : _FMQRESPONSEMESSAGE,
+  '__module__' : 'VtsResourceControllerMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.FmqResponseMessage)
-  ))
+  })
 _sym_db.RegisterMessage(FmqResponseMessage)
 
-HidlMemoryRequestMessage = _reflection.GeneratedProtocolMessageType('HidlMemoryRequestMessage', (_message.Message,), dict(
-  DESCRIPTOR = _HIDLMEMORYREQUESTMESSAGE,
-  __module__ = 'VtsResourceControllerMessage_pb2'
+HidlMemoryRequestMessage = _reflection.GeneratedProtocolMessageType('HidlMemoryRequestMessage', (_message.Message,), {
+  'DESCRIPTOR' : _HIDLMEMORYREQUESTMESSAGE,
+  '__module__' : 'VtsResourceControllerMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.HidlMemoryRequestMessage)
-  ))
+  })
 _sym_db.RegisterMessage(HidlMemoryRequestMessage)
 
-HidlMemoryResponseMessage = _reflection.GeneratedProtocolMessageType('HidlMemoryResponseMessage', (_message.Message,), dict(
-  DESCRIPTOR = _HIDLMEMORYRESPONSEMESSAGE,
-  __module__ = 'VtsResourceControllerMessage_pb2'
+HidlMemoryResponseMessage = _reflection.GeneratedProtocolMessageType('HidlMemoryResponseMessage', (_message.Message,), {
+  'DESCRIPTOR' : _HIDLMEMORYRESPONSEMESSAGE,
+  '__module__' : 'VtsResourceControllerMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.HidlMemoryResponseMessage)
-  ))
+  })
 _sym_db.RegisterMessage(HidlMemoryResponseMessage)
 
-HidlHandleRequestMessage = _reflection.GeneratedProtocolMessageType('HidlHandleRequestMessage', (_message.Message,), dict(
-  DESCRIPTOR = _HIDLHANDLEREQUESTMESSAGE,
-  __module__ = 'VtsResourceControllerMessage_pb2'
+HidlHandleRequestMessage = _reflection.GeneratedProtocolMessageType('HidlHandleRequestMessage', (_message.Message,), {
+  'DESCRIPTOR' : _HIDLHANDLEREQUESTMESSAGE,
+  '__module__' : 'VtsResourceControllerMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.HidlHandleRequestMessage)
-  ))
+  })
 _sym_db.RegisterMessage(HidlHandleRequestMessage)
 
-HidlHandleResponseMessage = _reflection.GeneratedProtocolMessageType('HidlHandleResponseMessage', (_message.Message,), dict(
-  DESCRIPTOR = _HIDLHANDLERESPONSEMESSAGE,
-  __module__ = 'VtsResourceControllerMessage_pb2'
+HidlHandleResponseMessage = _reflection.GeneratedProtocolMessageType('HidlHandleResponseMessage', (_message.Message,), {
+  'DESCRIPTOR' : _HIDLHANDLERESPONSEMESSAGE,
+  '__module__' : 'VtsResourceControllerMessage_pb2'
   # @@protoc_insertion_point(class_scope:android.vts.HidlHandleResponseMessage)
-  ))
+  })
 _sym_db.RegisterMessage(HidlHandleResponseMessage)
 
 
-DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\025com.android.vts.protoB\034VtsResourceControllerMessage'))
+DESCRIPTOR._options = None
 # @@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 bca568d..e00acfd 100755
--- a/runners/host/tcp_client/vts_tcp_client.py
+++ b/runners/host/tcp_client/vts_tcp_client.py
@@ -462,8 +462,8 @@
             stderr = [self.FAIL_RESPONSE_MSG]
             self.error = self.FAIL_RESPONSE_MSG
         else:
-            stdout = resp.stdout
-            stderr = resp.stderr
+            stdout = resp.stdout_str
+            stderr = resp.stderr_str
             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 363715a..c5d530f 100644
--- a/runners/target/vts_hal_hidl_target/Android.bp
+++ b/runners/target/vts_hal_hidl_target/Android.bp
@@ -25,6 +25,7 @@
         "VtsCoreUtil.cpp",
     ],
 
+    vendor_available: true,
     cflags: ["-Wall", "-Werror"],
 
     shared_libs: [
diff --git a/specification/Android.bp b/specification/Android.bp
new file mode 100644
index 0000000..30e3772
--- /dev/null
+++ b/specification/Android.bp
@@ -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.
+//
+
+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
deleted file mode 100644
index eb84bfc..0000000
--- a/specification/Android.mk
+++ /dev/null
@@ -1,96 +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.
-#
-
-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/OWNERS b/testcases/host/fastboot_getvar/OWNERS
new file mode 100644
index 0000000..0427b50
--- /dev/null
+++ b/testcases/host/fastboot_getvar/OWNERS
@@ -0,0 +1,5 @@
+# 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 1c4b709..806c27d 100644
--- a/testcases/host/fastboot_getvar/src/com/android/tests/FastbootGetvarUserspaceTest.java
+++ b/testcases/host/fastboot_getvar/src/com/android/tests/FastbootGetvarUserspaceTest.java
@@ -22,6 +22,7 @@
 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.invoker.TestInformation;
@@ -44,6 +45,7 @@
 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;
diff --git a/testcases/host/fastboot_test/OWNERS b/testcases/host/fastboot_test/OWNERS
new file mode 100644
index 0000000..d82cb64
--- /dev/null
+++ b/testcases/host/fastboot_test/OWNERS
@@ -0,0 +1,4 @@
+# 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 a6916c8..ce6415e 100644
--- a/testcases/host/fastboot_test/src/com/android/tests/FastbootVerifyUserspaceTest.java
+++ b/testcases/host/fastboot_test/src/com/android/tests/FastbootVerifyUserspaceTest.java
@@ -16,6 +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;
@@ -46,6 +47,7 @@
 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.
diff --git a/testcases/host/firmware_dtbo_test/OWNERS b/testcases/host/firmware_dtbo_test/OWNERS
new file mode 100644
index 0000000..57b1211
--- /dev/null
+++ b/testcases/host/firmware_dtbo_test/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 30545
+smuckle@google.com
diff --git a/testcases/host/firmware_dtbo_test/src/com/android/tests/firmwaredtbo/FirmwareDtboVerification.java b/testcases/host/firmware_dtbo_test/src/com/android/tests/firmwaredtbo/FirmwareDtboVerification.java
index 33acc78..76607f9 100644
--- a/testcases/host/firmware_dtbo_test/src/com/android/tests/firmwaredtbo/FirmwareDtboVerification.java
+++ b/testcases/host/firmware_dtbo_test/src/com/android/tests/firmwaredtbo/FirmwareDtboVerification.java
@@ -258,7 +258,8 @@
                 CommandStatus.SUCCESS);
         ArrayList<String> overlayArg = new ArrayList<>();
         for (String overlay_idx : overlay_idx_string.split(",")) {
-            String overlayFileName = "dumped_dtbo." + overlay_idx.replaceAll("\\s+$", "");
+            String overlayFileName = "dumped_dtbo." +
+                        overlay_idx.replaceAll("\\s+", "").replaceAll("\"", "");
             File overlayFile = new File(mTemptFolder, overlayFileName);
             // Push the dumped overlay dtbo files to the same direcly of ufdt_verify_overlay
             File remoteOverLayFile = new File(ufdtVerifierParent, overlayFileName);
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 3105fbc..dc6737d 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,6 +30,8 @@
 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;
@@ -86,7 +88,18 @@
         return true;
     }
 
-    private void CheckImageHeader(String imagePath, boolean isRecovery) throws IOException {
+    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 {
         BootImageInfo bootImgInfo = new BootImageInfo(imagePath);
         // Check kernel size.
         Assert.assertNotEquals(
@@ -95,9 +108,12 @@
             // Check image version.
             Assert.assertTrue("Device must at least have a boot image of version 2",
                     (bootImgInfo.getImgHeaderVer() >= 2));
-            // Check ramdisk size.
-            Assert.assertNotEquals(
-                    "boot.img must contain ramdisk", bootImgInfo.getRamdiskSize(), 0);
+            // 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);
+            }
         } 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
new file mode 100644
index 0000000..57b1211
--- /dev/null
+++ b/testcases/host/kernel_proc_file_api_test/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 30545
+smuckle@google.com
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 2118262..fe247d6 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
@@ -267,24 +267,6 @@
         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.
@@ -322,45 +304,6 @@
         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 8a75a1b..7e77164 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,11 +89,8 @@
     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
new file mode 100644
index 0000000..57b1211
--- /dev/null
+++ b/testcases/host/selinux_test/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 30545
+smuckle@google.com
diff --git a/testcases/target/hal_lights/Android.bp b/testcases/target/hal_lights/Android.bp
deleted file mode 100644
index 4d34b0a..0000000
--- a/testcases/target/hal_lights/Android.bp
+++ /dev/null
@@ -1,58 +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 {
-    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
deleted file mode 100644
index 4523f58..0000000
--- a/testcases/target/hal_lights/AndroidTest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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
deleted file mode 100644
index 100689f..0000000
--- a/testcases/target/hal_lights/hal_lights_basic_test.cpp
+++ /dev/null
@@ -1,81 +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.
- */
-
-#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
deleted file mode 100644
index 02dd16e..0000000
--- a/testcases/target/hal_power/Android.bp
+++ /dev/null
@@ -1,59 +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 {
-    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
deleted file mode 100644
index 8b31176..0000000
--- a/testcases/target/hal_power/AndroidTest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?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
deleted file mode 100644
index c6eaeac..0000000
--- a/testcases/target/hal_power/hal_power_basic_test.cpp
+++ /dev/null
@@ -1,164 +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.
- */
-
-#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
deleted file mode 100644
index e69de29..0000000
--- a/testcases/template/mobly/__init__.py
+++ /dev/null
diff --git a/testcases/template/mobly/mobly_test.py b/testcases/template/mobly/mobly_test.py
deleted file mode 100644
index aabcbab..0000000
--- a/testcases/template/mobly/mobly_test.py
+++ /dev/null
@@ -1,285 +0,0 @@
-#
-# 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 d8b0f9b..eaac48f 100644
--- a/tools/vts-core-tradefed/Android.bp
+++ b/tools/vts-core-tradefed/Android.bp
@@ -34,7 +34,7 @@
     wrapper: "etc/vts-tradefed",
     short_name: "VTS",
     full_name: "Vendor Test Suite",
-    version: "12.1_r11",
+    version: "13_r8",
     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 5d9df75..3d394bb 100644
--- a/tools/vts-core-tradefed/res/config/vts-ccd.xml
+++ b/tools/vts-core-tradefed/res/config/vts-ccd.xml
@@ -19,7 +19,11 @@
     <option name="plan" value="vts-ccd" />
     <option name="test-tag" value="vts-ccd" />
 
-    <option name="compatibility:skip-all-system-status-check" value="true" />
+    <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>
 
     <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 6b6dc9b..a5b1567 100644
--- a/tools/vts-core-tradefed/res/config/vts-kernel.xml
+++ b/tools/vts-core-tradefed/res/config/vts-kernel.xml
@@ -23,6 +23,7 @@
     <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/utils/python/android/api.py b/utils/python/android/api.py
index ab51ed2..b3240d8 100644
--- a/utils/python/android/api.py
+++ b/utils/python/android/api.py
@@ -18,3 +18,5 @@
 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
deleted file mode 100644
index a4eb9db..0000000
--- a/utils/python/coverage/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# 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
deleted file mode 100644
index 3c11a9b..0000000
--- a/utils/python/coverage/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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
deleted file mode 100644
index e69de29..0000000
--- a/utils/python/coverage/__init__.py
+++ /dev/null
diff --git a/utils/python/coverage/arc_summary.py b/utils/python/coverage/arc_summary.py
deleted file mode 100644
index ae9138f..0000000
--- a/utils/python/coverage/arc_summary.py
+++ /dev/null
@@ -1,90 +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.
-#
-
-
-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
deleted file mode 100644
index 6784be7..0000000
--- a/utils/python/coverage/arc_summary_test.py
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/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
deleted file mode 100644
index 794ea9b..0000000
--- a/utils/python/coverage/block_summary.py
+++ /dev/null
@@ -1,65 +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.
-#
-
-
-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
deleted file mode 100644
index c176e5f..0000000
--- a/utils/python/coverage/coverage_report.py
+++ /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.
-#
-"""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
deleted file mode 100644
index 049d84c..0000000
--- a/utils/python/coverage/coverage_report_test.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/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
deleted file mode 100644
index 217b028..0000000
--- a/utils/python/coverage/coverage_utils.py
+++ /dev/null
@@ -1,771 +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.
-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
deleted file mode 100644
index 211188a..0000000
--- a/utils/python/coverage/file_summary.py
+++ /dev/null
@@ -1,42 +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.
-#
-
-
-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
deleted file mode 100644
index 3cf89ea..0000000
--- a/utils/python/coverage/function_summary.py
+++ /dev/null
@@ -1,102 +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.
-#
-
-
-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
deleted file mode 100644
index 16ea4db..0000000
--- a/utils/python/coverage/function_summary_test.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/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
deleted file mode 100644
index b2dbc3c..0000000
--- a/utils/python/coverage/gcda_parser.py
+++ /dev/null
@@ -1,192 +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.
-#
-"""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
deleted file mode 100644
index df1b4b0..0000000
--- a/utils/python/coverage/gcda_parser_test.py
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/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
deleted file mode 100644
index 62bafd9..0000000
--- a/utils/python/coverage/gcno_parser.py
+++ /dev/null
@@ -1,242 +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.
-#
-"""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
deleted file mode 100644
index 9918817..0000000
--- a/utils/python/coverage/gcno_parser_test.py
+++ /dev/null
@@ -1,219 +0,0 @@
-#!/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
deleted file mode 100644
index fbee873..0000000
--- a/utils/python/coverage/parser.py
+++ /dev/null
@@ -1,116 +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.
-#
-"""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
deleted file mode 100644
index 0916f9a..0000000
--- a/utils/python/coverage/parser_test.py
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/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
deleted file mode 100644
index b74f943..0000000
--- a/utils/python/coverage/sancov_parser.py
+++ /dev/null
@@ -1,105 +0,0 @@
-#
-# 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
deleted file mode 100644
index 852f2f2..0000000
--- a/utils/python/coverage/sancov_parser_test.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/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
deleted file mode 100644
index 17b0954..0000000
--- a/utils/python/coverage/sancov_utils.py
+++ /dev/null
@@ -1,346 +0,0 @@
-#
-# 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
deleted file mode 100644
index 39d245a..0000000
--- a/utils/python/coverage/testdata/sample.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#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
deleted file mode 100644
index 144d91d..0000000
--- a/utils/python/coverage/testdata/sample.gcda
+++ /dev/null
Binary files differ
diff --git a/utils/python/coverage/testdata/sample.gcno b/utils/python/coverage/testdata/sample.gcno
deleted file mode 100644
index 2f99907..0000000
--- a/utils/python/coverage/testdata/sample.gcno
+++ /dev/null
Binary files differ
diff --git a/utils/python/coverage/testdata/sample.sancov b/utils/python/coverage/testdata/sample.sancov
deleted file mode 100644
index b65650b..0000000
--- a/utils/python/coverage/testdata/sample.sancov
+++ /dev/null
Binary files differ