diff options
| -rw-r--r-- | libs/vr/libdvr/tests/Android.bp | 21 | ||||
| -rw-r--r-- | libs/vr/libdvr/tests/Android.mk | 46 | ||||
| -rw-r--r-- | libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp | 20 |
3 files changed, 59 insertions, 28 deletions
diff --git a/libs/vr/libdvr/tests/Android.bp b/libs/vr/libdvr/tests/Android.bp index ac20760429..1ae75fbe04 100644 --- a/libs/vr/libdvr/tests/Android.bp +++ b/libs/vr/libdvr/tests/Android.bp @@ -52,24 +52,3 @@ cc_test { ], name: "dvr_api-test", } - -cc_test { - srcs: [ - "dvr_buffer_queue-test.cpp", - ], - - header_libs: [ - "libdvr_headers", - "libbase_headers", - ], - shared_libs: [ - "liblog", - "libnativewindow", - ], - cflags: [ - "-DTRACE=0", - "-O0", - "-g", - ], - name: "dvr_buffer_queue-test", -} diff --git a/libs/vr/libdvr/tests/Android.mk b/libs/vr/libdvr/tests/Android.mk new file mode 100644 index 0000000000..b3fae47c41 --- /dev/null +++ b/libs/vr/libdvr/tests/Android.mk @@ -0,0 +1,46 @@ +# Copyright (C) 2018 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. + +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_MODULE:= dvr_buffer_queue-test + +# Includes the dvr_api.h header. Tests should only include "dvr_api.h", +# and shall only get access to |dvrGetApi|, as other symbols are hidden from the +# library. +LOCAL_C_INCLUDES := \ + frameworks/native/libs/vr/libdvr/include \ + +LOCAL_SANITIZE := thread + +LOCAL_SRC_FILES := \ + dvr_buffer_queue-test.cpp \ + +LOCAL_SHARED_LIBRARIES := \ + libandroid \ + liblog \ + +LOCAL_CFLAGS := \ + -DTRACE=0 \ + -O2 \ + -g \ + +# DTS Should only link to NDK libraries. +LOCAL_SDK_VERSION := 26 +LOCAL_NDK_STL_VARIANT := c++_static + +# TODO(b/73133405): Currently, builing cc_test against NDK using Android.bp +# doesn't work well. Migrate to use Android.bp once b/73133405 gets fixed. +include $(BUILD_NATIVE_TEST) diff --git a/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp b/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp index adf69776bc..ea37935a9d 100644 --- a/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp +++ b/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp @@ -1,4 +1,3 @@ -#include <android-base/unique_fd.h> #include <android/log.h> #include <android/native_window.h> #include <dlfcn.h> @@ -46,7 +45,14 @@ class DvrBufferQueueTest : public ::testing::Test { protected: void SetUp() override { - platform_handle_ = dlopen("libdvr.so", RTLD_NOW | RTLD_LOCAL); + int flags = RTLD_NOW | RTLD_LOCAL; + + // Here we need to ensure that libdvr is loaded with RTLD_NODELETE flag set + // (so that calls to `dlclose` don't actually unload the library). This is a + // workaround for an Android NDK bug. See more detail: + // https://github.com/android-ndk/ndk/issues/360 + flags |= RTLD_NODELETE; + platform_handle_ = dlopen("libdvr.so", flags); ASSERT_NOT_NULL(platform_handle_) << "Dvr shared library missing."; auto dvr_get_api = reinterpret_cast<decltype(&dvrGetApi)>( @@ -192,7 +198,7 @@ TEST_F(DvrBufferQueueTest, AcquirePostGainRelease) { ASSERT_TRUE(api_.WriteBufferIsValid(wb)); ALOGD_IF(TRACE, "TestDequeuePostDequeueRelease, gain buffer %p, fence_fd=%d", wb, fence_fd); - android::base::unique_fd release_fence(fence_fd); + close(fence_fd); // Post buffer to the read_queue. meta1.timestamp = 42; @@ -217,7 +223,7 @@ TEST_F(DvrBufferQueueTest, AcquirePostGainRelease) { ALOGD_IF(TRACE, "TestDequeuePostDequeueRelease, acquire buffer %p, fence_fd=%d", rb, fence_fd); - android::base::unique_fd acquire_fence(fence_fd); + close(fence_fd); // Release buffer to the write_queue. ret = api_.ReadBufferQueueReleaseBuffer(read_queue, rb, &meta2, @@ -304,7 +310,7 @@ TEST_F(DvrBufferQueueTest, ResizeBuffer) { ASSERT_EQ(0, ret); ASSERT_TRUE(api_.WriteBufferIsValid(wb1)); ALOGD_IF(TRACE, "TestResizeBuffer, gain buffer %p", wb1); - android::base::unique_fd release_fence1(fence_fd); + close(fence_fd); // Check the buffer dimension. ret = api_.WriteBufferGetAHardwareBuffer(wb1, &ahb1); @@ -332,7 +338,7 @@ TEST_F(DvrBufferQueueTest, ResizeBuffer) { ASSERT_TRUE(api_.WriteBufferIsValid(wb2)); ALOGD_IF(TRACE, "TestResizeBuffer, gain buffer %p, fence_fd=%d", wb2, fence_fd); - android::base::unique_fd release_fence2(fence_fd); + close(fence_fd); // Check the buffer dimension, should be new width ret = api_.WriteBufferGetAHardwareBuffer(wb2, &ahb2); @@ -359,7 +365,7 @@ TEST_F(DvrBufferQueueTest, ResizeBuffer) { ASSERT_TRUE(api_.WriteBufferIsValid(wb3)); ALOGD_IF(TRACE, "TestResizeBuffer, gain buffer %p, fence_fd=%d", wb3, fence_fd); - android::base::unique_fd release_fence3(fence_fd); + close(fence_fd); // Check the buffer dimension, should be new width ret = api_.WriteBufferGetAHardwareBuffer(wb3, &ahb3); |