Loading tv/input/1.0/vts/functional/Android.bp +5 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ cc_test { defaults: ["VtsHalTargetTestDefaults"], srcs: ["VtsHalTvInputV1_0TargetTest.cpp"], static_libs: ["android.hardware.tv.input@1.0"], test_suites: ["general-tests"], test_suites: [ "general-tests", "vts-core", ], require_root: true, } tv/input/1.0/vts/functional/VtsHalTvInputV1_0TargetTest.cpp +237 −269 Original line number Diff line number Diff line Loading @@ -17,11 +17,12 @@ #define LOG_TAG "tv_input_hidl_hal_test" #include <android-base/logging.h> #include <android/hardware/tv/input/1.0/types.h> #include <android/hardware/tv/input/1.0/ITvInput.h> #include <android/hardware/tv/input/1.0/ITvInputCallback.h> #include <VtsHalHidlTargetTestBase.h> #include <android/hardware/tv/input/1.0/types.h> #include <gtest/gtest.h> #include <hidl/GtestPrinter.h> #include <hidl/ServiceManagement.h> #include <utils/KeyedVector.h> #include <mutex> #include <vector> Loading @@ -42,28 +43,11 @@ using ::android::sp; #define WAIT_FOR_EVENT_TIMEOUT 5 #define DEFAULT_ID INT32_MIN // Test environment for TvInput HIDL HAL. class TvInputHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { public: // get the test environment singleton static TvInputHidlEnvironment* Instance() { static TvInputHidlEnvironment* instance = new TvInputHidlEnvironment; return instance; } virtual void registerTestServices() override { registerTestService<ITvInput>(); } private: TvInputHidlEnvironment() {} }; /* The main test class for TV Input HIDL HAL. */ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { class TvInputHidlTest : public testing::TestWithParam<std::string> { public: virtual void SetUp() override { tv_input_ = ::testing::VtsHalHidlTargetTestBase::getService<ITvInput>( TvInputHidlEnvironment::Instance()->getServiceName<ITvInput>()); ASSERT_NE(tv_input_, nullptr); tv_input_ = ITvInput::getService(GetParam()); tv_input_callback_ = new TvInputCallback(*this); ASSERT_NE(tv_input_callback_, nullptr); tv_input_->setCallback(tv_input_callback_); Loading @@ -79,9 +63,7 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { } /* Called when a DEVICE_UNAVAILABLE event is received. */ void onDeviceUnavailable(int32_t deviceId) { device_info_.removeItem(deviceId); } void onDeviceUnavailable(int32_t deviceId) { device_info_.removeItem(deviceId); } /* Called when a DEVICE_CONFIGURATIONS_CHANGED event is received. */ Result onStreamConfigurationsChanged(int32_t deviceId) { Loading @@ -93,8 +75,8 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { stream_config_.removeItem(deviceId); Result result = Result::UNKNOWN; hidl_vec<TvStreamConfig> list; tv_input_->getStreamConfigurations(deviceId, [&result, &list](Result res, hidl_vec<TvStreamConfig> configs) { tv_input_->getStreamConfigurations( deviceId, [&result, &list](Result res, hidl_vec<TvStreamConfig> configs) { result = res; if (res == Result::OK) { list = configs; Loading Loading @@ -135,7 +117,8 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { for (int32_t i = 0; i < size; i++) { // Put every element to its target position, if possible. int32_t target_pos = nums[i]; while (target_pos >= 0 && target_pos < size && i != target_pos && nums[i] != nums[target_pos]) { while (target_pos >= 0 && target_pos < size && i != target_pos && nums[i] != nums[target_pos]) { std::swap(nums[i], nums[target_pos]); target_pos = nums[i]; } Loading @@ -157,7 +140,7 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { virtual ~TvInputCallback() = default; /* * Notifies the client that an event has occured. For possible event types, * Notifies the client that an event has occurred. For possible event types, * check TvInputEventType. */ Return<void> notify(const TvInputEvent& event) override { Loading @@ -175,6 +158,7 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { } return Void(); }; private: /* The test contains this callback instance. */ TvInputHidlTest& parent_; Loading Loading @@ -202,13 +186,12 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { std::mutex mutex_; }; /* * GetStreamConfigTest: * Calls updateStreamConfigurations() for each existing device * Checks returned results */ TEST_F(TvInputHidlTest, GetStreamConfigTest) { TEST_P(TvInputHidlTest, GetStreamConfigTest) { std::unique_lock<std::mutex> lock(mutex_); for (size_t i = 0; i < device_info_.size(); i++) { int32_t device_id = device_info_.keyAt(i); Loading @@ -222,7 +205,7 @@ TEST_F(TvInputHidlTest, GetStreamConfigTest) { * Calls openStream() and then closeStream() for each existing stream * Checks returned results */ TEST_F(TvInputHidlTest, OpenAndCloseStreamTest) { TEST_P(TvInputHidlTest, OpenAndCloseStreamTest) { std::unique_lock<std::mutex> lock(mutex_); updateAllStreamConfigurations(); for (size_t j = 0; j < stream_config_.size(); j++) { Loading @@ -232,9 +215,7 @@ TEST_F(TvInputHidlTest, OpenAndCloseStreamTest) { Result result = Result::UNKNOWN; int32_t stream_id = config[i].streamId; tv_input_->openStream(device_id, stream_id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::OK, result); result = Result::UNKNOWN; Loading @@ -251,7 +232,7 @@ TEST_F(TvInputHidlTest, OpenAndCloseStreamTest) { * Checks returned results * The results should be Result::INVALID_ARGUMENTS */ TEST_F(TvInputHidlTest, InvalidDeviceIdTest) { TEST_P(TvInputHidlTest, InvalidDeviceIdTest) { std::unique_lock<std::mutex> lock(mutex_); std::vector<int32_t> device_ids; Loading @@ -265,9 +246,7 @@ TEST_F(TvInputHidlTest, InvalidDeviceIdTest) { Result result = Result::UNKNOWN; int32_t stream_id = 0; tv_input_->openStream(id, stream_id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::INVALID_ARGUMENTS, result); result = Result::UNKNOWN; Loading @@ -281,7 +260,7 @@ TEST_F(TvInputHidlTest, InvalidDeviceIdTest) { * Checks returned results * The results should be Result::INVALID_ARGUMENTS */ TEST_F(TvInputHidlTest, InvalidStreamIdTest) { TEST_P(TvInputHidlTest, InvalidStreamIdTest) { std::unique_lock<std::mutex> lock(mutex_); if (device_info_.isEmpty()) { return; Loading @@ -302,9 +281,7 @@ TEST_F(TvInputHidlTest, InvalidStreamIdTest) { Result result = Result::UNKNOWN; tv_input_->openStream(device_id, id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::INVALID_ARGUMENTS, result); result = Result::UNKNOWN; Loading @@ -318,7 +295,7 @@ TEST_F(TvInputHidlTest, InvalidStreamIdTest) { * Checks returned results * The result of the second call should be Result::INVALID_STATE */ TEST_F(TvInputHidlTest, OpenAnOpenedStreamsTest) { TEST_P(TvInputHidlTest, OpenAnOpenedStreamsTest) { std::unique_lock<std::mutex> lock(mutex_); updateAllStreamConfigurations(); std::vector<size_t> indices = getConfigIndices(); Loading @@ -330,15 +307,11 @@ TEST_F(TvInputHidlTest, OpenAnOpenedStreamsTest) { Result result = Result::UNKNOWN; tv_input_->openStream(device_id, stream_id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::OK, result); tv_input_->openStream(device_id, stream_id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::INVALID_STATE, result); } Loading @@ -348,7 +321,7 @@ TEST_F(TvInputHidlTest, OpenAnOpenedStreamsTest) { * Checks the returned result * The result should be Result::INVALID_STATE */ TEST_F(TvInputHidlTest, CloseStreamBeforeOpenTest) { TEST_P(TvInputHidlTest, CloseStreamBeforeOpenTest) { std::unique_lock<std::mutex> lock(mutex_); updateAllStreamConfigurations(); std::vector<size_t> indices = getConfigIndices(); Loading @@ -360,12 +333,7 @@ TEST_F(TvInputHidlTest, CloseStreamBeforeOpenTest) { EXPECT_EQ(Result::INVALID_STATE, tv_input_->closeStream(device_id, stream_id)); } int main(int argc, char **argv) { ::testing::AddGlobalTestEnvironment(TvInputHidlEnvironment::Instance()); ::testing::InitGoogleTest(&argc, argv); TvInputHidlEnvironment::Instance()->init(&argc, argv); int status = RUN_ALL_TESTS(); ALOGI("Test result = %d", status); return status; } INSTANTIATE_TEST_SUITE_P( PerInstance, TvInputHidlTest, testing::ValuesIn(android::hardware::getAllHalInstanceNames(ITvInput::descriptor)), android::hardware::PrintInstanceNameToString); Loading
tv/input/1.0/vts/functional/Android.bp +5 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ cc_test { defaults: ["VtsHalTargetTestDefaults"], srcs: ["VtsHalTvInputV1_0TargetTest.cpp"], static_libs: ["android.hardware.tv.input@1.0"], test_suites: ["general-tests"], test_suites: [ "general-tests", "vts-core", ], require_root: true, }
tv/input/1.0/vts/functional/VtsHalTvInputV1_0TargetTest.cpp +237 −269 Original line number Diff line number Diff line Loading @@ -17,11 +17,12 @@ #define LOG_TAG "tv_input_hidl_hal_test" #include <android-base/logging.h> #include <android/hardware/tv/input/1.0/types.h> #include <android/hardware/tv/input/1.0/ITvInput.h> #include <android/hardware/tv/input/1.0/ITvInputCallback.h> #include <VtsHalHidlTargetTestBase.h> #include <android/hardware/tv/input/1.0/types.h> #include <gtest/gtest.h> #include <hidl/GtestPrinter.h> #include <hidl/ServiceManagement.h> #include <utils/KeyedVector.h> #include <mutex> #include <vector> Loading @@ -42,28 +43,11 @@ using ::android::sp; #define WAIT_FOR_EVENT_TIMEOUT 5 #define DEFAULT_ID INT32_MIN // Test environment for TvInput HIDL HAL. class TvInputHidlEnvironment : public ::testing::VtsHalHidlTargetTestEnvBase { public: // get the test environment singleton static TvInputHidlEnvironment* Instance() { static TvInputHidlEnvironment* instance = new TvInputHidlEnvironment; return instance; } virtual void registerTestServices() override { registerTestService<ITvInput>(); } private: TvInputHidlEnvironment() {} }; /* The main test class for TV Input HIDL HAL. */ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { class TvInputHidlTest : public testing::TestWithParam<std::string> { public: virtual void SetUp() override { tv_input_ = ::testing::VtsHalHidlTargetTestBase::getService<ITvInput>( TvInputHidlEnvironment::Instance()->getServiceName<ITvInput>()); ASSERT_NE(tv_input_, nullptr); tv_input_ = ITvInput::getService(GetParam()); tv_input_callback_ = new TvInputCallback(*this); ASSERT_NE(tv_input_callback_, nullptr); tv_input_->setCallback(tv_input_callback_); Loading @@ -79,9 +63,7 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { } /* Called when a DEVICE_UNAVAILABLE event is received. */ void onDeviceUnavailable(int32_t deviceId) { device_info_.removeItem(deviceId); } void onDeviceUnavailable(int32_t deviceId) { device_info_.removeItem(deviceId); } /* Called when a DEVICE_CONFIGURATIONS_CHANGED event is received. */ Result onStreamConfigurationsChanged(int32_t deviceId) { Loading @@ -93,8 +75,8 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { stream_config_.removeItem(deviceId); Result result = Result::UNKNOWN; hidl_vec<TvStreamConfig> list; tv_input_->getStreamConfigurations(deviceId, [&result, &list](Result res, hidl_vec<TvStreamConfig> configs) { tv_input_->getStreamConfigurations( deviceId, [&result, &list](Result res, hidl_vec<TvStreamConfig> configs) { result = res; if (res == Result::OK) { list = configs; Loading Loading @@ -135,7 +117,8 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { for (int32_t i = 0; i < size; i++) { // Put every element to its target position, if possible. int32_t target_pos = nums[i]; while (target_pos >= 0 && target_pos < size && i != target_pos && nums[i] != nums[target_pos]) { while (target_pos >= 0 && target_pos < size && i != target_pos && nums[i] != nums[target_pos]) { std::swap(nums[i], nums[target_pos]); target_pos = nums[i]; } Loading @@ -157,7 +140,7 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { virtual ~TvInputCallback() = default; /* * Notifies the client that an event has occured. For possible event types, * Notifies the client that an event has occurred. For possible event types, * check TvInputEventType. */ Return<void> notify(const TvInputEvent& event) override { Loading @@ -175,6 +158,7 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { } return Void(); }; private: /* The test contains this callback instance. */ TvInputHidlTest& parent_; Loading Loading @@ -202,13 +186,12 @@ class TvInputHidlTest : public ::testing::VtsHalHidlTargetTestBase { std::mutex mutex_; }; /* * GetStreamConfigTest: * Calls updateStreamConfigurations() for each existing device * Checks returned results */ TEST_F(TvInputHidlTest, GetStreamConfigTest) { TEST_P(TvInputHidlTest, GetStreamConfigTest) { std::unique_lock<std::mutex> lock(mutex_); for (size_t i = 0; i < device_info_.size(); i++) { int32_t device_id = device_info_.keyAt(i); Loading @@ -222,7 +205,7 @@ TEST_F(TvInputHidlTest, GetStreamConfigTest) { * Calls openStream() and then closeStream() for each existing stream * Checks returned results */ TEST_F(TvInputHidlTest, OpenAndCloseStreamTest) { TEST_P(TvInputHidlTest, OpenAndCloseStreamTest) { std::unique_lock<std::mutex> lock(mutex_); updateAllStreamConfigurations(); for (size_t j = 0; j < stream_config_.size(); j++) { Loading @@ -232,9 +215,7 @@ TEST_F(TvInputHidlTest, OpenAndCloseStreamTest) { Result result = Result::UNKNOWN; int32_t stream_id = config[i].streamId; tv_input_->openStream(device_id, stream_id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::OK, result); result = Result::UNKNOWN; Loading @@ -251,7 +232,7 @@ TEST_F(TvInputHidlTest, OpenAndCloseStreamTest) { * Checks returned results * The results should be Result::INVALID_ARGUMENTS */ TEST_F(TvInputHidlTest, InvalidDeviceIdTest) { TEST_P(TvInputHidlTest, InvalidDeviceIdTest) { std::unique_lock<std::mutex> lock(mutex_); std::vector<int32_t> device_ids; Loading @@ -265,9 +246,7 @@ TEST_F(TvInputHidlTest, InvalidDeviceIdTest) { Result result = Result::UNKNOWN; int32_t stream_id = 0; tv_input_->openStream(id, stream_id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::INVALID_ARGUMENTS, result); result = Result::UNKNOWN; Loading @@ -281,7 +260,7 @@ TEST_F(TvInputHidlTest, InvalidDeviceIdTest) { * Checks returned results * The results should be Result::INVALID_ARGUMENTS */ TEST_F(TvInputHidlTest, InvalidStreamIdTest) { TEST_P(TvInputHidlTest, InvalidStreamIdTest) { std::unique_lock<std::mutex> lock(mutex_); if (device_info_.isEmpty()) { return; Loading @@ -302,9 +281,7 @@ TEST_F(TvInputHidlTest, InvalidStreamIdTest) { Result result = Result::UNKNOWN; tv_input_->openStream(device_id, id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::INVALID_ARGUMENTS, result); result = Result::UNKNOWN; Loading @@ -318,7 +295,7 @@ TEST_F(TvInputHidlTest, InvalidStreamIdTest) { * Checks returned results * The result of the second call should be Result::INVALID_STATE */ TEST_F(TvInputHidlTest, OpenAnOpenedStreamsTest) { TEST_P(TvInputHidlTest, OpenAnOpenedStreamsTest) { std::unique_lock<std::mutex> lock(mutex_); updateAllStreamConfigurations(); std::vector<size_t> indices = getConfigIndices(); Loading @@ -330,15 +307,11 @@ TEST_F(TvInputHidlTest, OpenAnOpenedStreamsTest) { Result result = Result::UNKNOWN; tv_input_->openStream(device_id, stream_id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::OK, result); tv_input_->openStream(device_id, stream_id, [&result](Result res, const native_handle_t*) { result = res; }); [&result](Result res, const native_handle_t*) { result = res; }); EXPECT_EQ(Result::INVALID_STATE, result); } Loading @@ -348,7 +321,7 @@ TEST_F(TvInputHidlTest, OpenAnOpenedStreamsTest) { * Checks the returned result * The result should be Result::INVALID_STATE */ TEST_F(TvInputHidlTest, CloseStreamBeforeOpenTest) { TEST_P(TvInputHidlTest, CloseStreamBeforeOpenTest) { std::unique_lock<std::mutex> lock(mutex_); updateAllStreamConfigurations(); std::vector<size_t> indices = getConfigIndices(); Loading @@ -360,12 +333,7 @@ TEST_F(TvInputHidlTest, CloseStreamBeforeOpenTest) { EXPECT_EQ(Result::INVALID_STATE, tv_input_->closeStream(device_id, stream_id)); } int main(int argc, char **argv) { ::testing::AddGlobalTestEnvironment(TvInputHidlEnvironment::Instance()); ::testing::InitGoogleTest(&argc, argv); TvInputHidlEnvironment::Instance()->init(&argc, argv); int status = RUN_ALL_TESTS(); ALOGI("Test result = %d", status); return status; } INSTANTIATE_TEST_SUITE_P( PerInstance, TvInputHidlTest, testing::ValuesIn(android::hardware::getAllHalInstanceNames(ITvInput::descriptor)), android::hardware::PrintInstanceNameToString);