Add metadata to modules in system/libfmq am: ef477dd676 am: 31edfaabe0  -s ours
am: 3dcaf37163  -s ours

Change-Id: Ice846a355767f9f42a58c4b47be56d3293d0bf98
diff --git a/Android.bp b/Android.bp
index de2b6ac..5b7459f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12,6 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+subdirs = [
+    "tests",
+]
+
 cc_library_shared {
     name: "libfmq",
     shared_libs: [
@@ -26,7 +30,6 @@
     ],
     export_include_dirs: ["include"],
     local_include_dirs: ["include"],
-    clang: true,
     srcs: [
         "EventFlag.cpp",
         "FmqInternal.cpp",
diff --git a/EventFlag.cpp b/EventFlag.cpp
index 7ce4edd..cb101bd 100644
--- a/EventFlag.cpp
+++ b/EventFlag.cpp
@@ -16,14 +16,17 @@
 
 #define LOG_TAG "FMQ_EventFlags"
 
-#include <fmq/EventFlag.h>
 #include <linux/futex.h>
+#include <string.h>
 #include <sys/mman.h>
 #include <sys/syscall.h>
 #include <unistd.h>
+
+#include <new>
+
+#include <fmq/EventFlag.h>
 #include <utils/Log.h>
 #include <utils/SystemClock.h>
-#include <new>
 
 namespace android {
 namespace hardware {
diff --git a/benchmarks/Android.mk b/benchmarks/Android.mk
index 1df6798..3f481cb 100644
--- a/benchmarks/Android.mk
+++ b/benchmarks/Android.mk
@@ -20,6 +20,8 @@
 LOCAL_SRC_FILES := \
     msgq_benchmark_client.cpp
 
+LOCAL_CFLAGS := -Wall -Werror
+
 LOCAL_SHARED_LIBRARIES := \
     libhwbinder \
     libbase \
diff --git a/tests/Android.bp b/tests/Android.bp
new file mode 100644
index 0000000..ab2b2ce
--- /dev/null
+++ b/tests/Android.bp
@@ -0,0 +1,65 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_test {
+    name: "mq_test_client",
+    srcs: ["msgq_test_client.cpp"],
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "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: ["android.hardware.tests.msgq@1.0"],
+    whole_static_libs: ["android.hardware.tests.msgq@1.0-impl"],
+}
+
+cc_test {
+    name: "mq_test",
+
+    srcs: ["mq_test.cpp"],
+    shared_libs: [
+        "libbase",
+        "libcutils",
+        "libfmq",
+        "libhidlbase",
+        "libhidltransport",
+        "libhwbinder",
+        "liblog",
+        "libutils",
+    ],
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+}
diff --git a/tests/Android.mk b/tests/Android.mk
index 673d485..718a33b 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -29,42 +29,6 @@
 include $(BUILD_PREBUILT)
 
 include $(CLEAR_VARS)
-LOCAL_SRC_FILES := \
-    msgq_test_client.cpp
-
-LOCAL_SHARED_LIBRARIES := \
-    libhidlbase \
-    libhidltransport  \
-    libhwbinder \
-    libcutils \
-    libutils \
-    libbase \
-    libfmq \
-    liblog
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_SHARED_LIBRARIES += android.hardware.tests.msgq@1.0 libfmq
-LOCAL_MODULE := mq_test_client
-LOCAL_REQUIRED_MODULES := \
-    android.hardware.tests.msgq@1.0-impl_32 \
-    android.hardware.tests.msgq@1.0-impl
-
-include $(BUILD_NATIVE_TEST)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := \
-    mq_test.cpp
-LOCAL_STATIC_LIBRARIES := libutils libcutils liblog
-LOCAL_SHARED_LIBRARIES := \
-    libhidlbase \
-    libhidltransport \
-    libhwbinder \
-    libbase \
-    libfmq
-LOCAL_MODULE := mq_test
-LOCAL_CFLAGS := -Wall -Werror
-include $(BUILD_NATIVE_TEST)
-
-include $(CLEAR_VARS)
 
 LOCAL_MODULE := VtsFmqUnitTests
 VTS_CONFIG_SRC_DIR := system/libfmq/tests
diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml
index adf8b02..9e5df01 100644
--- a/tests/AndroidTest.xml
+++ b/tests/AndroidTest.xml
@@ -23,20 +23,12 @@
         <option name="push" value="DATA/nativetest/mq_test_client/mq_test_client->/data/nativetest/mq_test_client/mq_test_client" />
         <option name="push" value="DATA/nativetest64/mq_test_client/mq_test_client->/data/nativetest64/mq_test_client/mq_test_client" />
         <option name="push" value="DATA/nativetest64/hidl_test_helper->/data/nativetest64/hidl_test_helper" />
-        <option name="push" value="DATA/nativetest64/fmq_test->/data/nativetest64/fmq_test" />
-        <option name="push" value="DATA/lib/android.hardware.tests.msgq@1.0.so->/data/local/tmp/system/lib/android.hardware.tests.msgq@1.0.so" />
-        <option name="push" value="DATA/lib64/android.hardware.tests.msgq@1.0.so->/data/local/tmp/system/lib64/android.hardware.tests.msgq@1.0.so" />
-        <option name="push" value="DATA/lib/hw/android.hardware.tests.msgq@1.0-impl.so->/data/local/tmp/system/lib/hw/android.hardware.tests.msgq@1.0-impl.so" />
-        <option name="push" value="DATA/lib64/hw/android.hardware.tests.msgq@1.0-impl.so->/data/local/tmp/system/lib64/hw/android.hardware.tests.msgq@1.0-impl.so" />
     </target_preparer>
-    <target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
+    <multi_target_preparer class="com.android.tradefed.targetprep.VtsPythonVirtualenvPreparer" />
     <test class="com.android.tradefed.testtype.VtsMultiDeviceTest">
         <option name="test-module-name" value="VtsFmqUnitTests" />
         <option name="binary-test-type" value="binary_test" />
         <option name="binary-test-source" value="DATA/nativetest64/fmq_test->/data/nativetest64/fmq_test" />
-        <option name="binary-test-envp" value="TREBLE_TESTING_OVERRIDE=true" />
-        <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/tests/msgq_test_client.cpp b/tests/msgq_test_client.cpp
index 4416c54..50664f7 100644
--- a/tests/msgq_test_client.cpp
+++ b/tests/msgq_test_client.cpp
@@ -244,6 +244,11 @@
                                      static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
                                      5000000000 /* timeOutNanos */);
     ASSERT_TRUE(ret);
+    ret = mQueue->writeBlocking(data, mNumMessagesMax,
+                                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
+                                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
+                                5000000000 /* timeOutNanos */);
+    ASSERT_TRUE(ret);
 }
 
 /*
@@ -286,6 +291,7 @@
 TEST_F(SynchronizedReadWriteClient, BlockingReadWriteRepeat1) {
     const size_t dataLen = 64;
     uint16_t data[dataLen] = {0};
+    bool ret = false;
 
     /*
      * Request service to perform a blocking read. This call is oneway and will
@@ -295,14 +301,19 @@
     mService->requestBlockingReadRepeat(dataLen, writeCount);
 
     for (size_t i = 0; i < writeCount; i++) {
-        bool ret = mQueue->writeBlocking(
-                data,
-                dataLen,
-                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
-                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
-                5000000000 /* timeOutNanos */);
+        ret = mQueue->writeBlocking(data, dataLen,
+                                    static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
+                                    static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
+                                    5000000000 /* timeOutNanos */);
         ASSERT_TRUE(ret);
     }
