Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1234)

Unified Diff: google_apis/gcm/engine/gcm_store_impl_unittest.cc

Issue 147193003: [GCM] Fix memory leaks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix windows Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « google_apis/gcm/engine/gcm_store_impl.cc ('k') | google_apis/gcm/engine/mcs_client.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: google_apis/gcm/engine/gcm_store_impl_unittest.cc
diff --git a/google_apis/gcm/engine/gcm_store_impl_unittest.cc b/google_apis/gcm/engine/gcm_store_impl_unittest.cc
index d504082bd99a9933a82ad061b72e4eda1290c41f..4beb0ae2501ccce6c5208af63a1ce840516daa12 100644
--- a/google_apis/gcm/engine/gcm_store_impl_unittest.cc
+++ b/google_apis/gcm/engine/gcm_store_impl_unittest.cc
@@ -49,8 +49,8 @@ class GCMStoreImplTest : public testing::Test {
void PumpLoop();
- void LoadCallback(GCMStore::LoadResult* result_dst,
- const GCMStore::LoadResult& result);
+ void LoadCallback(scoped_ptr<GCMStore::LoadResult>* result_dst,
+ scoped_ptr<GCMStore::LoadResult> result);
void UpdateCallback(bool success);
protected:
@@ -81,10 +81,11 @@ std::string GCMStoreImplTest::GetNextPersistentId() {
void GCMStoreImplTest::PumpLoop() { message_loop_.RunUntilIdle(); }
-void GCMStoreImplTest::LoadCallback(GCMStore::LoadResult* result_dst,
- const GCMStore::LoadResult& result) {
- ASSERT_TRUE(result.success);
- *result_dst = result;
+void GCMStoreImplTest::LoadCallback(
+ scoped_ptr<GCMStore::LoadResult>* result_dst,
+ scoped_ptr<GCMStore::LoadResult> result) {
+ ASSERT_TRUE(result->success);
+ *result_dst = result.Pass();
run_loop_->Quit();
run_loop_.reset(new base::RunLoop());
}
@@ -96,22 +97,22 @@ void GCMStoreImplTest::UpdateCallback(bool success) {
// Verify creating a new database and loading it.
TEST_F(GCMStoreImplTest, LoadNew) {
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- EXPECT_EQ(0U, load_result.device_android_id);
- EXPECT_EQ(0U, load_result.device_security_token);
- EXPECT_TRUE(load_result.incoming_messages.empty());
- EXPECT_TRUE(load_result.outgoing_messages.empty());
- EXPECT_EQ(1LL, load_result.serial_number_mappings.next_serial_number);
- EXPECT_TRUE(load_result.serial_number_mappings.user_serial_numbers.empty());
+ EXPECT_EQ(0U, load_result->device_android_id);
+ EXPECT_EQ(0U, load_result->device_security_token);
+ EXPECT_TRUE(load_result->incoming_messages.empty());
+ EXPECT_TRUE(load_result->outgoing_messages.empty());
+ EXPECT_EQ(1LL, load_result->serial_number_mappings.next_serial_number);
+ EXPECT_TRUE(load_result->serial_number_mappings.user_serial_numbers.empty());
}
TEST_F(GCMStoreImplTest, DeviceCredentials) {
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
@@ -127,15 +128,15 @@ TEST_F(GCMStoreImplTest, DeviceCredentials) {
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- ASSERT_EQ(kDeviceId, load_result.device_android_id);
- ASSERT_EQ(kDeviceToken, load_result.device_security_token);
+ ASSERT_EQ(kDeviceId, load_result->device_android_id);
+ ASSERT_EQ(kDeviceToken, load_result->device_security_token);
}
// Verify saving some incoming messages, reopening the directory, and then
// removing those incoming messages.
TEST_F(GCMStoreImplTest, IncomingMessages) {
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
@@ -154,8 +155,8 @@ TEST_F(GCMStoreImplTest, IncomingMessages) {
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- ASSERT_EQ(persistent_ids, load_result.incoming_messages);
- ASSERT_TRUE(load_result.outgoing_messages.empty());
+ ASSERT_EQ(persistent_ids, load_result->incoming_messages);
+ ASSERT_TRUE(load_result->outgoing_messages.empty());
gcm_store->RemoveIncomingMessages(
persistent_ids,
@@ -163,26 +164,20 @@ TEST_F(GCMStoreImplTest, IncomingMessages) {
PumpLoop();
gcm_store = BuildGCMStore().Pass();
- load_result.incoming_messages.clear();
+ load_result->incoming_messages.clear();
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
+ ASSERT_TRUE(load_result->incoming_messages.empty());
+ ASSERT_TRUE(load_result->outgoing_messages.empty());
}
// Verify saving some outgoing messages, reopening the directory, and then
// removing those outgoing messages.
-// Fails on linux_asan crbug.com/337560
-#if !defined(OS_POSIX)
-#define MAYBE_OutgoingMessages OutgoingMessages
-#else
-#define MAYBE_OutgoingMessages DISABLED_OutgoingMessages
-#endif
-TEST_F(GCMStoreImplTest, MAYBE_OutgoingMessages) {
+TEST_F(GCMStoreImplTest, OutgoingMessages) {
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
@@ -206,14 +201,14 @@ TEST_F(GCMStoreImplTest, MAYBE_OutgoingMessages) {
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_EQ(load_result.outgoing_messages.size(), persistent_ids.size());
+ ASSERT_TRUE(load_result->incoming_messages.empty());
+ ASSERT_EQ(load_result->outgoing_messages.size(), persistent_ids.size());
for (int i = 0; i < kNumPersistentIds; ++i) {
std::string id = persistent_ids[i];
- ASSERT_TRUE(load_result.outgoing_messages[id]);
+ ASSERT_TRUE(load_result->outgoing_messages[id].get());
const mcs_proto::DataMessageStanza* message =
reinterpret_cast<mcs_proto::DataMessageStanza*>(
- load_result.outgoing_messages[id]);
+ load_result->outgoing_messages[id].get());
ASSERT_EQ(message->from(), kAppName + id);
ASSERT_EQ(message->category(), kCategoryName + id);
}
@@ -224,25 +219,19 @@ TEST_F(GCMStoreImplTest, MAYBE_OutgoingMessages) {
PumpLoop();
gcm_store = BuildGCMStore().Pass();
- load_result.outgoing_messages.clear();
+ load_result->outgoing_messages.clear();
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
+ ASSERT_TRUE(load_result->incoming_messages.empty());
+ ASSERT_TRUE(load_result->outgoing_messages.empty());
}
// Verify incoming and outgoing messages don't conflict.
-// Fails on linux_asan crbug.com/337560
-#if !defined(OS_POSIX)
-#define MAYBE_IncomingAndOutgoingMessages IncomingAndOutgoingMessages
-#else
-#define MAYBE_IncomingAndOutgoingMessages DISABLED_IncomingAndOutgoingMessages
-#endif
-TEST_F(GCMStoreImplTest, MAYBE_IncomingAndOutgoingMessages) {
+TEST_F(GCMStoreImplTest, IncomingAndOutgoingMessages) {
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
@@ -271,14 +260,14 @@ TEST_F(GCMStoreImplTest, MAYBE_IncomingAndOutgoingMessages) {
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- ASSERT_EQ(persistent_ids, load_result.incoming_messages);
- ASSERT_EQ(load_result.outgoing_messages.size(), persistent_ids.size());
+ ASSERT_EQ(persistent_ids, load_result->incoming_messages);
+ ASSERT_EQ(load_result->outgoing_messages.size(), persistent_ids.size());
for (int i = 0; i < kNumPersistentIds; ++i) {
std::string id = persistent_ids[i];
- ASSERT_TRUE(load_result.outgoing_messages[id]);
+ ASSERT_TRUE(load_result->outgoing_messages[id].get());
const mcs_proto::DataMessageStanza* message =
reinterpret_cast<mcs_proto::DataMessageStanza*>(
- load_result.outgoing_messages[id]);
+ load_result->outgoing_messages[id].get());
ASSERT_EQ(message->from(), kAppName + id);
ASSERT_EQ(message->category(), kCategoryName + id);
}
@@ -293,21 +282,21 @@ TEST_F(GCMStoreImplTest, MAYBE_IncomingAndOutgoingMessages) {
PumpLoop();
gcm_store = BuildGCMStore().Pass();
- load_result.incoming_messages.clear();
- load_result.outgoing_messages.clear();
+ load_result->incoming_messages.clear();
+ load_result->outgoing_messages.clear();
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
+ ASSERT_TRUE(load_result->incoming_messages.empty());
+ ASSERT_TRUE(load_result->outgoing_messages.empty());
}
// Verify that the next serial number of persisted properly.
TEST_F(GCMStoreImplTest, NextSerialNumber) {
const int64 kNextSerialNumber = 77LL;
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
@@ -323,13 +312,13 @@ TEST_F(GCMStoreImplTest, NextSerialNumber) {
PumpLoop();
EXPECT_EQ(kNextSerialNumber,
- load_result.serial_number_mappings.next_serial_number);
+ load_result->serial_number_mappings.next_serial_number);
}
// Verify that user serial number mappings are persisted properly.
TEST_F(GCMStoreImplTest, UserSerialNumberMappings) {
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
@@ -354,30 +343,24 @@ TEST_F(GCMStoreImplTest, UserSerialNumberMappings) {
&GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
PumpLoop();
- ASSERT_EQ(2u, load_result.serial_number_mappings.user_serial_numbers.size());
+ ASSERT_EQ(2u, load_result->serial_number_mappings.user_serial_numbers.size());
ASSERT_NE(
- load_result.serial_number_mappings.user_serial_numbers.end(),
- load_result.serial_number_mappings.user_serial_numbers.find(username1));
+ load_result->serial_number_mappings.user_serial_numbers.end(),
+ load_result->serial_number_mappings.user_serial_numbers.find(username1));
EXPECT_EQ(serial_number1,
- load_result.serial_number_mappings.user_serial_numbers[username1]);
+ load_result->serial_number_mappings.user_serial_numbers[username1]);
ASSERT_NE(
- load_result.serial_number_mappings.user_serial_numbers.end(),
- load_result.serial_number_mappings.user_serial_numbers.find(username2));
+ load_result->serial_number_mappings.user_serial_numbers.end(),
+ load_result->serial_number_mappings.user_serial_numbers.find(username2));
EXPECT_EQ(serial_number2,
- load_result.serial_number_mappings.user_serial_numbers[username2]);
+ load_result->serial_number_mappings.user_serial_numbers[username2]);
}
// Test that per-app message limits are enforced, persisted across restarts,
// and updated as messages are removed.
-// Fails on linux_asan crbug.com/337560
-#if !defined(OS_POSIX)
-#define MAYBE_PerAppMessageLimits PerAppMessageLimits
-#else
-#define MAYBE_PerAppMessageLimits DISABLED_PerAppMessageLimits
-#endif
-TEST_F(GCMStoreImplTest, MAYBE_PerAppMessageLimits) {
+TEST_F(GCMStoreImplTest, PerAppMessageLimits) {
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback,
base::Unretained(this),
&load_result));
@@ -456,7 +439,7 @@ TEST_F(GCMStoreImplTest, MAYBE_PerAppMessageLimits) {
// result in decrementing the counts.
TEST_F(GCMStoreImplTest, AddMessageAfterDestroy) {
scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
- GCMStore::LoadResult load_result;
+ scoped_ptr<GCMStore::LoadResult> load_result;
gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback,
base::Unretained(this),
&load_result));
« no previous file with comments | « google_apis/gcm/engine/gcm_store_impl.cc ('k') | google_apis/gcm/engine/mcs_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698