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:
commit
3fc82fd2a8
3 changed files with 47 additions and 0 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in a new issue