Snap for 4448085 from cbf13894010f3d6346fc06b4c09d6644ffb06704 to oc-m3-release

Change-Id: I1017f8a41086c1cf429cc7e33a87738d952723f0
diff --git a/main.cpp b/main.cpp
index 4b23bdf..1b43e1e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -54,6 +54,8 @@
     GenerationFunction generate;
 };
 
+static bool generateForTest = false;
+
 static status_t generateSourcesForFile(
         const FQName &fqName,
         const char *,
@@ -752,13 +754,15 @@
         out << "vendor: true,\n";
     } else {
         out << "vendor_available: true,\n";
-        out << "vndk: ";
-        out.block([&]() {
-            out << "enabled: true,\n";
-            if (isSystemProcessSupportedPackage(packageFQName)) {
-                out << "support_system_process: true,\n";
-            }
-        }) << ",\n";
+        if (!generateForTest) {
+            out << "vndk: ";
+            out.block([&]() {
+                out << "enabled: true,\n";
+                if (isSystemProcessSupportedPackage(packageFQName)) {
+                    out << "support_system_process: true,\n";
+                }
+            }) << ",\n";
+        }
     }
     out << "shared_libs: [\n";
 
@@ -1308,7 +1312,8 @@
 
 static void usage(const char *me) {
     fprintf(stderr,
-            "usage: %s [-p <root path>] -o <output path> -L <language> (-r <interface root>)+ fqname+\n",
+            "usage: %s [-p <root path>] -o <output path> -L <language> (-r <interface root>)+ [-t] "
+            "fqname+\n",
             me);
 
     fprintf(stderr, "         -h: Prints this menu.\n");
@@ -1319,6 +1324,7 @@
     fprintf(stderr, "         -o <output path>: Location to output files.\n");
     fprintf(stderr, "         -p <root path>: Android build root, defaults to $ANDROID_BUILD_TOP or pwd.\n");
     fprintf(stderr, "         -r <package:path root>: E.g., android.hardware:hardware/interfaces.\n");
+    fprintf(stderr, "         -t: generate build scripts (Android.bp) for tests.\n");
 }
 
 // hidl is intentionally leaky. Turn off LeakSanitizer by default.
@@ -1341,7 +1347,7 @@
     }
 
     int res;
