Reland: Remove workarounds by data_device_bins

This reverts commit 4e2e4c93379fbb53f88a09147d17caefdcf850fd, plus
replacing data_device_bins with data_device_bins_first.

Previously, the test has dirty hacks that force building the device
executable in correct name. Swicth to the proper solution now that we
have it.

Bug: 228775576
Test: atest ApkVerityTest
Test: lunch cf_x86_64_tv-eng; atest ApkVerityTest (against cf_x86_tv VM)
Change-Id: Iccb457131d74a83b9f5cb8457833d7c5ea495b05
diff --git a/tests/ApkVerityTest/Android.bp b/tests/ApkVerityTest/Android.bp
index 62e16a5..f026bea 100644
--- a/tests/ApkVerityTest/Android.bp
+++ b/tests/ApkVerityTest/Android.bp
@@ -37,8 +37,8 @@
         "general-tests",
         "vts",
     ],
-    target_required: [
-        "block_device_writer_module",
+    data_device_bins_both: [
+        "block_device_writer",
     ],
     data: [
         ":ApkVerityTestCertDer",
diff --git a/tests/ApkVerityTest/AndroidTest.xml b/tests/ApkVerityTest/AndroidTest.xml
index 3c8e1ed..2a0a2c7 100644
--- a/tests/ApkVerityTest/AndroidTest.xml
+++ b/tests/ApkVerityTest/AndroidTest.xml
@@ -31,10 +31,18 @@
 
     <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
         <option name="cleanup" value="true" />
-        <option name="push" value="block_device_writer->/data/local/tmp/block_device_writer" />
         <option name="push" value="ApkVerityTestCert.der->/data/local/tmp/ApkVerityTestCert.der" />
     </target_preparer>
 
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <!-- The build system produces both 32 and 64 bit variants with bitness suffix. Let
+             FilePusher find the filename with bitness and push to a remote name without bitness.
+        -->
+        <option name="append-bitness" value="true" />
+        <option name="cleanup" value="true" />
+        <option name="push" value="block_device_writer->/data/local/tmp/block_device_writer" />
+    </target_preparer>
+
     <!-- Skip on HWASan. TODO(b/232288278): Re-enable -->
     <object type="module_controller" class="com.android.tradefed.testtype.suite.module.SkipHWASanModuleController" />
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
diff --git a/tests/ApkVerityTest/block_device_writer/Android.bp b/tests/ApkVerityTest/block_device_writer/Android.bp
index fdfa41f..0002447d 100644
--- a/tests/ApkVerityTest/block_device_writer/Android.bp
+++ b/tests/ApkVerityTest/block_device_writer/Android.bp
@@ -24,12 +24,7 @@
 }
 
 cc_test {
-    // Depending on how the test runs, the executable may be uploaded to different location.
-    // Before the bug in the file pusher is fixed, workaround by making the name unique.
-    // See b/124718249#comment12.
-    name: "block_device_writer_module",
-    stem: "block_device_writer",
-
+    name: "block_device_writer",
     srcs: ["block_device_writer.cpp"],
     cflags: [
         "-D_FILE_OFFSET_BITS=64",
@@ -42,20 +37,13 @@
         "libbase",
         "libutils",
     ],
-    // For some reasons, cuttlefish (x86) uses x86_64 test suites for testing. Unfortunately, when
-    // the uploader does not pick up the executable from correct output location. The following
-    // workaround allows the test to:
-    //  * upload the 32-bit exectuable for both 32 and 64 bits devices to use
-    //  * refer to the same executable name in Java
-    //  * no need to force the Java test to be archiecture specific.
-    //
-    // See b/145573317 for details.
+    compile_multilib: "both",
     multilib: {
         lib32: {
-            suffix: "",
+            suffix: "32",
         },
         lib64: {
-            suffix: "64", // not really used
+            suffix: "64",
         },
     },
 
diff --git a/tests/ApkVerityTest/block_device_writer/src/com/android/blockdevicewriter/BlockDeviceWriter.java b/tests/ApkVerityTest/block_device_writer/src/com/android/blockdevicewriter/BlockDeviceWriter.java
index 5c2c15b..9be02ec 100644
--- a/tests/ApkVerityTest/block_device_writer/src/com/android/blockdevicewriter/BlockDeviceWriter.java
+++ b/tests/ApkVerityTest/block_device_writer/src/com/android/blockdevicewriter/BlockDeviceWriter.java
@@ -32,11 +32,12 @@
  * <p>To use this class, please push block_device_writer binary to /data/local/tmp.
  * 1. In Android.bp, add:
  * <pre>
- *     target_required: ["block_device_writer_module"],
+ *      data_device_bins_both: ["block_device_writer"],
  * </pre>
  * 2. In AndroidText.xml, add:
  * <pre>
- *     <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
+ *     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+ *         <option name="append-bitness" value="true" />
  *         <option name="push" value="block_device_writer->/data/local/tmp/block_device_writer" />
  *     </target_preparer>
  * </pre>