Commit bde05e53 authored by James Hollyer's avatar James Hollyer Committed by Commit Bot

[bluetooth] Enable discovery filter merge tests under LSAN

We had turned it off because the tests were leaking memory.  They are
not leaking anymore so I am turning them back on.

Bug: 969160
Change-Id: I9b61f4f4f71010778e95b54a18881147c9eaf777
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1900435
Commit-Queue: James Hollyer <jameshollyer@chromium.org>
Reviewed-by: default avatarReilly Grant <reillyg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714641}
parent b6039241
...@@ -47,24 +47,6 @@ ...@@ -47,24 +47,6 @@
#include "device/bluetooth/test/bluetooth_test_fuchsia.h" #include "device/bluetooth/test/bluetooth_test_fuchsia.h"
#endif #endif
// TODO(crbug.com/969160): Fix memory leaks in tests and re-enable on LSAN.
#ifdef LEAK_SANITIZER
#define MAYBE_GetMergedDiscoveryFilterTransport \
DISABLED_GetMergedDiscoveryFilterTransport
#define MAYBE_GetMergedDiscoveryFilterRegular \
DISABLED_GetMergedDiscoveryFilterRegular
#define MAYBE_GetMergedDiscoveryFilterRssi DISABLED_GetMergedDiscoveryFilterRssi
#define MAYBE_GetMergedDiscoveryFilterAllFields \
DISABLED_GetMergedDiscoveryFilterAllFields
#else
#define MAYBE_GetMergedDiscoveryFilterTransport \
GetMergedDiscoveryFilterTransport
#define MAYBE_GetMergedDiscoveryFilterRegular GetMergedDiscoveryFilterRegular
#define MAYBE_GetMergedDiscoveryFilterRssi GetMergedDiscoveryFilterRssi
#define MAYBE_GetMergedDiscoveryFilterAllFields \
GetMergedDiscoveryFilterAllFields
#endif
using device::BluetoothDevice; using device::BluetoothDevice;
namespace device { namespace device {
...@@ -205,14 +187,6 @@ class TestBluetoothAdapter : public BluetoothAdapter { ...@@ -205,14 +187,6 @@ class TestBluetoothAdapter : public BluetoothAdapter {
std::swap(discovery_sessions_holder_, empty_queue); std::swap(discovery_sessions_holder_, empty_queue);
} }
void InjectFilteredSession(
std::unique_ptr<device::BluetoothDiscoveryFilter> discovery_filter) {
StartDiscoverySessionWithFilter(
std::move(discovery_filter),
base::Bind(&TestBluetoothAdapter::TestOnStartDiscoverySession, this),
base::Bind(&TestBluetoothAdapter::TestErrorCallback, this));
}
void QueueStartRequests(base::Closure run_loop_quit, int num_requests) { void QueueStartRequests(base::Closure run_loop_quit, int num_requests) {
for (int i = 0; i < num_requests; ++i) { for (int i = 0; i < num_requests; ++i) {
StartDiscoverySession( StartDiscoverySession(
...@@ -242,6 +216,13 @@ class TestBluetoothAdapter : public BluetoothAdapter { ...@@ -242,6 +216,13 @@ class TestBluetoothAdapter : public BluetoothAdapter {
base::DoNothing()); base::DoNothing());
} }
void RunStartSessionWithFilter(
std::unique_ptr<BluetoothDiscoveryFilter> filter) {
base::RunLoop loop;
StartSessionWithFilter(std::move(filter), loop.QuitClosure());
loop.Run();
}
// |discovery_sessions_holder_| is used to hold unique pointers of Discovery // |discovery_sessions_holder_| is used to hold unique pointers of Discovery
// Sessions so that the destructors don't get called and so we can test // Sessions so that the destructors don't get called and so we can test
// removing them // removing them
...@@ -393,8 +374,7 @@ TEST_F(BluetoothAdapterTest, GetMergedDiscoveryFilterEmpty) { ...@@ -393,8 +374,7 @@ TEST_F(BluetoothAdapterTest, GetMergedDiscoveryFilterEmpty) {
EXPECT_TRUE(discovery_filter->IsDefault()); EXPECT_TRUE(discovery_filter->IsDefault());
} }
TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterRegular) { TEST_F(BluetoothAdapterTest, GetMergedDiscoveryFilterRegular) {
scoped_refptr<TestBluetoothAdapter> adapter = new TestBluetoothAdapter();
std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter; std::unique_ptr<BluetoothDiscoveryFilter> discovery_filter;
// having one reglar session should result in no filter // having one reglar session should result in no filter
...@@ -533,8 +513,7 @@ TEST_F(BluetoothAdapterTest, ShortCircuitUpdateTest) { ...@@ -533,8 +513,7 @@ TEST_F(BluetoothAdapterTest, ShortCircuitUpdateTest) {
adapter_->CleanupSessions(); adapter_->CleanupSessions();
} }
TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterRssi) { TEST_F(BluetoothAdapterTest, GetMergedDiscoveryFilterRssi) {
scoped_refptr<TestBluetoothAdapter> adapter = new TestBluetoothAdapter();
int16_t resulting_rssi; int16_t resulting_rssi;
uint16_t resulting_pathloss; uint16_t resulting_pathloss;
std::unique_ptr<BluetoothDiscoveryFilter> resulting_filter; std::unique_ptr<BluetoothDiscoveryFilter> resulting_filter;
...@@ -548,14 +527,13 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterRssi) { ...@@ -548,14 +527,13 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterRssi) {
discovery_filter2->SetRSSI(-65); discovery_filter2->SetRSSI(-65);
// Make sure adapter has one session without filtering. // Make sure adapter has one session without filtering.
adapter_->InjectFilteredSession(std::move(discovery_filter)); adapter_->RunStartSessionWithFilter(std::move(discovery_filter));
// DO_NOTHING should have no impact
resulting_filter = adapter_->GetMergedDiscoveryFilter(); resulting_filter = adapter_->GetMergedDiscoveryFilter();
resulting_filter->GetRSSI(&resulting_rssi); resulting_filter->GetRSSI(&resulting_rssi);
EXPECT_EQ(-30, resulting_rssi); EXPECT_EQ(-30, resulting_rssi);
adapter_->InjectFilteredSession(std::move(discovery_filter2)); adapter_->RunStartSessionWithFilter(std::move(discovery_filter2));
// result of merging two rssi values should be lower one // result of merging two rssi values should be lower one
resulting_filter = adapter_->GetMergedDiscoveryFilter(); resulting_filter = adapter_->GetMergedDiscoveryFilter();
...@@ -569,7 +547,12 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterRssi) { ...@@ -569,7 +547,12 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterRssi) {
// when rssi and pathloss are merged, both should be cleared, because there is // when rssi and pathloss are merged, both should be cleared, because there is
// no way to tell which filter will be more generic // no way to tell which filter will be more generic
adapter_->InjectFilteredSession(std::move(discovery_filter3)); {
base::RunLoop run_loop;
adapter_->StartSessionWithFilter(std::move(discovery_filter3),
run_loop.QuitClosure());
run_loop.Run();
}
resulting_filter = adapter_->GetMergedDiscoveryFilter(); resulting_filter = adapter_->GetMergedDiscoveryFilter();
EXPECT_FALSE(resulting_filter->GetRSSI(&resulting_rssi)); EXPECT_FALSE(resulting_filter->GetRSSI(&resulting_rssi));
EXPECT_FALSE(resulting_filter->GetPathloss(&resulting_pathloss)); EXPECT_FALSE(resulting_filter->GetPathloss(&resulting_pathloss));
...@@ -577,8 +560,7 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterRssi) { ...@@ -577,8 +560,7 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterRssi) {
adapter_->CleanupSessions(); adapter_->CleanupSessions();
} }
TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterTransport) { TEST_F(BluetoothAdapterTest, GetMergedDiscoveryFilterTransport) {
scoped_refptr<TestBluetoothAdapter> adapter = new TestBluetoothAdapter();
std::unique_ptr<BluetoothDiscoveryFilter> resulting_filter; std::unique_ptr<BluetoothDiscoveryFilter> resulting_filter;
auto discovery_filter = auto discovery_filter =
...@@ -587,13 +569,13 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterTransport) { ...@@ -587,13 +569,13 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterTransport) {
auto discovery_filter2 = auto discovery_filter2 =
std::make_unique<BluetoothDiscoveryFilter>(BLUETOOTH_TRANSPORT_LE); std::make_unique<BluetoothDiscoveryFilter>(BLUETOOTH_TRANSPORT_LE);
adapter_->InjectFilteredSession(std::move(discovery_filter)); adapter_->RunStartSessionWithFilter(std::move(discovery_filter));
// Just one filter, make sure transport was properly rewritten // Just one filter, make sure transport was properly rewritten
resulting_filter = adapter_->GetMergedDiscoveryFilter(); resulting_filter = adapter_->GetMergedDiscoveryFilter();
EXPECT_EQ(BLUETOOTH_TRANSPORT_CLASSIC, resulting_filter->GetTransport()); EXPECT_EQ(BLUETOOTH_TRANSPORT_CLASSIC, resulting_filter->GetTransport());
adapter_->InjectFilteredSession(std::move(discovery_filter2)); adapter_->RunStartSessionWithFilter(std::move(discovery_filter2));
// Two filters, should have OR of both transport's // Two filters, should have OR of both transport's
resulting_filter = adapter_->GetMergedDiscoveryFilter(); resulting_filter = adapter_->GetMergedDiscoveryFilter();
...@@ -605,15 +587,14 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterTransport) { ...@@ -605,15 +587,14 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterTransport) {
BluetoothDiscoveryFilter(BLUETOOTH_TRANSPORT_DUAL)); BluetoothDiscoveryFilter(BLUETOOTH_TRANSPORT_DUAL));
// Merging empty filter in should result in empty filter // Merging empty filter in should result in empty filter
adapter_->InjectFilteredSession(std::move(discovery_filter3)); adapter_->RunStartSessionWithFilter(std::move(discovery_filter3));
resulting_filter = adapter_->GetMergedDiscoveryFilter(); resulting_filter = adapter_->GetMergedDiscoveryFilter();
EXPECT_TRUE(resulting_filter->IsDefault()); EXPECT_TRUE(resulting_filter->IsDefault());
adapter_->CleanupSessions(); adapter_->CleanupSessions();
} }
TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterAllFields) { TEST_F(BluetoothAdapterTest, GetMergedDiscoveryFilterAllFields) {
scoped_refptr<TestBluetoothAdapter> adapter = new TestBluetoothAdapter();
int16_t resulting_rssi; int16_t resulting_rssi;
std::set<device::BluetoothUUID> resulting_uuids; std::set<device::BluetoothUUID> resulting_uuids;
...@@ -635,9 +616,10 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterAllFields) { ...@@ -635,9 +616,10 @@ TEST_F(BluetoothAdapterTest, MAYBE_GetMergedDiscoveryFilterAllFields) {
AddDeviceFilterWithUUID(discovery_filter3.get(), BluetoothUUID("1020")); AddDeviceFilterWithUUID(discovery_filter3.get(), BluetoothUUID("1020"));
AddDeviceFilterWithUUID(discovery_filter3.get(), BluetoothUUID("1003")); AddDeviceFilterWithUUID(discovery_filter3.get(), BluetoothUUID("1003"));
adapter_->InjectFilteredSession(std::move(discovery_filter)); adapter_->RunStartSessionWithFilter(std::move(discovery_filter));
adapter_->InjectFilteredSession(std::move(discovery_filter2)); adapter_->RunStartSessionWithFilter(std::move(discovery_filter2));
adapter_->InjectFilteredSession(std::move(discovery_filter3)); adapter_->RunStartSessionWithFilter(std::move(discovery_filter3));
std::unique_ptr<BluetoothDiscoveryFilter> resulting_filter = std::unique_ptr<BluetoothDiscoveryFilter> resulting_filter =
adapter_->GetMergedDiscoveryFilter(); adapter_->GetMergedDiscoveryFilter();
resulting_filter->GetRSSI(&resulting_rssi); resulting_filter->GetRSSI(&resulting_rssi);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment