From: Ajay Panicker Date: Tue, 5 Jan 2016 23:03:19 +0000 (-0800) Subject: net_test_bluetooth: fix inconsistency in set/get name test X-Git-Tag: android-x86-7.1-r1~394^2~70 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=19cd152d2fcf441b069672adbed517ec920f419c;p=android-x86%2Fsystem-bt.git net_test_bluetooth: fix inconsistency in set/get name test Fixed an issue where the set/get name test would fail every so often due to the fact that the old name property would become invalid after the properties array was freed. Bug: 25793348 Change-Id: I4513219da2fb947b3b199f25a61c308b9fced8b6 --- diff --git a/test/suite/adapter/adapter_unittest.cpp b/test/suite/adapter/adapter_unittest.cpp index 14d4de9ec..6199fd482 100644 --- a/test/suite/adapter/adapter_unittest.cpp +++ b/test/suite/adapter/adapter_unittest.cpp @@ -78,12 +78,13 @@ TEST_F(BluetoothTest, AdapterSetGetName) { semaphore_wait(adapter_properties_callback_sem_); EXPECT_GT(GetPropertiesChangedCount(), 0) << "Expected at least one adapter property to change"; - bt_property_t *old_name = GetProperty(BT_PROPERTY_BDNAME); - EXPECT_NE(old_name, nullptr); - if (property_equals(old_name, new_name)) { + bt_property_t *name_property = GetProperty(BT_PROPERTY_BDNAME); + EXPECT_NE(name_property, nullptr); + if (property_equals(name_property, new_name)) { property_free(new_name); new_name = property_new_name("BluetoothTestName2"); } + std::string old_name((const char *)property_as_name(name_property)->name); EXPECT_EQ(bt_interface()->set_adapter_property(new_name), BT_STATUS_SUCCESS); semaphore_wait(adapter_properties_callback_sem_); @@ -97,17 +98,19 @@ TEST_F(BluetoothTest, AdapterSetGetName) { << " does not match test value " << property_as_name(new_name)->name; - EXPECT_EQ(bt_interface()->set_adapter_property(old_name), BT_STATUS_SUCCESS); + bt_property_t *old_name_property = property_new_name(old_name.c_str()); + EXPECT_EQ(bt_interface()->set_adapter_property(old_name_property), BT_STATUS_SUCCESS); semaphore_wait(adapter_properties_callback_sem_); - EXPECT_TRUE(property_equals(GetProperty(BT_PROPERTY_BDNAME), old_name)) + EXPECT_TRUE(property_equals(GetProperty(BT_PROPERTY_BDNAME), old_name_property)) << "Bluetooth name " << property_as_name(GetProperty(BT_PROPERTY_BDNAME))->name - << " does not match original name" << property_as_name(old_name)->name; + << " does not match original name" << old_name; EXPECT_EQ(bt_interface()->disable(), BT_STATUS_SUCCESS); semaphore_wait(adapter_state_changed_callback_sem_); EXPECT_EQ(GetState(), BT_STATE_OFF) << "Adapter did not turn off."; property_free(new_name); + property_free(old_name_property); } TEST_F(BluetoothTest, AdapterStartDiscovery) {