Merge "VtsHalBluetooth: Add test for double init" am: 550c330642

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/2402199

Change-Id: Ief148167c99149fd325086cb8f01cafba2c0293e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot 2023-02-03 18:17:02 +00:00 committed by Automerger Merge Worker
commit 3fc82fd2a8
3 changed files with 47 additions and 0 deletions

View file

@ -35,6 +35,9 @@ interface IBluetoothHci {
/**
* Initialize the Bluetooth interface and set the callbacks.
* Only one client can initialize the interface at a time. When a
* call to initialize fails, the Status parameter of the callback
* will indicate the reason for the failure.
*/
void initialize(in IBluetoothHciCallbacks callback);

View file

@ -39,6 +39,8 @@ interface IBluetoothHciCallbacks {
/**
* Invoked when the Bluetooth controller initialization has been
* completed.
* @param status contains a return code indicating success, or the
* reason the initialization failed.
*/
void initializationComplete(in Status status);

View file

@ -867,6 +867,48 @@ TEST_P(BluetoothAidlTest, SetLeEventMask) {
wait_for_command_complete_event(set_event_mask);
}
// Call initialize twice, second one should fail.
TEST_P(BluetoothAidlTest, CallInitializeTwice) {
class SecondCb
: public aidl::android::hardware::bluetooth::BnBluetoothHciCallbacks {
public:
ndk::ScopedAStatus initializationComplete(Status status) {
EXPECT_EQ(status, Status::ALREADY_INITIALIZED);
init_promise.set_value();
return ScopedAStatus::ok();
};
ndk::ScopedAStatus hciEventReceived(const std::vector<uint8_t>& /*event*/) {
ADD_FAILURE();
return ScopedAStatus::ok();
};
ndk::ScopedAStatus aclDataReceived(const std::vector<uint8_t>& /*data*/) {
ADD_FAILURE();
return ScopedAStatus::ok();
};
ndk::ScopedAStatus scoDataReceived(const std::vector<uint8_t>& /*data*/) {
ADD_FAILURE();
return ScopedAStatus::ok();
};
ndk::ScopedAStatus isoDataReceived(const std::vector<uint8_t>& /*data*/) {
ADD_FAILURE();
return ScopedAStatus::ok();
};
std::promise<void> init_promise;
};
std::shared_ptr<SecondCb> second_cb = ndk::SharedRefBase::make<SecondCb>();
ASSERT_NE(second_cb, nullptr);
auto future = second_cb->init_promise.get_future();
ASSERT_TRUE(hci->initialize(second_cb).isOk());
auto status = future.wait_for(std::chrono::seconds(1));
ASSERT_EQ(status, std::future_status::ready);
}
GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(BluetoothAidlTest);
INSTANTIATE_TEST_SUITE_P(PerInstance, BluetoothAidlTest,
testing::ValuesIn(android::getAidlHalInstanceNames(