diff --git a/broadcastradio/1.0/vts/functional/Android.bp b/broadcastradio/1.0/vts/functional/Android.bp index f31a2dcf8c..7040a01779 100644 --- a/broadcastradio/1.0/vts/functional/Android.bp +++ b/broadcastradio/1.0/vts/functional/Android.bp @@ -18,5 +18,8 @@ cc_test { name: "VtsHalBroadcastradioV1_0TargetTest", defaults: ["VtsHalTargetTestDefaults"], srcs: ["VtsHalBroadcastradioV1_0TargetTest.cpp"], - static_libs: ["android.hardware.broadcastradio@1.0"], + static_libs: [ + "android.hardware.broadcastradio@1.0", + "android.hardware.broadcastradio@vts-utils-lib", + ], } diff --git a/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp b/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp index fd048db35d..90c8463755 100644 --- a/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp +++ b/broadcastradio/1.0/vts/functional/VtsHalBroadcastradioV1_0TargetTest.cpp @@ -22,12 +22,12 @@ #include #include -#include #include +#include #include #include #include - +#include using ::android::sp; using ::android::Mutex; @@ -48,6 +48,7 @@ using ::android::hardware::broadcastradio::V1_0::ProgramInfo; using ::android::hardware::broadcastradio::V1_0::MetaData; using ::android::hardware::broadcastradio::V1_0::MetadataKey; using ::android::hardware::broadcastradio::V1_0::MetadataType; +using ::android::hardware::broadcastradio::vts::BroadcastRadioHidlEnvironment; #define RETURN_IF_SKIPPED \ if (skipped) { \ @@ -55,8 +56,8 @@ using ::android::hardware::broadcastradio::V1_0::MetadataType; return; \ } +static BroadcastRadioHidlEnvironment* gEnv = nullptr; // The main test class for Broadcast Radio HIDL HAL. - class BroadcastRadioHidlTest : public ::testing::VtsHalHidlTargetTestBase, public ::testing::WithParamInterface { protected: @@ -67,7 +68,7 @@ class BroadcastRadioHidlTest : public ::testing::VtsHalHidlTargetTestBase, skipped = false; sp factory = - ::testing::VtsHalHidlTargetTestBase::getService(); + getService(gEnv->getServiceName()); ASSERT_NE(nullptr, factory.get()); Result connectResult; @@ -731,8 +732,11 @@ INSTANTIATE_TEST_CASE_P( ::testing::Values(Class::AM_FM, Class::SAT, Class::DT)); int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - int status = RUN_ALL_TESTS(); - ALOGI("Test result = %d", status); - return status; + gEnv = new BroadcastRadioHidlEnvironment; + ::testing::AddGlobalTestEnvironment(gEnv); + ::testing::InitGoogleTest(&argc, argv); + gEnv->init(&argc, argv); + int status = RUN_ALL_TESTS(); + ALOGI("Test result = %d", status); + return status; } diff --git a/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp b/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp index 823d14c44e..6687731965 100644 --- a/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp +++ b/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +59,7 @@ using V1_0::MetadataKey; using V1_0::MetadataType; using broadcastradio::vts::clearAndWait; +using broadcastradio::vts::BroadcastRadioHidlEnvironment; static constexpr auto kConfigTimeout = 10s; static constexpr auto kConnectModuleTimeout = 1s; @@ -91,6 +93,8 @@ struct TunerCallbackMock : public ITunerCallback { MOCK_TIMEOUT_METHOD1(currentProgramInfoChanged, Return(const ProgramInfo&)); }; +static BroadcastRadioHidlEnvironment* gEnv = nullptr; + class BroadcastRadioHalTest : public ::testing::VtsHalHidlTargetTestBase, public ::testing::WithParamInterface { protected: @@ -119,7 +123,8 @@ void BroadcastRadioHalTest::SetUp() { radioClass = GetParam(); // lookup HIDL service - auto factory = getService(); + auto factory = + getService(gEnv->getServiceName()); ASSERT_NE(nullptr, factory.get()); // connect radio module @@ -606,8 +611,14 @@ INSTANTIATE_TEST_CASE_P(BroadcastRadioHalTestCases, BroadcastRadioHalTest, } // namespace android int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - int status = RUN_ALL_TESTS(); - ALOGI("Test result = %d", status); - return status; + using android::hardware::broadcastradio::V1_1::vts::gEnv; + using android::hardware::broadcastradio::V1_1::IBroadcastRadioFactory; + using android::hardware::broadcastradio::vts::BroadcastRadioHidlEnvironment; + gEnv = new BroadcastRadioHidlEnvironment; + ::testing::AddGlobalTestEnvironment(gEnv); + ::testing::InitGoogleTest(&argc, argv); + gEnv->init(&argc, argv); + int status = RUN_ALL_TESTS(); + ALOGI("Test result = %d", status); + return status; } diff --git a/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp b/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp index 2a5ec8fee5..6877f0745a 100644 --- a/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp +++ b/broadcastradio/2.0/vts/functional/VtsHalBroadcastradioV2_0TargetTest.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -52,6 +53,7 @@ using testing::DoAll; using testing::Invoke; using testing::SaveArg; +using broadcastradio::vts::BroadcastRadioHidlEnvironment; using broadcastradio::vts::CallBarrier; using broadcastradio::vts::clearAndWait; using utils::make_identifier; @@ -97,6 +99,8 @@ struct AnnouncementListenerMock : public IAnnouncementListener { MOCK_METHOD1(onListUpdated, Return(const hidl_vec&)); }; +static BroadcastRadioHidlEnvironment* gEnv = nullptr; + class BroadcastRadioHalTest : public ::testing::VtsHalHidlTargetTestBase { protected: virtual void SetUp() override; @@ -171,7 +175,7 @@ void BroadcastRadioHalTest::SetUp() { EXPECT_EQ(nullptr, mModule.get()) << "Module is already open"; // lookup HIDL service (radio module) - mModule = getService(); + mModule = getService(gEnv->getServiceName()); ASSERT_NE(nullptr, mModule.get()) << "Couldn't find broadcast radio HAL implementation"; // get module properties @@ -804,7 +808,13 @@ TEST_F(BroadcastRadioHalTest, AnnouncementListenerRegistration) { } // namespace android int main(int argc, char** argv) { + using android::hardware::broadcastradio::V2_0::vts::gEnv; + using android::hardware::broadcastradio::V2_0::IBroadcastRadio; + using android::hardware::broadcastradio::vts::BroadcastRadioHidlEnvironment; + gEnv = new BroadcastRadioHidlEnvironment; + ::testing::AddGlobalTestEnvironment(gEnv); ::testing::InitGoogleTest(&argc, argv); + gEnv->init(&argc, argv); int status = RUN_ALL_TESTS(); ALOGI("Test result = %d", status); return status; diff --git a/broadcastradio/common/vts/utils/Android.bp b/broadcastradio/common/vts/utils/Android.bp index 4ba8a17089..d3edc76678 100644 --- a/broadcastradio/common/vts/utils/Android.bp +++ b/broadcastradio/common/vts/utils/Android.bp @@ -25,4 +25,8 @@ cc_library_static { "-Wextra", "-Werror", ], + static_libs: [ + "VtsHalHidlTargetTestBase", + ], + group_static_libs: true, } diff --git a/broadcastradio/common/vts/utils/include/broadcastradio-vts-utils/environment-utils.h b/broadcastradio/common/vts/utils/include/broadcastradio-vts-utils/environment-utils.h new file mode 100644 index 0000000000..274e6322b8 --- /dev/null +++ b/broadcastradio/common/vts/utils/include/broadcastradio-vts-utils/environment-utils.h @@ -0,0 +1,41 @@ +/* + * 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. + */ +#ifndef ANDROID_HARDWARE_BROADCASTRADIO_VTS_ENVIRONMENT_UTILS +#define ANDROID_HARDWARE_BROADCASTRADIO_VTS_ENVIRONMENT_UTILS + +#include + +namespace android { +namespace hardware { +namespace broadcastradio { +namespace vts { + +// Test environment for BroadcastRadio HIDL HAL. +template +class BroadcastRadioHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { + public: + virtual void registerTestServices() override { + using expander = int[]; + (void)expander{0, (registerTestService(), 0)...}; + } +}; + +} // namespace vts +} // namespace broadcastradio +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_BROADCASTRADIO_VTS_ENVIRONMENT_UTILS