-    while ((res = getopt(argc, argv, "hp:o:r:L:")) >= 0) {
+    while ((res = getopt(argc, argv, "hp:o:r:L:t")) >= 0) {
         switch (res) {
             case 'p':
             {
@@ -1394,6 +1400,11 @@
                 break;
             }
 
+            case 't': {
+                generateForTest = true;
+                break;
+            }
+
             case '?':
             case 'h':
             default:
@@ -1411,6 +1422,11 @@
         exit(1);
     }
 
+    if (generateForTest && outputFormat->name() != "androidbp") {
+        fprintf(stderr, "ERROR: -t option is for -Landroidbp only.\n");
+        exit(1);
+    }
+
     argc -= optind;
     argv += optind;
 
diff --git a/test/AndroidTest.xml b/test/AndroidTest.xml
index 91ba891..7c2260b 100644
--- a/test/AndroidTest.xml
+++ b/test/AndroidTest.xml
@@ -41,6 +41,8 @@
         <option name="push" value="DATA/lib64/android.hardware.tests.pointer@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.pointer@1.0.so" />
         <option name="push" value="DATA/lib/android.hardware.tests.memory@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.memory@1.0.so" />
         <option name="push" value="DATA/lib64/android.hardware.tests.memory@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.memory@1.0.so" />
+        <option name="push" value="DATA/lib/android.hardware.tests.multithread@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.multithread@1.0.so" />
+        <option name="push" value="DATA/lib64/android.hardware.tests.multithread@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.multithread@1.0.so" />
         <option name="push" value="DATA/lib/hw/android.hardware.tests.foo@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.foo@1.0-impl.so" />
         <option name="push" value="DATA/lib64/hw/android.hardware.tests.foo@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.foo@1.0-impl.so" />
         <option name="push" value="DATA/lib/hw/android.hardware.tests.bar@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.bar@1.0-impl.so" />
@@ -55,6 +57,8 @@
         <option name="push" value="DATA/lib64/hw/android.hardware.tests.pointer@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.pointer@1.0-impl.so" />
         <option name="push" value="DATA/lib/hw/android.hardware.tests.memory@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.memory@1.0-impl.so" />
         <option name="push" value="DATA/lib64/hw/android.hardware.tests.memory@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.memory@1.0-impl.so" />
+        <option name="push" value="DATA/lib/hw/android.hardware.tests.multithread@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.multithread@1.0-impl.so" />
+        <option name="push" value="DATA/lib64/hw/android.hardware.tests.multithread@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.multithread@1.0-impl.so" />
     </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
diff --git a/test/CleanSpec.mk b/test/CleanSpec.mk
index a804b91..368c826 100644
--- a/test/CleanSpec.mk
+++ b/test/CleanSpec.mk
@@ -45,3 +45,5 @@
 #$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/nativetest64/hidl_test*)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/nativetest/hidl_test*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/tests.vendor*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/vndk/tests.vendor*)
diff --git a/test/vendor/1.0/Android.bp b/test/vendor/1.0/Android.bp
index 3a5ad65..f640216 100644
--- a/test/vendor/1.0/Android.bp
+++ b/test/vendor/1.0/Android.bp
@@ -46,9 +46,6 @@
     generated_headers: ["tests.vendor@1.0_genc++_headers"],
     export_generated_headers: ["tests.vendor@1.0_genc++_headers"],
     vendor_available: true,
-    vndk: {
-        enabled: true,
-    },
     shared_libs: [
         "libhidlbase",
         "libhidltransport",
diff --git a/test/vendor/1.1/Android.bp b/test/vendor/1.1/Android.bp
index cc39a62..6d41300 100644
--- a/test/vendor/1.1/Android.bp
+++ b/test/vendor/1.1/Android.bp
@@ -42,9 +42,6 @@
     generated_headers: ["tests.vendor@1.1_genc++_headers"],
     export_generated_headers: ["tests.vendor@1.1_genc++_headers"],
     vendor_available: true,
-    vndk: {
-        enabled: true,
-    },
     shared_libs: [
         "libhidlbase",
         "libhidltransport",
diff --git a/test/vendor/update-makefile.sh b/test/vendor/update-makefile.sh
index 093671e..87e7340 100755
--- a/test/vendor/update-makefile.sh
+++ b/test/vendor/update-makefile.sh
@@ -5,6 +5,6 @@
          -r android.hardware:hardware/interfaces"
 
 hidl-gen -Lmakefile $options tests.vendor@1.0;
-hidl-gen -Landroidbp $options tests.vendor@1.0;
+hidl-gen -Landroidbp $options -t tests.vendor@1.0;
 hidl-gen -Lmakefile $options tests.vendor@1.1;
-hidl-gen -Landroidbp $options tests.vendor@1.1;
+hidl-gen -Landroidbp $options -t tests.vendor@1.1;
diff --git a/update-makefiles-helper.sh b/update-makefiles-helper.sh
index d5ee07f..904c4ed 100755
--- a/update-makefiles-helper.sh
+++ b/update-makefiles-helper.sh
@@ -65,6 +65,15 @@
 }
 
 ##
+# Returns directory path for a package
+# Usage: get_package_dir package_root_dir package_prefix package
+function get_package_dir() {
+  local package_dir=`echo $3 | cut -f1 -d@ | sed "s/$2\.//" | sed "s/\./\//g"`
+  local package_version=`echo $3 | cut -f2 -d@`
+  echo $1/$package_dir/$package_version
+}
+
+##
 # Helps manage the package root of a HAL directory.
 # Should be called from the android root directory.
 #
@@ -86,9 +95,11 @@
 
   for p in $packages; do
     echo "Updating $p";
+    local additional_options=
+    if [[ -f $(get_package_dir $current_dir $current_package $p)/.hidl_for_test ]]; then additional_options="-t"; fi
     hidl-gen -Lmakefile $root_arguments $p;
     rc=$?; if [[ $rc != 0 ]]; then return $rc; fi
-    hidl-gen -Landroidbp $root_arguments $p;
+    hidl-gen -Landroidbp $root_arguments $additional_options $p;
     rc=$?; if [[ $rc != 0 ]]; then return $rc; fi
   done