+
+    ret = mQueue->writeBlocking(data, mNumMessagesMax,
+                                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
+                                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
+                                5000000000 /* timeOutNanos */);
+
+    ASSERT_TRUE(ret);
 }
 
 /*
@@ -314,6 +325,7 @@
 TEST_F(SynchronizedReadWriteClient, BlockingReadWriteRepeat2) {
     const size_t dataLen = 64;
     uint16_t data[dataLen] = {0};
+    bool ret = false;
 
     /*
      * Request service to perform a blocking read. This call is oneway and will
@@ -323,14 +335,18 @@
     mService->requestBlockingReadRepeat(dataLen*2, writeCount/2);
 
     for (size_t i = 0; i < writeCount; i++) {
-        bool ret = mQueue->writeBlocking(
-                data,
-                dataLen,
-                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
-                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
-                5000000000 /* timeOutNanos */);
+        ret = mQueue->writeBlocking(data, dataLen,
+                                    static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
+                                    static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
+                                    5000000000 /* timeOutNanos */);
         ASSERT_TRUE(ret);
     }
+
+    ret = mQueue->writeBlocking(data, mNumMessagesMax,
+                                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
+                                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
+                                5000000000 /* timeOutNanos */);
+    ASSERT_TRUE(ret);
 }
 
 /*
@@ -341,6 +357,7 @@
 TEST_F(SynchronizedReadWriteClient, BlockingReadWriteRepeat3) {
     const size_t dataLen = 64;
     uint16_t data[dataLen] = {0};
+    bool ret = false;
 
     /*
      * Request service to perform a blocking read. This call is oneway and will
@@ -350,14 +367,17 @@
     mService->requestBlockingReadRepeat(dataLen/2, writeCount*2);
 
     for (size_t i = 0; i < writeCount; i++) {
-        bool ret = mQueue->writeBlocking(
-                data,
-                dataLen,
-                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
-                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
-                5000000000 /* timeOutNanos */);
+        ret = mQueue->writeBlocking(data, dataLen,
+                                    static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
+                                    static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
+                                    5000000000 /* timeOutNanos */);
         ASSERT_TRUE(ret);
     }
+    ret = mQueue->writeBlocking(data, mNumMessagesMax,
+                                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_FULL),
+                                static_cast<uint32_t>(ITestMsgQ::EventFlagBits::FMQ_NOT_EMPTY),
+                                5000000000 /* timeOutNanos */);
+    ASSERT_TRUE(ret);
 }
 
 /*