hidl_test using static passthrough libs

Using static passthrough libs for portability
of the test.

Disabled a test for preloadPassthroughLibrary because
that requires shared libraries.

Bug: 67500459
Test: hidl_test

Change-Id: I29b2d505d557e63b228200db7d049efce03cc1ad
diff --git a/test/hidl_test/Android.bp b/test/hidl_test/Android.bp
index 2c0ab0a..b48c4bc 100644
--- a/test/hidl_test/Android.bp
+++ b/test/hidl_test/Android.bp
@@ -1,19 +1,28 @@
-cc_test {
-    name: "hidl_test_client",
+cc_defaults {
+    name: "hidl_test_client-defaults",
     defaults: ["hidl-gen-defaults"],
-    srcs: ["hidl_test_client.cpp", "FooCallback.cpp", "static_test.cpp"],
 
     shared_libs: [
+        "android.hidl.memory@1.0",
+        "android.hidl.token@1.0",
         "libbase",
-        "liblog",
         "libcutils",
         "libhidlbase",
-        "libhidltransport",
         "libhidlmemory",
-        "libfootest",
+        "libhidltransport",
         "libhwbinder",
-        "libpointertest",
+        "liblog",
         "libutils",
+    ],
+
+    // Allow dlsym'ing self for statically linked passthrough implementations
+    ldflags: ["-rdynamic"],
+
+    // These are static libs only for testing purposes and portability. Shared
+    // libs should be used on device.
+    static_libs: [
+        "libfootest",
+        "libpointertest",
         "android.hardware.tests.expression@1.0",
         "android.hardware.tests.foo@1.0",
         "android.hardware.tests.bar@1.0",
@@ -24,17 +33,12 @@
         "android.hardware.tests.memory@1.0",
         "android.hardware.tests.multithread@1.0",
         "android.hardware.tests.trie@1.0",
-        "android.hidl.allocator@1.0",
-        "android.hidl.memory@1.0",
-        "android.hidl.token@1.0",
     ],
 
-    required: [
-        // Warning, these should never be specified explicitly for anything else
-        // as for a given device, what hal implementation is used is determined
-        // by what is specified/available in a device.mk. However, this test
-        // actually depends on these test implementations (which should never be
-        // included on a device.mk).
+    // impls should never be static, these are used only for testing purposes
+    // and test portability since this test pairs with specific hal
+    // implementations
+    whole_static_libs: [
         "android.hardware.tests.foo@1.0-impl",
         "android.hardware.tests.bar@1.0-impl",
         "android.hardware.tests.baz@1.0-impl",
@@ -45,32 +49,28 @@
         "android.hardware.tests.multithread@1.0-impl",
         "android.hardware.tests.trie@1.0-impl",
     ],
+
+    group_static_libs: true,
+}
+
+cc_test {
+    name: "hidl_test_client",
+    defaults: ["hidl_test_client-defaults"],
+
+    srcs: [
+        "hidl_test_client.cpp",
+        "FooCallback.cpp",
+        "static_test.cpp"
+    ],
+
+    shared_libs: [
+        "android.hidl.allocator@1.0",
+    ],
 }
 
 cc_test {
     name: "hidl_test_servers",
+    defaults: ["hidl_test_client-defaults"],
     srcs: ["hidl_test_servers.cpp"],
     gtest: false,
-
-    cflags: ["-Wall", "-Werror"],
-
-    shared_libs: [
-        "libbase",
-        "libhidlbase",
-        "libhidltransport",
-        "libhwbinder",
-        "liblog",
-        "libutils",
-        "android.hardware.tests.foo@1.0",
-        "android.hardware.tests.bar@1.0",
-        "android.hardware.tests.baz@1.0",
-        "android.hardware.tests.hash@1.0",
-        "android.hardware.tests.inheritance@1.0",
-        "android.hardware.tests.pointer@1.0",
-        "android.hardware.tests.memory@1.0",
-        "android.hardware.tests.multithread@1.0",
-        "android.hardware.tests.trie@1.0",
-        "android.hidl.memory@1.0",
-        "android.hidl.token@1.0",
-    ],
-}
+}
\ No newline at end of file
diff --git a/test/hidl_test/AndroidTest.xml b/test/hidl_test/AndroidTest.xml
index 06db2e1..f6a871d 100644
--- a/test/hidl_test/AndroidTest.xml
+++ b/test/hidl_test/AndroidTest.xml
@@ -22,58 +22,12 @@
         <option name="push" value="DATA/nativetest/hidl_test_client/hidl_test_client->/data/nativetest/hidl_test_client/hidl_test_client" />
         <option name="push" value="DATA/nativetest64/hidl_test_client/hidl_test_client->/data/nativetest64/hidl_test_client/hidl_test_client" />
         <option name="push" value="DATA/nativetest64/hidl_test_helper->/data/nativetest64/hidl_test_helper" />
-        <option name="push" value="DATA/nativetest64/hidl_test->/data/nativetest64/hidl_test" />
-        <option name="push" value="DATA/lib/libfootest.so->/data/local/tmp/system/lib/libfootest.so" />
-        <option name="push" value="DATA/lib64/libfootest.so->/data/local/tmp/system/lib64/libfootest.so" />
-        <option name="push" value="DATA/lib/libpointertest.so->/data/local/tmp/system/lib/libpointertest.so" />
-        <option name="push" value="DATA/lib64/libpointertest.so->/data/local/tmp/system/lib64/libpointertest.so" />
-        <option name="push" value="DATA/lib/android.hardware.tests.foo@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.foo@1.0.so" />
-        <option name="push" value="DATA/lib64/android.hardware.tests.foo@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.foo@1.0.so" />
-        <option name="push" value="DATA/lib/android.hardware.tests.bar@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.bar@1.0.so" />
-        <option name="push" value="DATA/lib64/android.hardware.tests.bar@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.bar@1.0.so" />
-        <option name="push" value="DATA/lib/android.hardware.tests.baz@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.baz@1.0.so" />
-        <option name="push" value="DATA/lib64/android.hardware.tests.baz@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.baz@1.0.so" />
-        <option name="push" value="DATA/lib/android.hardware.tests.expression@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.expression@1.0.so" />
-        <option name="push" value="DATA/lib64/android.hardware.tests.expression@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.expression@1.0.so" />
-        <option name="push" value="DATA/lib/android.hardware.tests.hash@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.hash@1.0.so" />
-        <option name="push" value="DATA/lib64/android.hardware.tests.hash@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.hash@1.0.so" />
-        <option name="push" value="DATA/lib/android.hardware.tests.inheritance@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.inheritance@1.0.so" />
-        <option name="push" value="DATA/lib64/android.hardware.tests.inheritance@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.inheritance@1.0.so" />
-        <option name="push" value="DATA/lib/android.hardware.tests.pointer@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.pointer@1.0.so" />
-        <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/android.hardware.tests.trie@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.trie@1.0.so" />
-        <option name="push" value="DATA/lib64/android.hardware.tests.trie@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.trie@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" />
-        <option name="push" value="DATA/lib64/hw/android.hardware.tests.bar@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.bar@1.0-impl.so" />
-        <option name="push" value="DATA/lib/hw/android.hardware.tests.baz@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.baz@1.0-impl.so" />
-        <option name="push" value="DATA/lib64/hw/android.hardware.tests.baz@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.baz@1.0-impl.so" />
-        <option name="push" value="DATA/lib/hw/android.hardware.tests.hash@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.hash@1.0-impl.so" />
-        <option name="push" value="DATA/lib64/hw/android.hardware.tests.hash@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.hash@1.0-impl.so" />
-        <option name="push" value="DATA/lib/hw/android.hardware.tests.inheritance@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.inheritance@1.0-impl.so" />
-        <option name="push" value="DATA/lib64/hw/android.hardware.tests.inheritance@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.inheritance@1.0-impl.so" />
-        <option name="push" value="DATA/lib/hw/android.hardware.tests.pointer@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.pointer@1.0-impl.so" />
-        <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" />
-        <option name="push" value="DATA/lib/hw/android.hardware.tests.trie@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.trie@1.0-impl.so" />
-        <option name="push" value="DATA/lib64/hw/android.hardware.tests.trie@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.trie@1.0-impl.so" />
     </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
       <option name="test-module-name" value="VtsHidlUnitTests" />
       <option name="binary-test-type" value="binary_test" />
       <option name="binary-test-source" value="DATA/nativetest64/hidl_test->/data/nativetest64/hidl_test" />
-      <option name="binary-test-envp" value="VTS_ROOT_PATH=/data/local/tmp" />
-      <option name="binary-test-args" value="-x /data/local/tmp/system/lib" />
-      <option name="binary-test-args" value="-y /data/local/tmp/system/lib64" />
       <option name="test-timeout" value="1m" />
     </test>
 </configuration>
diff --git a/test/hidl_test/hidl_test_client.cpp b/test/hidl_test/hidl_test_client.cpp
index 839d305..9c809c1 100644
--- a/test/hidl_test/hidl_test_client.cpp
+++ b/test/hidl_test/hidl_test_client.cpp
@@ -428,7 +428,8 @@
     }
 };
 
-TEST_F(HidlTest, PreloadTest) {
+// does not work with linker configurations since libs are statically included
+TEST_F(HidlTest, DISABLED_PreloadTest) {
     // in passthrough mode, this will already be opened
     if (mode == BINDERIZED) {
         using android::hardware::preloadPassthroughService;