Merge "modified use of generated test in kernel ltp"
diff --git a/doc/testcase_develop_manual/codelab_host_driven_test.md b/doc/testcase_develop_manual/codelab_host_driven_test.md
index 4cfea62..5971133 100644
--- a/doc/testcase_develop_manual/codelab_host_driven_test.md
+++ b/doc/testcase_develop_manual/codelab_host_driven_test.md
@@ -1,8 +1,8 @@
# Codelab - VTS Host-Driven, Structural Test
-##1. Project setup
+## 1. Project setup
-###1.1. Setup a local Android repository
+### 1.1. Setup a local Android repository
`$ export branch=master` # currently, internal master is mainly supported.
@@ -18,7 +18,7 @@
`$ ls test/vts`
-###1.2. Create a test project
+### 1.2. Create a test project
Create your test project directory under,
@@ -30,7 +30,7 @@
- `test/vts/testcases/**kernel**/<your project name>` if your project is for kernel or kernel modules
-###1.3. Create Android.mk file
+### 1.3. Create Android.mk file
`$ vi test/vts/testcases/host/codelab/hello_world/Android.mk`
@@ -64,7 +64,7 @@
so that the Android build system can store the compiled executable to
a designated output directory (under `out/` directory) for packaging.
-###1.4. Create AndroidTest.xml file
+### 1.4. Create AndroidTest.xml file
`$ vi test/vts/testcases/host/codelab/hello_world/AndroidTest.xml`
@@ -111,13 +111,13 @@
```
---
-##2. Design your test case
+## 2. Design your test case
-###2.1. Declare a python module
+### 2.1. Declare a python module
`$ touch test/vts/testcases/host/codelab/hello_world/__init__.py`
-###2.2. Actual test case code
+### 2.2. Actual test case code
`$ vi test/vts/testcases/host/codelab/hello_world/CodeLabHelloWorldTest.py`
@@ -166,7 +166,7 @@
```
---
-###2.3. Test case config
+### 2.3. Test case config
`$ vi test/vts/testcases/host/codelab/hello_world/CodeLabHelloWorldTest.config`
@@ -188,7 +188,7 @@
```
---
-###2.4. Create a test suite
+### 2.4. Create a test suite
`$ vi test/vts/tools/vts-tradefed/res/config/vts-codelab.xml`
@@ -206,9 +206,9 @@
---
-##3. Build and Run
+## 3. Build and Run
-###3.1. Build
+### 3.1. Build
`$ . build/envsetup.sh`
@@ -220,7 +220,7 @@
`$ make vts -j 10`
-###3.2. Run
+### 3.2. Run
`$ vts-tradefed`
@@ -234,7 +234,7 @@
`target$ setenforce 0`
-##4. Serving
+## 4. Serving
[Dashboard](https://android-vts-internal.googleplex.com)
diff --git a/proto/InterfaceSpecificationMessage.proto b/proto/InterfaceSpecificationMessage.proto
index 598a21e..e660403 100644
--- a/proto/InterfaceSpecificationMessage.proto
+++ b/proto/InterfaceSpecificationMessage.proto
@@ -92,6 +92,16 @@
}
+// To specify the measured native code coverage raw data.
+message NativeCodeCoverageRawDataMessage {
+ // gcno file path.
+ optional bytes file_path = 1;
+
+ // content of a gcda file.
+ optional bytes gcda = 11;
+}
+
+
// To specify a function.
message FunctionSpecificationMessage {
// the function name.
@@ -112,8 +122,11 @@
// profiling data.
repeated float profiling_data = 101;
- // coverage measurement data.
- repeated uint32 coverage_data = 201;
+ // measured processed coverage data.
+ repeated uint32 processed_coverage_data = 201;
+
+ // measured raw coverage data.
+ repeated NativeCodeCoverageRawDataMessage raw_coverage_data = 202;
// not a user-provided variable. used by the frameworks to tell the sub
// struct hierarchy.
diff --git a/proto/InterfaceSpecificationMessage_pb2.py b/proto/InterfaceSpecificationMessage_pb2.py
index ed68097..0647901 100644
--- a/proto/InterfaceSpecificationMessage_pb2.py
+++ b/proto/InterfaceSpecificationMessage_pb2.py
@@ -14,7 +14,7 @@
DESCRIPTOR = _descriptor.FileDescriptor(
name='InterfaceSpecificationMessage.proto',
package='android.vts',
- serialized_pb='\n#InterfaceSpecificationMessage.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\"\xec\x02\n\x1c\x46unctionSpecificationMessage\x12\x0c\n\x04name\x18\x01 \x01(\x0c\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\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\x16\n\x0eprofiling_data\x18\x65 \x03(\x02\x12\x16\n\rcoverage_data\x18\xc9\x01 \x03(\r\x12\x14\n\x0bparent_path\x18\xad\x02 \x01(\x0c\"\xea\x02\n\x16ScalarDataValueMessage\x12\x0c\n\x04\x62ool\x18\x01 \x01(\x05\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\x18\n\x0fpointer_pointer\x18\xfb\x01 \x01(\r\x12\r\n\x04\x62its\x18\xe9\x07 \x01(\r\"\xee\x01\n\x16VectorDataValueMessage\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.android.vts.VariableType\x12\x0c\n\x04size\x18\x02 \x01(\r\x12\x13\n\x0bscalar_type\x18\x0b \x01(\x0c\x12\x32\n\x05value\x18\x0c \x03(\x0b\x32#.android.vts.ScalarDataValueMessage\x12\x13\n\x0bstruct_type\x18\x15 \x01(\x0c\x12?\n\x0cstruct_value\x18\x16 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\"\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\"9\n\x14\x45numDataValueMessage\x12\x12\n\nenumerator\x18\x01 \x03(\x0c\x12\r\n\x05value\x18\x02 \x03(\r\"\xbe\x05\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.VectorDataValueMessage\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\x0bunion_value\x18\x97\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\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\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\"\xd3\x03\n\x1dInterfaceSpecificationMessage\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:\x01\x31\x12\x16\n\x0e\x63omponent_name\x18\x04 \x01(\x0c\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\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*\xaa\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*\x8c\x01\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\x10\n\x0b\x42IONIC_LIBM\x10\xe9\x07*\xe3\x01\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')
+ serialized_pb='\n#InterfaceSpecificationMessage.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\x04gcno\x18\x0b \x01(\x0c\"\xc1\x03\n\x1c\x46unctionSpecificationMessage\x12\x0c\n\x04name\x18\x01 \x01(\x0c\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\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\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\"\xea\x02\n\x16ScalarDataValueMessage\x12\x0c\n\x04\x62ool\x18\x01 \x01(\x05\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\x18\n\x0fpointer_pointer\x18\xfb\x01 \x01(\r\x12\r\n\x04\x62its\x18\xe9\x07 \x01(\r\"\xee\x01\n\x16VectorDataValueMessage\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.android.vts.VariableType\x12\x0c\n\x04size\x18\x02 \x01(\r\x12\x13\n\x0bscalar_type\x18\x0b \x01(\x0c\x12\x32\n\x05value\x18\x0c \x03(\x0b\x32#.android.vts.ScalarDataValueMessage\x12\x13\n\x0bstruct_type\x18\x15 \x01(\x0c\x12?\n\x0cstruct_value\x18\x16 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\"\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\"9\n\x14\x45numDataValueMessage\x12\x12\n\nenumerator\x18\x01 \x03(\x0c\x12\r\n\x05value\x18\x02 \x03(\r\"\xbe\x05\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.VectorDataValueMessage\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\x0bunion_value\x18\x97\x01 \x03(\x0b\x32).android.vts.VariableSpecificationMessage\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\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\"\xd3\x03\n\x1dInterfaceSpecificationMessage\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:\x01\x31\x12\x16\n\x0e\x63omponent_name\x18\x04 \x01(\x0c\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\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*\xaa\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*\x8c\x01\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\x10\n\x0b\x42IONIC_LIBM\x10\xe9\x07*\xe3\x01\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')
_COMPONENTCLASS = _descriptor.EnumDescriptor(
name='ComponentClass',
@@ -53,8 +53,8 @@
],
containing_type=None,
options=None,
- serialized_start=2888,
- serialized_end=3058,
+ serialized_start=3042,
+ serialized_end=3212,
)
ComponentClass = enum_type_wrapper.EnumTypeWrapper(_COMPONENTCLASS)
@@ -107,8 +107,8 @@
],
containing_type=None,
options=None,
- serialized_start=3061,
- serialized_end=3201,
+ serialized_start=3215,
+ serialized_end=3355,
)
ComponentType = enum_type_wrapper.EnumTypeWrapper(_COMPONENTTYPE)
@@ -165,8 +165,8 @@
],
containing_type=None,
options=None,
- serialized_start=3204,
- serialized_end=3431,
+ serialized_start=3358,
+ serialized_end=3585,
)
VariableType = enum_type_wrapper.EnumTypeWrapper(_VARIABLETYPE)
@@ -250,6 +250,41 @@
)
+_NATIVECODECOVERAGERAWDATAMESSAGE = _descriptor.Descriptor(
+ name='NativeCodeCoverageRawDataMessage',
+ full_name='android.vts.NativeCodeCoverageRawDataMessage',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='file_path', full_name='android.vts.NativeCodeCoverageRawDataMessage.file_path', index=0,
+ number=1, type=12, cpp_type=9, label=1,
+ has_default_value=False, default_value="",
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ options=None),
+ _descriptor.FieldDescriptor(
+ name='gcno', full_name='android.vts.NativeCodeCoverageRawDataMessage.gcno', index=1,
+ number=11, type=12, cpp_type=9, label=1,
+ has_default_value=False, default_value="",
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ options=None),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ options=None,
+ is_extendable=False,
+ extension_ranges=[],
+ serialized_start=155,
+ serialized_end=222,
+)
+
+
_FUNCTIONSPECIFICATIONMESSAGE = _descriptor.Descriptor(
name='FunctionSpecificationMessage',
full_name='android.vts.FunctionSpecificationMessage',
@@ -300,14 +335,21 @@
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
- name='coverage_data', full_name='android.vts.FunctionSpecificationMessage.coverage_data', index=6,
+ name='processed_coverage_data', full_name='android.vts.FunctionSpecificationMessage.processed_coverage_data', index=6,
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),
_descriptor.FieldDescriptor(
- name='parent_path', full_name='android.vts.FunctionSpecificationMessage.parent_path', index=7,
+ name='raw_coverage_data', full_name='android.vts.FunctionSpecificationMessage.raw_coverage_data', index=7,
+ 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),
+ _descriptor.FieldDescriptor(
+ name='parent_path', full_name='android.vts.FunctionSpecificationMessage.parent_path', index=8,
number=301, type=12, cpp_type=9, label=1,
has_default_value=False, default_value="",
message_type=None, enum_type=None, containing_type=None,
@@ -322,8 +364,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=156,
- serialized_end=520,
+ serialized_start=225,
+ serialized_end=674,
)
@@ -476,8 +518,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=523,
- serialized_end=885,
+ serialized_start=677,
+ serialized_end=1039,
)
@@ -539,8 +581,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=888,
- serialized_end=1126,
+ serialized_start=1042,
+ serialized_end=1280,
)
@@ -595,8 +637,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=1129,
- serialized_end=1338,
+ serialized_start=1283,
+ serialized_end=1492,
)
@@ -630,8 +672,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=1340,
- serialized_end=1397,
+ serialized_start=1494,
+ serialized_end=1551,
)
@@ -665,8 +707,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=1399,
- serialized_end=1456,
+ serialized_start=1553,
+ serialized_end=1610,
)
@@ -798,8 +840,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=1459,
- serialized_end=2161,
+ serialized_start=1613,
+ serialized_end=2315,
)
@@ -854,8 +896,8 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=2164,
- serialized_end=2415,
+ serialized_start=2318,
+ serialized_end=2569,
)
@@ -952,14 +994,15 @@
options=None,
is_extendable=False,
extension_ranges=[],
- serialized_start=2418,
- serialized_end=2885,
+ serialized_start=2572,
+ serialized_end=3039,
)
_FUNCTIONSPECIFICATIONMESSAGE.fields_by_name['return_type'].message_type = _VARIABLESPECIFICATIONMESSAGE
_FUNCTIONSPECIFICATIONMESSAGE.fields_by_name['return_type_hidl'].message_type = _VARIABLESPECIFICATIONMESSAGE
_FUNCTIONSPECIFICATIONMESSAGE.fields_by_name['arg'].message_type = _VARIABLESPECIFICATIONMESSAGE
_FUNCTIONSPECIFICATIONMESSAGE.fields_by_name['callflow'].message_type = _CALLFLOWSPECIFICATIONMESSAGE
+_FUNCTIONSPECIFICATIONMESSAGE.fields_by_name['raw_coverage_data'].message_type = _NATIVECODECOVERAGERAWDATAMESSAGE
_VECTORDATAVALUEMESSAGE.fields_by_name['type'].enum_type = _VARIABLETYPE
_VECTORDATAVALUEMESSAGE.fields_by_name['value'].message_type = _SCALARDATAVALUEMESSAGE
_VECTORDATAVALUEMESSAGE.fields_by_name['struct_value'].message_type = _VARIABLESPECIFICATIONMESSAGE
@@ -982,6 +1025,7 @@
_INTERFACESPECIFICATIONMESSAGE.fields_by_name['attribute'].message_type = _VARIABLESPECIFICATIONMESSAGE
_INTERFACESPECIFICATIONMESSAGE.fields_by_name['sub_struct'].message_type = _STRUCTSPECIFICATIONMESSAGE
DESCRIPTOR.message_types_by_name['CallFlowSpecificationMessage'] = _CALLFLOWSPECIFICATIONMESSAGE
+DESCRIPTOR.message_types_by_name['NativeCodeCoverageRawDataMessage'] = _NATIVECODECOVERAGERAWDATAMESSAGE
DESCRIPTOR.message_types_by_name['FunctionSpecificationMessage'] = _FUNCTIONSPECIFICATIONMESSAGE
DESCRIPTOR.message_types_by_name['ScalarDataValueMessage'] = _SCALARDATAVALUEMESSAGE
DESCRIPTOR.message_types_by_name['VectorDataValueMessage'] = _VECTORDATAVALUEMESSAGE
@@ -998,6 +1042,12 @@
# @@protoc_insertion_point(class_scope:android.vts.CallFlowSpecificationMessage)
+class NativeCodeCoverageRawDataMessage(_message.Message):
+ __metaclass__ = _reflection.GeneratedProtocolMessageType
+ DESCRIPTOR = _NATIVECODECOVERAGERAWDATAMESSAGE
+
+ # @@protoc_insertion_point(class_scope:android.vts.NativeCodeCoverageRawDataMessage)
+
class FunctionSpecificationMessage(_message.Message):
__metaclass__ = _reflection.GeneratedProtocolMessageType
DESCRIPTOR = _FUNCTIONSPECIFICATIONMESSAGE
diff --git a/runners/host/base_test_with_webdb.py b/runners/host/base_test_with_webdb.py
index 1cc712c..41313d8 100644
--- a/runners/host/base_test_with_webdb.py
+++ b/runners/host/base_test_with_webdb.py
@@ -157,53 +157,7 @@
logging.warning("data_file_path not set. PATH=%s",
os.environ["PATH"])
else:
- for src_file in getattr(self, self.COVERAGE_SRC_FILES):
- src_file_name = str(src_file)
- logging.info("coverage - src file: %s", src_file_name)
- coverage = self._current_test_report_msg.coverage.add()
-
- coverage.file_name = src_file_name
- abs_path = os.path.join(self.data_file_path,
- src_file_name)
- src_file_content = None
- if not os.path.exists(abs_path):
- logging.error("couldn't find src file %s",
- abs_path)
- continue
- with open(abs_path, "rb") as f:
- src_file_content = f.read()
-
- if src_file_name.endswith(".c"):
- gcov_file_name = src_file_name.replace(".c",
- ".gcno")
- elif src_file_name.endswith(".cpp"):
- gcov_file_name = src_file_name.replace(".cpp",
- ".gcno")
- elif src_file_name.endswith(".cc"):
- gcov_file_name = src_file_name.replace(".cc",
- ".gcno")
- else:
- logging.error("unsupported source file type %s",
- src_file_name)
- continue
-
- abs_path = os.path.join(self.data_file_path,
- gcov_file_name)
- gcov_file_content = None
- if not os.path.exists(abs_path):
- logging.error("couldn't find gcno file %s",
- abs_path)
- continue
- with open(abs_path, "rb") as f:
- gcov_file_content = f.read()
-
- basic_block_id_list = getattr(
- self, self.COVERAGE_ATTRIBUTE, [])
- if not basic_block_id_list:
- logging.error("no basic block info found")
- coverage.html = GCNO.GenerateCoverageReport(
- src_file_content, gcov_file_content,
- basic_block_id_list)
+ self.ProcessCoverageData()
else:
logging.info("coverage - no coverage src file specified")
return super(BaseTestWithWebDbClass, self)._tearDownTest(test_name)
@@ -303,16 +257,71 @@
self._profiling[name].end_timestamp = self.GetTimestamp()
return True
- def AddCoverageData(self, coverage_data):
- """Adds the given coverage to the class-level list attribute.
+ def SetCoverageData(self, raw_coverage_data):
+ """Sets the given coverage data to the class-level list attribute.
- Currently, only basic block ID is supported.
+ In case of gcda, the file is always appended so the last one alone is
+ sufficient for coverage visualization.
Args:
- coverage_data: a list of strings, each string is for coverage data
- (e.g., basic block ID or control flow event ID).
+ raw_coverage_data: a list of NativeCodeCoverageRawDataMessage.
"""
- logging.info("AddCoverageData %s", coverage_data)
- coverage_data_list = getattr(self, self.COVERAGE_ATTRIBUTE)
- if coverage_data not in coverage_data_list:
- coverage_data_list.append(coverage_data)
+ logging.info("AddCoverageData %s", raw_coverage_data)
+ setattr(self, self.COVERAGE_ATTRIBUTE, raw_coverage_data)
+
+ def ProcessCoverageData(self):
+ """Process reported coverage data and store the produced html(s).
+
+ Returns:
+ True if successful, False otherwise.
+ """
+ coverage_data_list = getattr(
+ self, self.COVERAGE_ATTRIBUTE, [])
+ if not coverage_data_list:
+ logging.error("no coverage data found")
+ return False
+ for src_file in getattr(self, self.COVERAGE_SRC_FILES):
+ src_file_name = str(src_file)
+ logging.info("coverage - src file: %s", src_file_name)
+ coverage = self._current_test_report_msg.coverage.add()
+
+ coverage.file_name = src_file_name
+ abs_path = os.path.join(self.data_file_path,
+ src_file_name)
+ src_file_content = None
+ if not os.path.exists(abs_path):
+ logging.error("couldn't find src file %s", abs_path)
+ return False
+ with open(abs_path, "rb") as f:
+ src_file_content = f.read()
+
+ if src_file_name.endswith(".c"):
+ gcno_file_name = src_file_name.replace(".c", ".gcno")
+ gcda_file_name = src_file_name.replace(".c", ".gcda")
+ elif src_file_name.endswith(".cpp"):
+ gcno_file_name = src_file_name.replace(".cpp", ".gcno")
+ gcda_file_name = src_file_name.replace(".cpp", ".gcda")
+ elif src_file_name.endswith(".cc"):
+ gcno_file_name = src_file_name.replace(".cc", ".gcno")
+ gcda_file_name = src_file_name.replace(".cc", ".gcda")
+ else:
+ logging.error("unsupported source file type %s",
+ src_file_name)
+ return False
+
+ abs_path = os.path.join(self.data_file_path, gcno_file_name)
+ gcno_file_content = None
+ if not os.path.exists(abs_path):
+ logging.error("couldn't find gcno file %s", abs_path)
+ return False
+ with open(abs_path, "rb") as f:
+ gcno_file_content = f.read()
+
+ if coverage_data_list:
+ for coverage_data in coverage_data_list:
+ # TODO: consider path and do exact matching
+ if coverage_data.file_path.contains(gcda_file_name):
+ coverage.html = GCNO.GenerateCoverageReport(
+ src_file_name, src_file_content,
+ gcno_file_content, coverage_data.gcda)
+ return True
diff --git a/sysfuzzer/common/fuzz_tester/FuzzerBase.cpp b/sysfuzzer/common/fuzz_tester/FuzzerBase.cpp
index 6a09b86..f533a9d 100644
--- a/sysfuzzer/common/fuzz_tester/FuzzerBase.cpp
+++ b/sysfuzzer/common/fuzz_tester/FuzzerBase.cpp
@@ -24,7 +24,9 @@
#include <sys/types.h>
#include <unistd.h>
+#include <fstream>
#include <iostream>
+#include <sstream>
#include <string>
#include <vector>
@@ -449,21 +451,20 @@
cout << __func__ << ":" << __LINE__ << " end" << endl;
}
-vector<unsigned>* FuzzerBase::FunctionCallEnd() {
+bool FuzzerBase::FunctionCallEnd(FunctionSpecificationMessage* msg) {
cout << __FUNCTION__ << ": gcov flush " << endl;
- std::vector<unsigned>* result = NULL;
cout << __func__ << endl;
#if USE_GCOV
target_loader_.GcovFlush();
// find the file.
if (!gcov_output_basepath_) {
cerr << __FUNCTION__ << ": no gcov basepath set" << endl;
- return NULL;
+ return false;
}
DIR* srcdir = opendir(gcov_output_basepath_);
if (!srcdir) {
cerr << __func__ << " couln't open " << gcov_output_basepath_ << endl;
- return NULL;
+ return false;
}
int dir_count = 0;
@@ -486,10 +487,27 @@
if (!buffer) {
cerr << __FUNCTION__ << ": OOM" << endl;
closedir(srcdir);
- return NULL;
+ return false;
}
sprintf(buffer, "%s/%s", gcov_output_basepath_, dent->d_name);
- result = android::vts::parse_gcda_file(buffer);
+
+ vector<unsigned>* processed_data = android::vts::parse_gcda_file(buffer);
+ for (const auto& data : *processed_data) {
+ msg->mutable_processed_coverage_data()->Add(data);
+ }
+
+ ifstream gcda_file(buffer);
+ if (gcda_file.is_open()) {
+ cerr << "Unable to open a gcda file. " << buffer << endl;
+ } else {
+ stringstream str_stream;
+ str_stream << gcda_file.rdbuf();
+ gcda_file.close();
+ NativeCodeCoverageRawDataMessage* raw_msg =
+ msg->mutable_raw_coverage_data()->Add();
+ raw_msg->set_file_path(dent->d_name);
+ raw_msg->set_gcda(str_stream.str());
+ }
#if USE_GCOV_DEBUG
if (result) {
for (unsigned int index = 0; index < result->size(); index++) {
@@ -504,7 +522,7 @@
}
closedir(srcdir);
#endif
- return result;
+ return true;
}
} // namespace vts
diff --git a/sysfuzzer/common/fuzz_tester/FuzzerBase.h b/sysfuzzer/common/fuzz_tester/FuzzerBase.h
index 9924204..95a3f69 100644
--- a/sysfuzzer/common/fuzz_tester/FuzzerBase.h
+++ b/sysfuzzer/common/fuzz_tester/FuzzerBase.h
@@ -53,9 +53,8 @@
// Called before calling a target function.
void FunctionCallBegin();
- // Called after calling a target function. Returns a vector which contains
- // the code coverage info.
- vector<unsigned>* FunctionCallEnd();
+ // Called after calling a target function. Fills in the code coverage info.
+ bool FunctionCallEnd(FunctionSpecificationMessage* msg);
protected:
// a pointer to a HAL data structure of the loaded component.
diff --git a/sysfuzzer/common/specification_parser/SpecificationBuilder.cpp b/sysfuzzer/common/specification_parser/SpecificationBuilder.cpp
index 5709a48..52f5fd7 100644
--- a/sysfuzzer/common/specification_parser/SpecificationBuilder.cpp
+++ b/sysfuzzer/common/specification_parser/SpecificationBuilder.cpp
@@ -245,12 +245,7 @@
cout << __func__ << ": called" << endl;
// set coverage data.
- vector<unsigned>* coverage = func_fuzzer->FunctionCallEnd();
- if (coverage && coverage->size() > 0) {
- for (unsigned int index = 0; index < coverage->size(); index++) {
- func_msg->mutable_coverage_data()->Add(coverage->at(index));
- }
- }
+ func_fuzzer->FunctionCallEnd(func_msg);
if (func_msg->return_type().type() == TYPE_PREDEFINED) {
// TODO: actually handle this case.
diff --git a/testcases/fuzz/hal_light/conventional/LightFuzzTest.py b/testcases/fuzz/hal_light/conventional/LightFuzzTest.py
index 78bc685..1f82160 100644
--- a/testcases/fuzz/hal_light/conventional/LightFuzzTest.py
+++ b/testcases/fuzz/hal_light/conventional/LightFuzzTest.py
@@ -91,10 +91,10 @@
for gene in genes:
logging.debug("Gene %d", index)
result = self.dut.hal.light.set_light(None, gene)
- if len(result.coverage_data) > 0:
- logging.info("coverage: %s", result.coverage_data)
+ if len(result.processed_coverage_data) > 0:
+ logging.info("coverage: %s", result.processed_coverage_data)
gene_coverage = []
- for coverage_data in result.coverage_data:
+ for coverage_data in result.processed_coverage_data:
gene_coverage.append(coverage_data)
coverages.append(gene_coverage)
index += 1
diff --git a/testcases/fuzz/hal_light/conventional_standalone/StandaloneLightFuzzTest.py b/testcases/fuzz/hal_light/conventional_standalone/StandaloneLightFuzzTest.py
index ebb5593..560be8d 100644
--- a/testcases/fuzz/hal_light/conventional_standalone/StandaloneLightFuzzTest.py
+++ b/testcases/fuzz/hal_light/conventional_standalone/StandaloneLightFuzzTest.py
@@ -15,6 +15,7 @@
# limitations under the License.
#
+import copy
import logging
import random
import time
@@ -84,6 +85,7 @@
flashOffMs=200,
brightnessMode=self.dut.hal.light.BRIGHTNESS_MODE_USER)
+ last_coverage_data = None
for iteration in range(self.iteartion_count):
index = 0
logging.info("whitebox iteration %d", iteration)
@@ -91,18 +93,20 @@
for gene in genes:
logging.debug("Gene %d", index)
result = self.dut.hal.light.set_light(None, gene)
- if len(result.coverage_data) > 0:
+ if len(result.processed_coverage_data) > 0:
gene_coverage = []
- logging.info("coverage: %s", result.coverage_data)
- for coverage_data in result.coverage_data:
- gene_coverage.append(coverage_data)
- self.AddCoverageData(coverage_data)
+ logging.info("coverage: %s", result.processed_coverage_data)
+ for processed_coverage_data in result.processed_coverage_data:
+ gene_coverage.append(processed_coverage_data)
coverages.append(gene_coverage)
+ last_coverage_data = copy.copy(result.raw_coverage_data)
index += 1
evolution = GenePool.Evolution()
genes = evolution.Evolve(genes,
self.dut.hal.light.light_state_t_fuzz,
coverages=coverages)
+ if len(last_coverage_data) > 0:
+ self.SetCoverageData(last_coverage_data)
if __name__ == "__main__":
diff --git a/testcases/kernel/ltp/KernelLtpTestCase.py b/testcases/kernel/ltp/KernelLtpTestCase.py
index a660001..bf1f079 100644
--- a/testcases/kernel/ltp/KernelLtpTestCase.py
+++ b/testcases/kernel/ltp/KernelLtpTestCase.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3.4
#
# Copyright (C) 2016 The Android Open Source Project
#
@@ -17,7 +18,6 @@
import os
import logging
import copy
-from enum import Enum
from vts.runners.host import const
from vts.testcases.kernel.ltp import KernelLtpTestCaseRequirements
@@ -27,7 +27,7 @@
LTPTMP = "/data/local/tmp/ltp/temp"
-class RequirementState(Enum):
+class RequirementState(object):
"""Enum for test case requirement check state
Attributes:
diff --git a/utils/python/coverage/GCNO.py b/utils/python/coverage/GCNO.py
index 197ef7d..93ba478 100644
--- a/utils/python/coverage/GCNO.py
+++ b/utils/python/coverage/GCNO.py
@@ -292,14 +292,30 @@
return Parser(stream).parse()
-def GenerateCoverageReport(src_file_content, gcov_file_content, basicblock_id_list):
- """Returns the produced html file contents."""
+def GenerateCoverageReport(src_file_name, src_file_content, gcov_file_content,
+ gcda_file_content):
+ """Returns the produced html file contents.
+
+ This merges the given GCDA files and produces merged coverage html file for
+ each source file.
+
+ 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'.
+ """
logging.info("GenerateCoverageReport: src_file_content %s",
src_file_content)
- logging.info("GenerateCoverageReport: gcov_file_content %s",
- gcov_file_content)
- logging.info("GenerateCoverageReport: basicblock_id_list %s",
- basicblock_id_list)
+ if gcov_file_content:
+ logging.info("GenerateCoverageReport: gcov_file_content %d bytes",
+ len(gcov_file_content))
+ if gcda_file_content:
+ logging.info("GenerateCoverageReport: gcda_file_content %d bytes",
+ len(gcda_file_content))
return "<table border=0><tr><td>Code coverage will show up at here</table>"
diff --git a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/proto/VtsReportMessage.java b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/proto/VtsReportMessage.java
index 208c8d4..ca7fb80 100644
--- a/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/proto/VtsReportMessage.java
+++ b/web/dashboard/appengine/servlet/src/main/java/com/google/android/vts/proto/VtsReportMessage.java
@@ -2353,7 +2353,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
java.util.List<com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage>
@@ -2362,7 +2362,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage getCoverage(int index);
@@ -2370,7 +2370,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
int getCoverageCount();
@@ -2378,7 +2378,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
java.util.List<? extends com.google.android.vts.proto.VtsReportMessage.CoverageReportMessageOrBuilder>
@@ -2387,7 +2387,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
com.google.android.vts.proto.VtsReportMessage.CoverageReportMessageOrBuilder getCoverageOrBuilder(
@@ -2620,7 +2620,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public java.util.List<com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage> getCoverageList() {
@@ -2630,7 +2630,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public java.util.List<? extends com.google.android.vts.proto.VtsReportMessage.CoverageReportMessageOrBuilder>
@@ -2641,7 +2641,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public int getCoverageCount() {
@@ -2651,7 +2651,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage getCoverage(int index) {
@@ -2661,7 +2661,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public com.google.android.vts.proto.VtsReportMessage.CoverageReportMessageOrBuilder getCoverageOrBuilder(
@@ -3204,7 +3204,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public java.util.List<com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage> getCoverageList() {
@@ -3218,7 +3218,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public int getCoverageCount() {
@@ -3232,7 +3232,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage getCoverage(int index) {
@@ -3246,7 +3246,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder setCoverage(
@@ -3267,7 +3267,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder setCoverage(
@@ -3285,7 +3285,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder addCoverage(com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage value) {
@@ -3305,7 +3305,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder addCoverage(
@@ -3326,7 +3326,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder addCoverage(
@@ -3344,7 +3344,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder addCoverage(
@@ -3362,7 +3362,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder addAllCoverage(
@@ -3380,7 +3380,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder clearCoverage() {
@@ -3397,7 +3397,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public Builder removeCoverage(int index) {
@@ -3414,7 +3414,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage.Builder getCoverageBuilder(
@@ -3425,7 +3425,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public com.google.android.vts.proto.VtsReportMessage.CoverageReportMessageOrBuilder getCoverageOrBuilder(
@@ -3439,7 +3439,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public java.util.List<? extends com.google.android.vts.proto.VtsReportMessage.CoverageReportMessageOrBuilder>
@@ -3454,7 +3454,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage.Builder addCoverageBuilder() {
@@ -3465,7 +3465,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage.Builder addCoverageBuilder(
@@ -3477,7 +3477,7 @@
* <code>repeated .android.vts.CoverageReportMessage coverage = 31;</code>
*
* <pre>
- * coverage reports
+ * coverage report per file
* </pre>
*/
public java.util.List<com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage.Builder>
@@ -4146,27 +4146,81 @@
public interface CoverageReportMessageOrBuilder
extends com.google.protobuf.MessageOrBuilder {
- // optional bytes file_name = 1;
+ // optional bytes dir_path = 1;
/**
- * <code>optional bytes file_name = 1;</code>
+ * <code>optional bytes dir_path = 1;</code>
*
* <pre>
- * source or object file name.
+ * the directory path of a source file.
+ * </pre>
+ */
+ boolean hasDirPath();
+ /**
+ * <code>optional bytes dir_path = 1;</code>
+ *
+ * <pre>
+ * the directory path of a source file.
+ * </pre>
+ */
+ com.google.protobuf.ByteString getDirPath();
+
+ // optional bytes file_name = 2;
+ /**
+ * <code>optional bytes file_name = 2;</code>
+ *
+ * <pre>
+ * the name of the source file.
* </pre>
*/
boolean hasFileName();
/**
- * <code>optional bytes file_name = 1;</code>
+ * <code>optional bytes file_name = 2;</code>
*
* <pre>
- * source or object file name.
+ * the name of the source file.
* </pre>
*/
com.google.protobuf.ByteString getFileName();
- // optional bytes gcno = 11;
+ // optional bytes html = 3;
/**
- * <code>optional bytes gcno = 11;</code>
+ * <code>optional bytes html = 3;</code>
+ *
+ * <pre>
+ * produced html report.
+ * </pre>
+ */
+ boolean hasHtml();
+ /**
+ * <code>optional bytes html = 3;</code>
+ *
+ * <pre>
+ * produced html report.
+ * </pre>
+ */
+ com.google.protobuf.ByteString getHtml();
+
+ // optional bytes source_code = 11;
+ /**
+ * <code>optional bytes source_code = 11;</code>
+ *
+ * <pre>
+ * the source file content.
+ * </pre>
+ */
+ boolean hasSourceCode();
+ /**
+ * <code>optional bytes source_code = 11;</code>
+ *
+ * <pre>
+ * the source file content.
+ * </pre>
+ */
+ com.google.protobuf.ByteString getSourceCode();
+
+ // optional bytes gcno = 21;
+ /**
+ * <code>optional bytes gcno = 21;</code>
*
* <pre>
* gcov produced data files.
@@ -4174,7 +4228,7 @@
*/
boolean hasGcno();
/**
- * <code>optional bytes gcno = 11;</code>
+ * <code>optional bytes gcno = 21;</code>
*
* <pre>
* gcov produced data files.
@@ -4182,19 +4236,19 @@
*/
com.google.protobuf.ByteString getGcno();
- // optional bytes gcda = 12;
+ // optional bytes gcda = 22;
/**
- * <code>optional bytes gcda = 12;</code>
+ * <code>optional bytes gcda = 22;</code>
*/
boolean hasGcda();
/**
- * <code>optional bytes gcda = 12;</code>
+ * <code>optional bytes gcda = 22;</code>
*/
com.google.protobuf.ByteString getGcda();
- // repeated bytes data = 101;
+ // repeated bytes data = 31;
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4202,7 +4256,7 @@
*/
java.util.List<com.google.protobuf.ByteString> getDataList();
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4210,13 +4264,31 @@
*/
int getDataCount();
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
* </pre>
*/
com.google.protobuf.ByteString getData(int index);
+
+ // optional bytes gcov = 32;
+ /**
+ * <code>optional bytes gcov = 32;</code>
+ *
+ * <pre>
+ * generated gcov data file.
+ * </pre>
+ */
+ boolean hasGcov();
+ /**
+ * <code>optional bytes gcov = 32;</code>
+ *
+ * <pre>
+ * generated gcov data file.
+ * </pre>
+ */
+ com.google.protobuf.ByteString getGcov();
}
/**
* Protobuf type {@code android.vts.CoverageReportMessage}
@@ -4275,27 +4347,47 @@
}
case 10: {
bitField0_ |= 0x00000001;
+ dirPath_ = input.readBytes();
+ break;
+ }
+ case 18: {
+ bitField0_ |= 0x00000002;
fileName_ = input.readBytes();
break;
}
+ case 26: {
+ bitField0_ |= 0x00000004;
+ html_ = input.readBytes();
+ break;
+ }
case 90: {
- bitField0_ |= 0x00000002;
+ bitField0_ |= 0x00000008;
+ sourceCode_ = input.readBytes();
+ break;
+ }
+ case 170: {
+ bitField0_ |= 0x00000010;
gcno_ = input.readBytes();
break;
}
- case 98: {
- bitField0_ |= 0x00000004;
+ case 178: {
+ bitField0_ |= 0x00000020;
gcda_ = input.readBytes();
break;
}
- case 810: {
- if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+ case 250: {
+ if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
data_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
- mutable_bitField0_ |= 0x00000008;
+ mutable_bitField0_ |= 0x00000040;
}
data_.add(input.readBytes());
break;
}
+ case 258: {
+ bitField0_ |= 0x00000040;
+ gcov_ = input.readBytes();
+ break;
+ }
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -4304,7 +4396,7 @@
throw new com.google.protobuf.InvalidProtocolBufferException(
e.getMessage()).setUnfinishedMessage(this);
} finally {
- if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
+ if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
data_ = java.util.Collections.unmodifiableList(data_);
}
this.unknownFields = unknownFields.build();
@@ -4339,45 +4431,117 @@
}
private int bitField0_;
- // optional bytes file_name = 1;
- public static final int FILE_NAME_FIELD_NUMBER = 1;
- private com.google.protobuf.ByteString fileName_;
+ // optional bytes dir_path = 1;
+ public static final int DIR_PATH_FIELD_NUMBER = 1;
+ private com.google.protobuf.ByteString dirPath_;
/**
- * <code>optional bytes file_name = 1;</code>
+ * <code>optional bytes dir_path = 1;</code>
*
* <pre>
- * source or object file name.
+ * the directory path of a source file.
* </pre>
*/
- public boolean hasFileName() {
+ public boolean hasDirPath() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
- * <code>optional bytes file_name = 1;</code>
+ * <code>optional bytes dir_path = 1;</code>
*
* <pre>
- * source or object file name.
+ * the directory path of a source file.
+ * </pre>
+ */
+ public com.google.protobuf.ByteString getDirPath() {
+ return dirPath_;
+ }
+
+ // optional bytes file_name = 2;
+ public static final int FILE_NAME_FIELD_NUMBER = 2;
+ private com.google.protobuf.ByteString fileName_;
+ /**
+ * <code>optional bytes file_name = 2;</code>
+ *
+ * <pre>
+ * the name of the source file.
+ * </pre>
+ */
+ public boolean hasFileName() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>optional bytes file_name = 2;</code>
+ *
+ * <pre>
+ * the name of the source file.
* </pre>
*/
public com.google.protobuf.ByteString getFileName() {
return fileName_;
}
- // optional bytes gcno = 11;
- public static final int GCNO_FIELD_NUMBER = 11;
+ // optional bytes html = 3;
+ public static final int HTML_FIELD_NUMBER = 3;
+ private com.google.protobuf.ByteString html_;
+ /**
+ * <code>optional bytes html = 3;</code>
+ *
+ * <pre>
+ * produced html report.
+ * </pre>
+ */
+ public boolean hasHtml() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>optional bytes html = 3;</code>
+ *
+ * <pre>
+ * produced html report.
+ * </pre>
+ */
+ public com.google.protobuf.ByteString getHtml() {
+ return html_;
+ }
+
+ // optional bytes source_code = 11;
+ public static final int SOURCE_CODE_FIELD_NUMBER = 11;
+ private com.google.protobuf.ByteString sourceCode_;
+ /**
+ * <code>optional bytes source_code = 11;</code>
+ *
+ * <pre>
+ * the source file content.
+ * </pre>
+ */
+ public boolean hasSourceCode() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>optional bytes source_code = 11;</code>
+ *
+ * <pre>
+ * the source file content.
+ * </pre>
+ */
+ public com.google.protobuf.ByteString getSourceCode() {
+ return sourceCode_;
+ }
+
+ // optional bytes gcno = 21;
+ public static final int GCNO_FIELD_NUMBER = 21;
private com.google.protobuf.ByteString gcno_;
/**
- * <code>optional bytes gcno = 11;</code>
+ * <code>optional bytes gcno = 21;</code>
*
* <pre>
* gcov produced data files.
* </pre>
*/
public boolean hasGcno() {
- return ((bitField0_ & 0x00000002) == 0x00000002);
+ return ((bitField0_ & 0x00000010) == 0x00000010);
}
/**
- * <code>optional bytes gcno = 11;</code>
+ * <code>optional bytes gcno = 21;</code>
*
* <pre>
* gcov produced data files.
@@ -4387,27 +4551,27 @@
return gcno_;
}
- // optional bytes gcda = 12;
- public static final int GCDA_FIELD_NUMBER = 12;
+ // optional bytes gcda = 22;
+ public static final int GCDA_FIELD_NUMBER = 22;
private com.google.protobuf.ByteString gcda_;
/**
- * <code>optional bytes gcda = 12;</code>
+ * <code>optional bytes gcda = 22;</code>
*/
public boolean hasGcda() {
- return ((bitField0_ & 0x00000004) == 0x00000004);
+ return ((bitField0_ & 0x00000020) == 0x00000020);
}
/**
- * <code>optional bytes gcda = 12;</code>
+ * <code>optional bytes gcda = 22;</code>
*/
public com.google.protobuf.ByteString getGcda() {
return gcda_;
}
- // repeated bytes data = 101;
- public static final int DATA_FIELD_NUMBER = 101;
+ // repeated bytes data = 31;
+ public static final int DATA_FIELD_NUMBER = 31;
private java.util.List<com.google.protobuf.ByteString> data_;
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4418,7 +4582,7 @@
return data_;
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4428,7 +4592,7 @@
return data_.size();
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4438,11 +4602,39 @@
return data_.get(index);
}
+ // optional bytes gcov = 32;
+ public static final int GCOV_FIELD_NUMBER = 32;
+ private com.google.protobuf.ByteString gcov_;
+ /**
+ * <code>optional bytes gcov = 32;</code>
+ *
+ * <pre>
+ * generated gcov data file.
+ * </pre>
+ */
+ public boolean hasGcov() {
+ return ((bitField0_ & 0x00000040) == 0x00000040);
+ }
+ /**
+ * <code>optional bytes gcov = 32;</code>
+ *
+ * <pre>
+ * generated gcov data file.
+ * </pre>
+ */
+ public com.google.protobuf.ByteString getGcov() {
+ return gcov_;
+ }
+
private void initFields() {
+ dirPath_ = com.google.protobuf.ByteString.EMPTY;
fileName_ = com.google.protobuf.ByteString.EMPTY;
+ html_ = com.google.protobuf.ByteString.EMPTY;
+ sourceCode_ = com.google.protobuf.ByteString.EMPTY;
gcno_ = com.google.protobuf.ByteString.EMPTY;
gcda_ = com.google.protobuf.ByteString.EMPTY;
data_ = java.util.Collections.emptyList();
+ gcov_ = com.google.protobuf.ByteString.EMPTY;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -4457,16 +4649,28 @@
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
- output.writeBytes(1, fileName_);
+ output.writeBytes(1, dirPath_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
- output.writeBytes(11, gcno_);
+ output.writeBytes(2, fileName_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
- output.writeBytes(12, gcda_);
+ output.writeBytes(3, html_);
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ output.writeBytes(11, sourceCode_);
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ output.writeBytes(21, gcno_);
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ output.writeBytes(22, gcda_);
}
for (int i = 0; i < data_.size(); i++) {
- output.writeBytes(101, data_.get(i));
+ output.writeBytes(31, data_.get(i));
+ }
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ output.writeBytes(32, gcov_);
}
getUnknownFields().writeTo(output);
}
@@ -4479,15 +4683,27 @@
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
- .computeBytesSize(1, fileName_);
+ .computeBytesSize(1, dirPath_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
- .computeBytesSize(11, gcno_);
+ .computeBytesSize(2, fileName_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
size += com.google.protobuf.CodedOutputStream
- .computeBytesSize(12, gcda_);
+ .computeBytesSize(3, html_);
+ }
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(11, sourceCode_);
+ }
+ if (((bitField0_ & 0x00000010) == 0x00000010)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(21, gcno_);
+ }
+ if (((bitField0_ & 0x00000020) == 0x00000020)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(22, gcda_);
}
{
int dataSize = 0;
@@ -4498,6 +4714,10 @@
size += dataSize;
size += 2 * getDataList().size();
}
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(32, gcov_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@@ -4618,14 +4838,22 @@
public Builder clear() {
super.clear();
- fileName_ = com.google.protobuf.ByteString.EMPTY;
+ dirPath_ = com.google.protobuf.ByteString.EMPTY;
bitField0_ = (bitField0_ & ~0x00000001);
- gcno_ = com.google.protobuf.ByteString.EMPTY;
+ fileName_ = com.google.protobuf.ByteString.EMPTY;
bitField0_ = (bitField0_ & ~0x00000002);
- gcda_ = com.google.protobuf.ByteString.EMPTY;
+ html_ = com.google.protobuf.ByteString.EMPTY;
bitField0_ = (bitField0_ & ~0x00000004);
- data_ = java.util.Collections.emptyList();
+ sourceCode_ = com.google.protobuf.ByteString.EMPTY;
bitField0_ = (bitField0_ & ~0x00000008);
+ gcno_ = com.google.protobuf.ByteString.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000010);
+ gcda_ = com.google.protobuf.ByteString.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000020);
+ data_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000040);
+ gcov_ = com.google.protobuf.ByteString.EMPTY;
+ bitField0_ = (bitField0_ & ~0x00000080);
return this;
}
@@ -4657,20 +4885,36 @@
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
- result.fileName_ = fileName_;
+ result.dirPath_ = dirPath_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
- result.gcno_ = gcno_;
+ result.fileName_ = fileName_;
if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
to_bitField0_ |= 0x00000004;
}
+ result.html_ = html_;
+ if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+ to_bitField0_ |= 0x00000008;
+ }
+ result.sourceCode_ = sourceCode_;
+ if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
+ to_bitField0_ |= 0x00000010;
+ }
+ result.gcno_ = gcno_;
+ if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
+ to_bitField0_ |= 0x00000020;
+ }
result.gcda_ = gcda_;
- if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ if (((bitField0_ & 0x00000040) == 0x00000040)) {
data_ = java.util.Collections.unmodifiableList(data_);
- bitField0_ = (bitField0_ & ~0x00000008);
+ bitField0_ = (bitField0_ & ~0x00000040);
}
result.data_ = data_;
+ if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
+ to_bitField0_ |= 0x00000040;
+ }
+ result.gcov_ = gcov_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@@ -4687,9 +4931,18 @@
public Builder mergeFrom(com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage other) {
if (other == com.google.android.vts.proto.VtsReportMessage.CoverageReportMessage.getDefaultInstance()) return this;
+ if (other.hasDirPath()) {
+ setDirPath(other.getDirPath());
+ }
if (other.hasFileName()) {
setFileName(other.getFileName());
}
+ if (other.hasHtml()) {
+ setHtml(other.getHtml());
+ }
+ if (other.hasSourceCode()) {
+ setSourceCode(other.getSourceCode());
+ }
if (other.hasGcno()) {
setGcno(other.getGcno());
}
@@ -4699,13 +4952,16 @@
if (!other.data_.isEmpty()) {
if (data_.isEmpty()) {
data_ = other.data_;
- bitField0_ = (bitField0_ & ~0x00000008);
+ bitField0_ = (bitField0_ & ~0x00000040);
} else {
ensureDataIsMutable();
data_.addAll(other.data_);
}
onChanged();
}
+ if (other.hasGcov()) {
+ setGcov(other.getGcov());
+ }
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@@ -4733,72 +4989,228 @@
}
private int bitField0_;
- // optional bytes file_name = 1;
- private com.google.protobuf.ByteString fileName_ = com.google.protobuf.ByteString.EMPTY;
+ // optional bytes dir_path = 1;
+ private com.google.protobuf.ByteString dirPath_ = com.google.protobuf.ByteString.EMPTY;
/**
- * <code>optional bytes file_name = 1;</code>
+ * <code>optional bytes dir_path = 1;</code>
*
* <pre>
- * source or object file name.
+ * the directory path of a source file.
* </pre>
*/
- public boolean hasFileName() {
+ public boolean hasDirPath() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
- * <code>optional bytes file_name = 1;</code>
+ * <code>optional bytes dir_path = 1;</code>
*
* <pre>
- * source or object file name.
+ * the directory path of a source file.
+ * </pre>
+ */
+ public com.google.protobuf.ByteString getDirPath() {
+ return dirPath_;
+ }
+ /**
+ * <code>optional bytes dir_path = 1;</code>
+ *
+ * <pre>
+ * the directory path of a source file.
+ * </pre>
+ */
+ public Builder setDirPath(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ dirPath_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional bytes dir_path = 1;</code>
+ *
+ * <pre>
+ * the directory path of a source file.
+ * </pre>
+ */
+ public Builder clearDirPath() {
+ bitField0_ = (bitField0_ & ~0x00000001);
+ dirPath_ = getDefaultInstance().getDirPath();
+ onChanged();
+ return this;
+ }
+
+ // optional bytes file_name = 2;
+ private com.google.protobuf.ByteString fileName_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <code>optional bytes file_name = 2;</code>
+ *
+ * <pre>
+ * the name of the source file.
+ * </pre>
+ */
+ public boolean hasFileName() {
+ return ((bitField0_ & 0x00000002) == 0x00000002);
+ }
+ /**
+ * <code>optional bytes file_name = 2;</code>
+ *
+ * <pre>
+ * the name of the source file.
* </pre>
*/
public com.google.protobuf.ByteString getFileName() {
return fileName_;
}
/**
- * <code>optional bytes file_name = 1;</code>
+ * <code>optional bytes file_name = 2;</code>
*
* <pre>
- * source or object file name.
+ * the name of the source file.
* </pre>
*/
public Builder setFileName(com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00000001;
+ bitField0_ |= 0x00000002;
fileName_ = value;
onChanged();
return this;
}
/**
- * <code>optional bytes file_name = 1;</code>
+ * <code>optional bytes file_name = 2;</code>
*
* <pre>
- * source or object file name.
+ * the name of the source file.
* </pre>
*/
public Builder clearFileName() {
- bitField0_ = (bitField0_ & ~0x00000001);
+ bitField0_ = (bitField0_ & ~0x00000002);
fileName_ = getDefaultInstance().getFileName();
onChanged();
return this;
}
- // optional bytes gcno = 11;
+ // optional bytes html = 3;
+ private com.google.protobuf.ByteString html_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <code>optional bytes html = 3;</code>
+ *
+ * <pre>
+ * produced html report.
+ * </pre>
+ */
+ public boolean hasHtml() {
+ return ((bitField0_ & 0x00000004) == 0x00000004);
+ }
+ /**
+ * <code>optional bytes html = 3;</code>
+ *
+ * <pre>
+ * produced html report.
+ * </pre>
+ */
+ public com.google.protobuf.ByteString getHtml() {
+ return html_;
+ }
+ /**
+ * <code>optional bytes html = 3;</code>
+ *
+ * <pre>
+ * produced html report.
+ * </pre>
+ */
+ public Builder setHtml(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000004;
+ html_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional bytes html = 3;</code>
+ *
+ * <pre>
+ * produced html report.
+ * </pre>
+ */
+ public Builder clearHtml() {
+ bitField0_ = (bitField0_ & ~0x00000004);
+ html_ = getDefaultInstance().getHtml();
+ onChanged();
+ return this;
+ }
+
+ // optional bytes source_code = 11;
+ private com.google.protobuf.ByteString sourceCode_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <code>optional bytes source_code = 11;</code>
+ *
+ * <pre>
+ * the source file content.
+ * </pre>
+ */
+ public boolean hasSourceCode() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * <code>optional bytes source_code = 11;</code>
+ *
+ * <pre>
+ * the source file content.
+ * </pre>
+ */
+ public com.google.protobuf.ByteString getSourceCode() {
+ return sourceCode_;
+ }
+ /**
+ * <code>optional bytes source_code = 11;</code>
+ *
+ * <pre>
+ * the source file content.
+ * </pre>
+ */
+ public Builder setSourceCode(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000008;
+ sourceCode_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional bytes source_code = 11;</code>
+ *
+ * <pre>
+ * the source file content.
+ * </pre>
+ */
+ public Builder clearSourceCode() {
+ bitField0_ = (bitField0_ & ~0x00000008);
+ sourceCode_ = getDefaultInstance().getSourceCode();
+ onChanged();
+ return this;
+ }
+
+ // optional bytes gcno = 21;
private com.google.protobuf.ByteString gcno_ = com.google.protobuf.ByteString.EMPTY;
/**
- * <code>optional bytes gcno = 11;</code>
+ * <code>optional bytes gcno = 21;</code>
*
* <pre>
* gcov produced data files.
* </pre>
*/
public boolean hasGcno() {
- return ((bitField0_ & 0x00000002) == 0x00000002);
+ return ((bitField0_ & 0x00000010) == 0x00000010);
}
/**
- * <code>optional bytes gcno = 11;</code>
+ * <code>optional bytes gcno = 21;</code>
*
* <pre>
* gcov produced data files.
@@ -4808,7 +5220,7 @@
return gcno_;
}
/**
- * <code>optional bytes gcno = 11;</code>
+ * <code>optional bytes gcno = 21;</code>
*
* <pre>
* gcov produced data files.
@@ -4818,71 +5230,71 @@
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00000002;
+ bitField0_ |= 0x00000010;
gcno_ = value;
onChanged();
return this;
}
/**
- * <code>optional bytes gcno = 11;</code>
+ * <code>optional bytes gcno = 21;</code>
*
* <pre>
* gcov produced data files.
* </pre>
*/
public Builder clearGcno() {
- bitField0_ = (bitField0_ & ~0x00000002);
+ bitField0_ = (bitField0_ & ~0x00000010);
gcno_ = getDefaultInstance().getGcno();
onChanged();
return this;
}
- // optional bytes gcda = 12;
+ // optional bytes gcda = 22;
private com.google.protobuf.ByteString gcda_ = com.google.protobuf.ByteString.EMPTY;
/**
- * <code>optional bytes gcda = 12;</code>
+ * <code>optional bytes gcda = 22;</code>
*/
public boolean hasGcda() {
- return ((bitField0_ & 0x00000004) == 0x00000004);
+ return ((bitField0_ & 0x00000020) == 0x00000020);
}
/**
- * <code>optional bytes gcda = 12;</code>
+ * <code>optional bytes gcda = 22;</code>
*/
public com.google.protobuf.ByteString getGcda() {
return gcda_;
}
/**
- * <code>optional bytes gcda = 12;</code>
+ * <code>optional bytes gcda = 22;</code>
*/
public Builder setGcda(com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
- bitField0_ |= 0x00000004;
+ bitField0_ |= 0x00000020;
gcda_ = value;
onChanged();
return this;
}
/**
- * <code>optional bytes gcda = 12;</code>
+ * <code>optional bytes gcda = 22;</code>
*/
public Builder clearGcda() {
- bitField0_ = (bitField0_ & ~0x00000004);
+ bitField0_ = (bitField0_ & ~0x00000020);
gcda_ = getDefaultInstance().getGcda();
onChanged();
return this;
}
- // repeated bytes data = 101;
+ // repeated bytes data = 31;
private java.util.List<com.google.protobuf.ByteString> data_ = java.util.Collections.emptyList();
private void ensureDataIsMutable() {
- if (!((bitField0_ & 0x00000008) == 0x00000008)) {
+ if (!((bitField0_ & 0x00000040) == 0x00000040)) {
data_ = new java.util.ArrayList<com.google.protobuf.ByteString>(data_);
- bitField0_ |= 0x00000008;
+ bitField0_ |= 0x00000040;
}
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4893,7 +5305,7 @@
return java.util.Collections.unmodifiableList(data_);
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4903,7 +5315,7 @@
return data_.size();
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4913,7 +5325,7 @@
return data_.get(index);
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4930,7 +5342,7 @@
return this;
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4946,7 +5358,7 @@
return this;
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4960,7 +5372,7 @@
return this;
}
/**
- * <code>repeated bytes data = 101;</code>
+ * <code>repeated bytes data = 31;</code>
*
* <pre>
* measured coverage data.
@@ -4968,7 +5380,59 @@
*/
public Builder clearData() {
data_ = java.util.Collections.emptyList();
- bitField0_ = (bitField0_ & ~0x00000008);
+ bitField0_ = (bitField0_ & ~0x00000040);
+ onChanged();
+ return this;
+ }
+
+ // optional bytes gcov = 32;
+ private com.google.protobuf.ByteString gcov_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <code>optional bytes gcov = 32;</code>
+ *
+ * <pre>
+ * generated gcov data file.
+ * </pre>
+ */
+ public boolean hasGcov() {
+ return ((bitField0_ & 0x00000080) == 0x00000080);
+ }
+ /**
+ * <code>optional bytes gcov = 32;</code>
+ *
+ * <pre>
+ * generated gcov data file.
+ * </pre>
+ */
+ public com.google.protobuf.ByteString getGcov() {
+ return gcov_;
+ }
+ /**
+ * <code>optional bytes gcov = 32;</code>
+ *
+ * <pre>
+ * generated gcov data file.
+ * </pre>
+ */
+ public Builder setGcov(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000080;
+ gcov_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>optional bytes gcov = 32;</code>
+ *
+ * <pre>
+ * generated gcov data file.
+ * </pre>
+ */
+ public Builder clearGcov() {
+ bitField0_ = (bitField0_ & ~0x00000080);
+ gcov_ = getDefaultInstance().getGcov();
onChanged();
return this;
}
@@ -7582,28 +8046,30 @@
"\026 \001(\003\0224\n\010coverage\030\037 \003(\0132\".android.vts.Co" +
"verageReportMessage\"V\n\026ProfilingReportMe" +
"ssage\022\014\n\004name\030\001 \001(\014\022\027\n\017start_timestamp\030\013" +
- " \001(\003\022\025\n\rend_timestamp\030\014 \001(\003\"T\n\025CoverageR" +
- "eportMessage\022\021\n\tfile_name\030\001 \001(\014\022\014\n\004gcno\030" +
- "\013 \001(\014\022\014\n\004gcda\030\014 \001(\014\022\014\n\004data\030e \003(\014\"\360\002\n\021Te" +
- "stReportMessage\022\022\n\ntest_suite\030\001 \001(\014\022\014\n\004t" +
- "est\030\002 \001(\014\022+\n\ttest_type\030\003 \001(\0162\030.android.v" +
- "ts.VtsTestType\022:\n\013device_info\030\004 \003(\0132%.an",
- "droid.vts.AndroidDeviceInfoMessage\0221\n\nbu" +
- "ild_info\030\005 \001(\0132\035.android.vts.AndroidBuil" +
- "dInfo\0225\n\ttest_case\030\013 \003(\0132\".android.vts.T" +
- "estCaseReportMessage\0226\n\tprofiling\030\025 \003(\0132" +
- "#.android.vts.ProfilingReportMessage\022\027\n\017" +
- "start_timestamp\030e \001(\003\022\025\n\rend_timestamp\030f" +
- " \001(\003*\263\001\n\016TestCaseResult\022\022\n\016UNKNOWN_RESUL" +
- "T\020\000\022\031\n\025TEST_CASE_RESULT_PASS\020\001\022\031\n\025TEST_C" +
- "ASE_RESULT_FAIL\020\002\022\031\n\025TEST_CASE_RESULT_SK" +
- "IP\020\003\022\036\n\032TEST_CASE_RESULT_EXCEPTION\020\004\022\034\n\030",
- "TEST_CASE_RESULT_TIMEOUT\020\005*\234\001\n\013VtsTestTy" +
- "pe\022\030\n\024UNKNOWN_VTS_TESTTYPE\020\000\022\036\n\032VTS_HOST" +
- "_DRIVEN_STRUCTURAL\020\001\022\033\n\027VTS_HOST_DRIVEN_" +
- "FUZZING\020\002\022\031\n\025VTS_TARGET_SIDE_GTEST\020\003\022\033\n\027" +
- "VTS_TARGET_SIDE_FUZZING\020\004B0\n\034com.google." +
- "android.vts.protoB\020VtsReportMessage"
+ " \001(\003\022\025\n\rend_timestamp\030\014 \001(\003\"\227\001\n\025Coverage" +
+ "ReportMessage\022\020\n\010dir_path\030\001 \001(\014\022\021\n\tfile_" +
+ "name\030\002 \001(\014\022\014\n\004html\030\003 \001(\014\022\023\n\013source_code\030" +
+ "\013 \001(\014\022\014\n\004gcno\030\025 \001(\014\022\014\n\004gcda\030\026 \001(\014\022\014\n\004dat" +
+ "a\030\037 \003(\014\022\014\n\004gcov\030 \001(\014\"\360\002\n\021TestReportMess" +
+ "age\022\022\n\ntest_suite\030\001 \001(\014\022\014\n\004test\030\002 \001(\014\022+\n",
+ "\ttest_type\030\003 \001(\0162\030.android.vts.VtsTestTy" +
+ "pe\022:\n\013device_info\030\004 \003(\0132%.android.vts.An" +
+ "droidDeviceInfoMessage\0221\n\nbuild_info\030\005 \001" +
+ "(\0132\035.android.vts.AndroidBuildInfo\0225\n\ttes" +
+ "t_case\030\013 \003(\0132\".android.vts.TestCaseRepor" +
+ "tMessage\0226\n\tprofiling\030\025 \003(\0132#.android.vt" +
+ "s.ProfilingReportMessage\022\027\n\017start_timest" +
+ "amp\030e \001(\003\022\025\n\rend_timestamp\030f \001(\003*\263\001\n\016Tes" +
+ "tCaseResult\022\022\n\016UNKNOWN_RESULT\020\000\022\031\n\025TEST_" +
+ "CASE_RESULT_PASS\020\001\022\031\n\025TEST_CASE_RESULT_F",
+ "AIL\020\002\022\031\n\025TEST_CASE_RESULT_SKIP\020\003\022\036\n\032TEST" +
+ "_CASE_RESULT_EXCEPTION\020\004\022\034\n\030TEST_CASE_RE" +
+ "SULT_TIMEOUT\020\005*\234\001\n\013VtsTestType\022\030\n\024UNKNOW" +
+ "N_VTS_TESTTYPE\020\000\022\036\n\032VTS_HOST_DRIVEN_STRU" +
+ "CTURAL\020\001\022\033\n\027VTS_HOST_DRIVEN_FUZZING\020\002\022\031\n" +
+ "\025VTS_TARGET_SIDE_GTEST\020\003\022\033\n\027VTS_TARGET_S" +
+ "IDE_FUZZING\020\004B0\n\034com.google.android.vts." +
+ "protoB\020VtsReportMessage"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -7639,7 +8105,7 @@
internal_static_android_vts_CoverageReportMessage_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_android_vts_CoverageReportMessage_descriptor,
- new java.lang.String[] { "FileName", "Gcno", "Gcda", "Data", });
+ new java.lang.String[] { "DirPath", "FileName", "Html", "SourceCode", "Gcno", "Gcda", "Data", "Gcov", });
internal_static_android_vts_TestReportMessage_descriptor =
getDescriptor().getMessageTypes().get(5);
internal_static_android_vts_TestReportMessage_fieldAccessorTable = new