mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Merge "VtsHalBluetooth: Add test for double init"
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user