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

Side by Side Diff: google_apis/gcm/engine/gcm_store_impl_unittest.cc

Issue 1873663002: Convert //google_apis from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "google_apis/gcm/engine/gcm_store_impl.h" 5 #include "google_apis/gcm/engine/gcm_store_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8
9 #include <memory>
8 #include <string> 10 #include <string>
9 #include <utility> 11 #include <utility>
10 #include <vector> 12 #include <vector>
11 13
12 #include "base/bind.h" 14 #include "base/bind.h"
13 #include "base/command_line.h" 15 #include "base/command_line.h"
14 #include "base/files/file_path.h" 16 #include "base/files/file_path.h"
15 #include "base/files/scoped_temp_dir.h" 17 #include "base/files/scoped_temp_dir.h"
16 #include "base/memory/scoped_ptr.h" 18 #include "base/memory/ptr_util.h"
17 #include "base/strings/string_number_conversions.h" 19 #include "base/strings/string_number_conversions.h"
18 #include "base/test/test_simple_task_runner.h" 20 #include "base/test/test_simple_task_runner.h"
19 #include "base/thread_task_runner_handle.h" 21 #include "base/thread_task_runner_handle.h"
20 #include "google_apis/gcm/base/fake_encryptor.h" 22 #include "google_apis/gcm/base/fake_encryptor.h"
21 #include "google_apis/gcm/base/mcs_message.h" 23 #include "google_apis/gcm/base/mcs_message.h"
22 #include "google_apis/gcm/base/mcs_util.h" 24 #include "google_apis/gcm/base/mcs_util.h"
23 #include "google_apis/gcm/protocol/mcs.pb.h" 25 #include "google_apis/gcm/protocol/mcs.pb.h"
24 #include "testing/gtest/include/gtest/gtest.h" 26 #include "testing/gtest/include/gtest/gtest.h"
25 27
26 namespace gcm { 28 namespace gcm {
(...skipping 14 matching lines...) Expand all
41 const char kCategoryName[] = "my_category"; 43 const char kCategoryName[] = "my_category";
42 44
43 const uint64_t kDeviceId = 22; 45 const uint64_t kDeviceId = 22;
44 const uint64_t kDeviceToken = 55; 46 const uint64_t kDeviceToken = 55;
45 47
46 class GCMStoreImplTest : public testing::Test { 48 class GCMStoreImplTest : public testing::Test {
47 public: 49 public:
48 GCMStoreImplTest(); 50 GCMStoreImplTest();
49 ~GCMStoreImplTest() override; 51 ~GCMStoreImplTest() override;
50 52
51 scoped_ptr<GCMStoreImpl> BuildGCMStore(); 53 std::unique_ptr<GCMStoreImpl> BuildGCMStore();
52 void LoadGCMStore( 54 void LoadGCMStore(GCMStoreImpl* gcm_store,
53 GCMStoreImpl* gcm_store, scoped_ptr<GCMStore::LoadResult>* result_dst); 55 std::unique_ptr<GCMStore::LoadResult>* result_dst);
54 56
55 std::string GetNextPersistentId(); 57 std::string GetNextPersistentId();
56 58
57 void PumpLoop(); 59 void PumpLoop();
58 60
59 void LoadCallback(scoped_ptr<GCMStore::LoadResult>* result_dst, 61 void LoadCallback(std::unique_ptr<GCMStore::LoadResult>* result_dst,
60 scoped_ptr<GCMStore::LoadResult> result); 62 std::unique_ptr<GCMStore::LoadResult> result);
61 void LoadWithoutCheckCallback(scoped_ptr<GCMStore::LoadResult>* result_dst, 63 void LoadWithoutCheckCallback(
62 scoped_ptr<GCMStore::LoadResult> result); 64 std::unique_ptr<GCMStore::LoadResult>* result_dst,
65 std::unique_ptr<GCMStore::LoadResult> result);
63 void UpdateCallback(bool success); 66 void UpdateCallback(bool success);
64 67
65 protected: 68 protected:
66 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 69 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
67 base::ThreadTaskRunnerHandle task_runner_handle_; 70 base::ThreadTaskRunnerHandle task_runner_handle_;
68 base::ScopedTempDir temp_directory_; 71 base::ScopedTempDir temp_directory_;
69 bool expected_success_; 72 bool expected_success_;
70 uint64_t next_persistent_id_; 73 uint64_t next_persistent_id_;
71 }; 74 };
72 75
73 GCMStoreImplTest::GCMStoreImplTest() 76 GCMStoreImplTest::GCMStoreImplTest()
74 : task_runner_(new base::TestSimpleTaskRunner()), 77 : task_runner_(new base::TestSimpleTaskRunner()),
75 task_runner_handle_(task_runner_), 78 task_runner_handle_(task_runner_),
76 expected_success_(true), 79 expected_success_(true),
77 next_persistent_id_(base::Time::Now().ToInternalValue()) { 80 next_persistent_id_(base::Time::Now().ToInternalValue()) {
78 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); 81 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir());
79 } 82 }
80 83
81 GCMStoreImplTest::~GCMStoreImplTest() {} 84 GCMStoreImplTest::~GCMStoreImplTest() {}
82 85
83 scoped_ptr<GCMStoreImpl> GCMStoreImplTest::BuildGCMStore() { 86 std::unique_ptr<GCMStoreImpl> GCMStoreImplTest::BuildGCMStore() {
84 return scoped_ptr<GCMStoreImpl>(new GCMStoreImpl( 87 return std::unique_ptr<GCMStoreImpl>(new GCMStoreImpl(
85 // Pass an non-existent directory as store path to match the exact 88 // Pass an non-existent directory as store path to match the exact
86 // behavior in the production code. Currently GCMStoreImpl checks if 89 // behavior in the production code. Currently GCMStoreImpl checks if
87 // the directory exist or not to determine the store existence. 90 // the directory exist or not to determine the store existence.
88 temp_directory_.path().Append(FILE_PATH_LITERAL("GCM Store")), 91 temp_directory_.path().Append(FILE_PATH_LITERAL("GCM Store")),
89 task_runner_, 92 task_runner_, base::WrapUnique<Encryptor>(new FakeEncryptor)));
90 make_scoped_ptr<Encryptor>(new FakeEncryptor)));
91 } 93 }
92 94
93 void GCMStoreImplTest::LoadGCMStore( 95 void GCMStoreImplTest::LoadGCMStore(
94 GCMStoreImpl* gcm_store, scoped_ptr<GCMStore::LoadResult>* result_dst) { 96 GCMStoreImpl* gcm_store,
97 std::unique_ptr<GCMStore::LoadResult>* result_dst) {
95 gcm_store->Load( 98 gcm_store->Load(
96 GCMStore::CREATE_IF_MISSING, 99 GCMStore::CREATE_IF_MISSING,
97 base::Bind(&GCMStoreImplTest::LoadCallback, 100 base::Bind(&GCMStoreImplTest::LoadCallback,
98 base::Unretained(this), 101 base::Unretained(this),
99 result_dst)); 102 result_dst));
100 PumpLoop(); 103 PumpLoop();
101 } 104 }
102 105
103 std::string GCMStoreImplTest::GetNextPersistentId() { 106 std::string GCMStoreImplTest::GetNextPersistentId() {
104 return base::Uint64ToString(next_persistent_id_++); 107 return base::Uint64ToString(next_persistent_id_++);
105 } 108 }
106 109
107 void GCMStoreImplTest::PumpLoop() { task_runner_->RunUntilIdle(); } 110 void GCMStoreImplTest::PumpLoop() { task_runner_->RunUntilIdle(); }
108 111
109 void GCMStoreImplTest::LoadCallback( 112 void GCMStoreImplTest::LoadCallback(
110 scoped_ptr<GCMStore::LoadResult>* result_dst, 113 std::unique_ptr<GCMStore::LoadResult>* result_dst,
111 scoped_ptr<GCMStore::LoadResult> result) { 114 std::unique_ptr<GCMStore::LoadResult> result) {
112 ASSERT_TRUE(result->success); 115 ASSERT_TRUE(result->success);
113 LoadWithoutCheckCallback(result_dst, std::move(result)); 116 LoadWithoutCheckCallback(result_dst, std::move(result));
114 } 117 }
115 118
116 void GCMStoreImplTest::LoadWithoutCheckCallback( 119 void GCMStoreImplTest::LoadWithoutCheckCallback(
117 scoped_ptr<GCMStore::LoadResult>* result_dst, 120 std::unique_ptr<GCMStore::LoadResult>* result_dst,
118 scoped_ptr<GCMStore::LoadResult> result) { 121 std::unique_ptr<GCMStore::LoadResult> result) {
119 *result_dst = std::move(result); 122 *result_dst = std::move(result);
120 } 123 }
121 124
122 void GCMStoreImplTest::UpdateCallback(bool success) { 125 void GCMStoreImplTest::UpdateCallback(bool success) {
123 ASSERT_EQ(expected_success_, success); 126 ASSERT_EQ(expected_success_, success);
124 } 127 }
125 128
126 // Verify creating a new database and loading it. 129 // Verify creating a new database and loading it.
127 TEST_F(GCMStoreImplTest, LoadNew) { 130 TEST_F(GCMStoreImplTest, LoadNew) {
128 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 131 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
129 scoped_ptr<GCMStore::LoadResult> load_result; 132 std::unique_ptr<GCMStore::LoadResult> load_result;
130 LoadGCMStore(gcm_store.get(), &load_result); 133 LoadGCMStore(gcm_store.get(), &load_result);
131 134
132 EXPECT_EQ(0U, load_result->device_android_id); 135 EXPECT_EQ(0U, load_result->device_android_id);
133 EXPECT_EQ(0U, load_result->device_security_token); 136 EXPECT_EQ(0U, load_result->device_security_token);
134 EXPECT_TRUE(load_result->incoming_messages.empty()); 137 EXPECT_TRUE(load_result->incoming_messages.empty());
135 EXPECT_TRUE(load_result->outgoing_messages.empty()); 138 EXPECT_TRUE(load_result->outgoing_messages.empty());
136 EXPECT_TRUE(load_result->gservices_settings.empty()); 139 EXPECT_TRUE(load_result->gservices_settings.empty());
137 EXPECT_EQ(base::Time::FromInternalValue(0LL), load_result->last_checkin_time); 140 EXPECT_EQ(base::Time::FromInternalValue(0LL), load_result->last_checkin_time);
138 } 141 }
139 142
140 // Verify new database is not created when DO_NOT_CREATE_NEW_STORE is passed. 143 // Verify new database is not created when DO_NOT_CREATE_NEW_STORE is passed.
141 TEST_F(GCMStoreImplTest, LoadWithoutCreatingNewStore) { 144 TEST_F(GCMStoreImplTest, LoadWithoutCreatingNewStore) {
142 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 145 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
143 scoped_ptr<GCMStore::LoadResult> load_result; 146 std::unique_ptr<GCMStore::LoadResult> load_result;
144 gcm_store->Load( 147 gcm_store->Load(
145 GCMStore::DO_NOT_CREATE, 148 GCMStore::DO_NOT_CREATE,
146 base::Bind(&GCMStoreImplTest::LoadWithoutCheckCallback, 149 base::Bind(&GCMStoreImplTest::LoadWithoutCheckCallback,
147 base::Unretained(this), 150 base::Unretained(this),
148 &load_result)); 151 &load_result));
149 PumpLoop(); 152 PumpLoop();
150 153
151 EXPECT_FALSE(load_result->success); 154 EXPECT_FALSE(load_result->success);
152 EXPECT_TRUE(load_result->store_does_not_exist); 155 EXPECT_TRUE(load_result->store_does_not_exist);
153 } 156 }
154 157
155 TEST_F(GCMStoreImplTest, DeviceCredentials) { 158 TEST_F(GCMStoreImplTest, DeviceCredentials) {
156 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 159 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
157 scoped_ptr<GCMStore::LoadResult> load_result; 160 std::unique_ptr<GCMStore::LoadResult> load_result;
158 LoadGCMStore(gcm_store.get(), &load_result); 161 LoadGCMStore(gcm_store.get(), &load_result);
159 162
160 gcm_store->SetDeviceCredentials( 163 gcm_store->SetDeviceCredentials(
161 kDeviceId, 164 kDeviceId,
162 kDeviceToken, 165 kDeviceToken,
163 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 166 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
164 PumpLoop(); 167 PumpLoop();
165 168
166 gcm_store = BuildGCMStore(); 169 gcm_store = BuildGCMStore();
167 LoadGCMStore(gcm_store.get(), &load_result); 170 LoadGCMStore(gcm_store.get(), &load_result);
168 171
169 ASSERT_EQ(kDeviceId, load_result->device_android_id); 172 ASSERT_EQ(kDeviceId, load_result->device_android_id);
170 ASSERT_EQ(kDeviceToken, load_result->device_security_token); 173 ASSERT_EQ(kDeviceToken, load_result->device_security_token);
171 } 174 }
172 175
173 TEST_F(GCMStoreImplTest, LastCheckinInfo) { 176 TEST_F(GCMStoreImplTest, LastCheckinInfo) {
174 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 177 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
175 scoped_ptr<GCMStore::LoadResult> load_result; 178 std::unique_ptr<GCMStore::LoadResult> load_result;
176 LoadGCMStore(gcm_store.get(), &load_result); 179 LoadGCMStore(gcm_store.get(), &load_result);
177 180
178 base::Time last_checkin_time = base::Time::Now(); 181 base::Time last_checkin_time = base::Time::Now();
179 std::set<std::string> accounts; 182 std::set<std::string> accounts;
180 accounts.insert("test_user1@gmail.com"); 183 accounts.insert("test_user1@gmail.com");
181 accounts.insert("test_user2@gmail.com"); 184 accounts.insert("test_user2@gmail.com");
182 185
183 gcm_store->SetLastCheckinInfo( 186 gcm_store->SetLastCheckinInfo(
184 last_checkin_time, 187 last_checkin_time,
185 accounts, 188 accounts,
(...skipping 11 matching lines...) Expand all
197 "gibberish", 200 "gibberish",
198 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 201 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
199 PumpLoop(); 202 PumpLoop();
200 203
201 gcm_store = BuildGCMStore(); 204 gcm_store = BuildGCMStore();
202 LoadGCMStore(gcm_store.get(), &load_result); 205 LoadGCMStore(gcm_store.get(), &load_result);
203 EXPECT_EQ(base::Time(), load_result->last_checkin_time); 206 EXPECT_EQ(base::Time(), load_result->last_checkin_time);
204 } 207 }
205 208
206 TEST_F(GCMStoreImplTest, GServicesSettings_ProtocolV2) { 209 TEST_F(GCMStoreImplTest, GServicesSettings_ProtocolV2) {
207 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 210 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
208 scoped_ptr<GCMStore::LoadResult> load_result; 211 std::unique_ptr<GCMStore::LoadResult> load_result;
209 LoadGCMStore(gcm_store.get(), &load_result); 212 LoadGCMStore(gcm_store.get(), &load_result);
210 213
211 std::map<std::string, std::string> settings; 214 std::map<std::string, std::string> settings;
212 settings["checkin_interval"] = "12345"; 215 settings["checkin_interval"] = "12345";
213 settings["mcs_port"] = "438"; 216 settings["mcs_port"] = "438";
214 settings["checkin_url"] = "http://checkin.google.com"; 217 settings["checkin_url"] = "http://checkin.google.com";
215 std::string digest = "digest1"; 218 std::string digest = "digest1";
216 219
217 gcm_store->SetGServicesSettings( 220 gcm_store->SetGServicesSettings(
218 settings, 221 settings,
(...skipping 20 matching lines...) Expand all
239 PumpLoop(); 242 PumpLoop();
240 243
241 gcm_store = BuildGCMStore(); 244 gcm_store = BuildGCMStore();
242 LoadGCMStore(gcm_store.get(), &load_result); 245 LoadGCMStore(gcm_store.get(), &load_result);
243 246
244 ASSERT_EQ(settings, load_result->gservices_settings); 247 ASSERT_EQ(settings, load_result->gservices_settings);
245 ASSERT_EQ(digest, load_result->gservices_digest); 248 ASSERT_EQ(digest, load_result->gservices_digest);
246 } 249 }
247 250
248 TEST_F(GCMStoreImplTest, Registrations) { 251 TEST_F(GCMStoreImplTest, Registrations) {
249 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 252 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
250 scoped_ptr<GCMStore::LoadResult> load_result; 253 std::unique_ptr<GCMStore::LoadResult> load_result;
251 LoadGCMStore(gcm_store.get(), &load_result); 254 LoadGCMStore(gcm_store.get(), &load_result);
252 255
253 // Add one registration with one sender. 256 // Add one registration with one sender.
254 std::string registration = "sender1=registration1"; 257 std::string registration = "sender1=registration1";
255 gcm_store->AddRegistration( 258 gcm_store->AddRegistration(
256 kAppName, 259 kAppName,
257 registration, 260 registration,
258 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 261 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
259 PumpLoop(); 262 PumpLoop();
260 263
(...skipping 26 matching lines...) Expand all
287 290
288 ASSERT_EQ(1u, load_result->registrations.size()); 291 ASSERT_EQ(1u, load_result->registrations.size());
289 ASSERT_TRUE(load_result->registrations.find(kAppName) != 292 ASSERT_TRUE(load_result->registrations.find(kAppName) !=
290 load_result->registrations.end()); 293 load_result->registrations.end());
291 EXPECT_EQ(registration, load_result->registrations[kAppName]); 294 EXPECT_EQ(registration, load_result->registrations[kAppName]);
292 } 295 }
293 296
294 // Verify saving some incoming messages, reopening the directory, and then 297 // Verify saving some incoming messages, reopening the directory, and then
295 // removing those incoming messages. 298 // removing those incoming messages.
296 TEST_F(GCMStoreImplTest, IncomingMessages) { 299 TEST_F(GCMStoreImplTest, IncomingMessages) {
297 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 300 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
298 scoped_ptr<GCMStore::LoadResult> load_result; 301 std::unique_ptr<GCMStore::LoadResult> load_result;
299 LoadGCMStore(gcm_store.get(), &load_result); 302 LoadGCMStore(gcm_store.get(), &load_result);
300 303
301 std::vector<std::string> persistent_ids; 304 std::vector<std::string> persistent_ids;
302 for (int i = 0; i < kNumPersistentIds; ++i) { 305 for (int i = 0; i < kNumPersistentIds; ++i) {
303 persistent_ids.push_back(GetNextPersistentId()); 306 persistent_ids.push_back(GetNextPersistentId());
304 gcm_store->AddIncomingMessage( 307 gcm_store->AddIncomingMessage(
305 persistent_ids.back(), 308 persistent_ids.back(),
306 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 309 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
307 PumpLoop(); 310 PumpLoop();
308 } 311 }
(...skipping 13 matching lines...) Expand all
322 load_result->incoming_messages.clear(); 325 load_result->incoming_messages.clear();
323 LoadGCMStore(gcm_store.get(), &load_result); 326 LoadGCMStore(gcm_store.get(), &load_result);
324 327
325 ASSERT_TRUE(load_result->incoming_messages.empty()); 328 ASSERT_TRUE(load_result->incoming_messages.empty());
326 ASSERT_TRUE(load_result->outgoing_messages.empty()); 329 ASSERT_TRUE(load_result->outgoing_messages.empty());
327 } 330 }
328 331
329 // Verify saving some outgoing messages, reopening the directory, and then 332 // Verify saving some outgoing messages, reopening the directory, and then
330 // removing those outgoing messages. 333 // removing those outgoing messages.
331 TEST_F(GCMStoreImplTest, OutgoingMessages) { 334 TEST_F(GCMStoreImplTest, OutgoingMessages) {
332 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 335 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
333 scoped_ptr<GCMStore::LoadResult> load_result; 336 std::unique_ptr<GCMStore::LoadResult> load_result;
334 LoadGCMStore(gcm_store.get(), &load_result); 337 LoadGCMStore(gcm_store.get(), &load_result);
335 338
336 std::vector<std::string> persistent_ids; 339 std::vector<std::string> persistent_ids;
337 const int kNumPersistentIds = 10; 340 const int kNumPersistentIds = 10;
338 for (int i = 0; i < kNumPersistentIds; ++i) { 341 for (int i = 0; i < kNumPersistentIds; ++i) {
339 persistent_ids.push_back(GetNextPersistentId()); 342 persistent_ids.push_back(GetNextPersistentId());
340 mcs_proto::DataMessageStanza message; 343 mcs_proto::DataMessageStanza message;
341 message.set_from(kAppName + persistent_ids.back()); 344 message.set_from(kAppName + persistent_ids.back());
342 message.set_category(kCategoryName + persistent_ids.back()); 345 message.set_category(kCategoryName + persistent_ids.back());
343 gcm_store->AddOutgoingMessage( 346 gcm_store->AddOutgoingMessage(
(...skipping 26 matching lines...) Expand all
370 gcm_store = BuildGCMStore(); 373 gcm_store = BuildGCMStore();
371 load_result->outgoing_messages.clear(); 374 load_result->outgoing_messages.clear();
372 LoadGCMStore(gcm_store.get(), &load_result); 375 LoadGCMStore(gcm_store.get(), &load_result);
373 376
374 ASSERT_TRUE(load_result->incoming_messages.empty()); 377 ASSERT_TRUE(load_result->incoming_messages.empty());
375 ASSERT_TRUE(load_result->outgoing_messages.empty()); 378 ASSERT_TRUE(load_result->outgoing_messages.empty());
376 } 379 }
377 380
378 // Verify incoming and outgoing messages don't conflict. 381 // Verify incoming and outgoing messages don't conflict.
379 TEST_F(GCMStoreImplTest, IncomingAndOutgoingMessages) { 382 TEST_F(GCMStoreImplTest, IncomingAndOutgoingMessages) {
380 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 383 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
381 scoped_ptr<GCMStore::LoadResult> load_result; 384 std::unique_ptr<GCMStore::LoadResult> load_result;
382 LoadGCMStore(gcm_store.get(), &load_result); 385 LoadGCMStore(gcm_store.get(), &load_result);
383 386
384 std::vector<std::string> persistent_ids; 387 std::vector<std::string> persistent_ids;
385 const int kNumPersistentIds = 10; 388 const int kNumPersistentIds = 10;
386 for (int i = 0; i < kNumPersistentIds; ++i) { 389 for (int i = 0; i < kNumPersistentIds; ++i) {
387 persistent_ids.push_back(GetNextPersistentId()); 390 persistent_ids.push_back(GetNextPersistentId());
388 gcm_store->AddIncomingMessage( 391 gcm_store->AddIncomingMessage(
389 persistent_ids.back(), 392 persistent_ids.back(),
390 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 393 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
391 PumpLoop(); 394 PumpLoop();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 load_result->outgoing_messages.clear(); 432 load_result->outgoing_messages.clear();
430 LoadGCMStore(gcm_store.get(), &load_result); 433 LoadGCMStore(gcm_store.get(), &load_result);
431 434
432 ASSERT_TRUE(load_result->incoming_messages.empty()); 435 ASSERT_TRUE(load_result->incoming_messages.empty());
433 ASSERT_TRUE(load_result->outgoing_messages.empty()); 436 ASSERT_TRUE(load_result->outgoing_messages.empty());
434 } 437 }
435 438
436 // Test that per-app message limits are enforced, persisted across restarts, 439 // Test that per-app message limits are enforced, persisted across restarts,
437 // and updated as messages are removed. 440 // and updated as messages are removed.
438 TEST_F(GCMStoreImplTest, PerAppMessageLimits) { 441 TEST_F(GCMStoreImplTest, PerAppMessageLimits) {
439 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 442 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
440 scoped_ptr<GCMStore::LoadResult> load_result; 443 std::unique_ptr<GCMStore::LoadResult> load_result;
441 LoadGCMStore(gcm_store.get(), &load_result); 444 LoadGCMStore(gcm_store.get(), &load_result);
442 445
443 // Add the initial (below app limit) messages. 446 // Add the initial (below app limit) messages.
444 for (int i = 0; i < kNumMessagesPerApp; ++i) { 447 for (int i = 0; i < kNumMessagesPerApp; ++i) {
445 mcs_proto::DataMessageStanza message; 448 mcs_proto::DataMessageStanza message;
446 message.set_from(kAppName); 449 message.set_from(kAppName);
447 message.set_category(kCategoryName); 450 message.set_category(kCategoryName);
448 EXPECT_TRUE(gcm_store->AddOutgoingMessage( 451 EXPECT_TRUE(gcm_store->AddOutgoingMessage(
449 base::IntToString(i), 452 base::IntToString(i),
450 MCSMessage(message), 453 MCSMessage(message),
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 EXPECT_TRUE(gcm_store->AddOutgoingMessage( 503 EXPECT_TRUE(gcm_store->AddOutgoingMessage(
501 base::IntToString(i + kNumMessagesPerApp), 504 base::IntToString(i + kNumMessagesPerApp),
502 MCSMessage(message), 505 MCSMessage(message),
503 base::Bind(&GCMStoreImplTest::UpdateCallback, 506 base::Bind(&GCMStoreImplTest::UpdateCallback,
504 base::Unretained(this)))); 507 base::Unretained(this))));
505 PumpLoop(); 508 PumpLoop();
506 } 509 }
507 } 510 }
508 511
509 TEST_F(GCMStoreImplTest, AccountMapping) { 512 TEST_F(GCMStoreImplTest, AccountMapping) {
510 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 513 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
511 scoped_ptr<GCMStore::LoadResult> load_result; 514 std::unique_ptr<GCMStore::LoadResult> load_result;
512 LoadGCMStore(gcm_store.get(), &load_result); 515 LoadGCMStore(gcm_store.get(), &load_result);
513 516
514 // Add account mappings. 517 // Add account mappings.
515 AccountMapping account_mapping1; 518 AccountMapping account_mapping1;
516 account_mapping1.account_id = "account_id_1"; 519 account_mapping1.account_id = "account_id_1";
517 account_mapping1.email = "account_id_1@gmail.com"; 520 account_mapping1.email = "account_id_1@gmail.com";
518 account_mapping1.access_token = "account_token1"; 521 account_mapping1.access_token = "account_token1";
519 account_mapping1.status = AccountMapping::ADDING; 522 account_mapping1.status = AccountMapping::ADDING;
520 account_mapping1.status_change_timestamp = base::Time(); 523 account_mapping1.status_change_timestamp = base::Time();
521 account_mapping1.last_message_id = "message_1"; 524 account_mapping1.last_message_id = "message_1";
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 EXPECT_EQ(account_mapping2.account_id, iter->account_id); 576 EXPECT_EQ(account_mapping2.account_id, iter->account_id);
574 EXPECT_EQ(account_mapping2.email, iter->email); 577 EXPECT_EQ(account_mapping2.email, iter->email);
575 EXPECT_TRUE(iter->access_token.empty()); 578 EXPECT_TRUE(iter->access_token.empty());
576 EXPECT_EQ(AccountMapping::REMOVING, iter->status); 579 EXPECT_EQ(AccountMapping::REMOVING, iter->status);
577 EXPECT_EQ(account_mapping2.status_change_timestamp, 580 EXPECT_EQ(account_mapping2.status_change_timestamp,
578 iter->status_change_timestamp); 581 iter->status_change_timestamp);
579 EXPECT_EQ(account_mapping2.last_message_id, iter->last_message_id); 582 EXPECT_EQ(account_mapping2.last_message_id, iter->last_message_id);
580 } 583 }
581 584
582 TEST_F(GCMStoreImplTest, HeartbeatInterval) { 585 TEST_F(GCMStoreImplTest, HeartbeatInterval) {
583 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 586 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
584 scoped_ptr<GCMStore::LoadResult> load_result; 587 std::unique_ptr<GCMStore::LoadResult> load_result;
585 LoadGCMStore(gcm_store.get(), &load_result); 588 LoadGCMStore(gcm_store.get(), &load_result);
586 589
587 std::string scope1 = "scope1"; 590 std::string scope1 = "scope1";
588 std::string scope2 = "scope2"; 591 std::string scope2 = "scope2";
589 int heartbeat1 = 120 * 1000; 592 int heartbeat1 = 120 * 1000;
590 int heartbeat2 = 360 * 1000; 593 int heartbeat2 = 360 * 1000;
591 594
592 gcm_store->AddHeartbeatInterval( 595 gcm_store->AddHeartbeatInterval(
593 scope1, 596 scope1,
594 heartbeat1, 597 heartbeat1,
(...skipping 27 matching lines...) Expand all
622 EXPECT_EQ(1UL, load_result->heartbeat_intervals.size()); 625 EXPECT_EQ(1UL, load_result->heartbeat_intervals.size());
623 ASSERT_TRUE(load_result->heartbeat_intervals.find(scope1) != 626 ASSERT_TRUE(load_result->heartbeat_intervals.find(scope1) !=
624 load_result->heartbeat_intervals.end()); 627 load_result->heartbeat_intervals.end());
625 EXPECT_EQ(heartbeat1, load_result->heartbeat_intervals[scope1]); 628 EXPECT_EQ(heartbeat1, load_result->heartbeat_intervals[scope1]);
626 } 629 }
627 630
628 // When the database is destroyed, all database updates should fail. At the 631 // When the database is destroyed, all database updates should fail. At the
629 // same time, they per-app message counts should not go up, as failures should 632 // same time, they per-app message counts should not go up, as failures should
630 // result in decrementing the counts. 633 // result in decrementing the counts.
631 TEST_F(GCMStoreImplTest, AddMessageAfterDestroy) { 634 TEST_F(GCMStoreImplTest, AddMessageAfterDestroy) {
632 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 635 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
633 scoped_ptr<GCMStore::LoadResult> load_result; 636 std::unique_ptr<GCMStore::LoadResult> load_result;
634 LoadGCMStore(gcm_store.get(), &load_result); 637 LoadGCMStore(gcm_store.get(), &load_result);
635 gcm_store->Destroy(base::Bind(&GCMStoreImplTest::UpdateCallback, 638 gcm_store->Destroy(base::Bind(&GCMStoreImplTest::UpdateCallback,
636 base::Unretained(this))); 639 base::Unretained(this)));
637 PumpLoop(); 640 PumpLoop();
638 641
639 expected_success_ = false; 642 expected_success_ = false;
640 for (int i = 0; i < kNumMessagesPerApp * 2; ++i) { 643 for (int i = 0; i < kNumMessagesPerApp * 2; ++i) {
641 mcs_proto::DataMessageStanza message; 644 mcs_proto::DataMessageStanza message;
642 message.set_from(kAppName); 645 message.set_from(kAppName);
643 message.set_category(kCategoryName); 646 message.set_category(kCategoryName);
644 // Because all adds are failing, none should hit the per-app message limits. 647 // Because all adds are failing, none should hit the per-app message limits.
645 EXPECT_TRUE(gcm_store->AddOutgoingMessage( 648 EXPECT_TRUE(gcm_store->AddOutgoingMessage(
646 base::IntToString(i), 649 base::IntToString(i),
647 MCSMessage(message), 650 MCSMessage(message),
648 base::Bind(&GCMStoreImplTest::UpdateCallback, 651 base::Bind(&GCMStoreImplTest::UpdateCallback,
649 base::Unretained(this)))); 652 base::Unretained(this))));
650 PumpLoop(); 653 PumpLoop();
651 } 654 }
652 } 655 }
653 656
654 TEST_F(GCMStoreImplTest, ReloadAfterClose) { 657 TEST_F(GCMStoreImplTest, ReloadAfterClose) {
655 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 658 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
656 scoped_ptr<GCMStore::LoadResult> load_result; 659 std::unique_ptr<GCMStore::LoadResult> load_result;
657 LoadGCMStore(gcm_store.get(), &load_result); 660 LoadGCMStore(gcm_store.get(), &load_result);
658 661
659 gcm_store->Close(); 662 gcm_store->Close();
660 PumpLoop(); 663 PumpLoop();
661 664
662 LoadGCMStore(gcm_store.get(), &load_result); 665 LoadGCMStore(gcm_store.get(), &load_result);
663 } 666 }
664 667
665 TEST_F(GCMStoreImplTest, LastTokenFetchTime) { 668 TEST_F(GCMStoreImplTest, LastTokenFetchTime) {
666 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 669 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
667 scoped_ptr<GCMStore::LoadResult> load_result; 670 std::unique_ptr<GCMStore::LoadResult> load_result;
668 LoadGCMStore(gcm_store.get(), &load_result); 671 LoadGCMStore(gcm_store.get(), &load_result);
669 EXPECT_EQ(base::Time(), load_result->last_token_fetch_time); 672 EXPECT_EQ(base::Time(), load_result->last_token_fetch_time);
670 673
671 base::Time last_token_fetch_time = base::Time::Now(); 674 base::Time last_token_fetch_time = base::Time::Now();
672 gcm_store->SetLastTokenFetchTime( 675 gcm_store->SetLastTokenFetchTime(
673 last_token_fetch_time, 676 last_token_fetch_time,
674 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 677 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
675 PumpLoop(); 678 PumpLoop();
676 679
677 gcm_store = BuildGCMStore(); 680 gcm_store = BuildGCMStore();
678 LoadGCMStore(gcm_store.get(), &load_result); 681 LoadGCMStore(gcm_store.get(), &load_result);
679 EXPECT_EQ(last_token_fetch_time, load_result->last_token_fetch_time); 682 EXPECT_EQ(last_token_fetch_time, load_result->last_token_fetch_time);
680 683
681 // Negative cases, where the value read is gibberish. 684 // Negative cases, where the value read is gibberish.
682 gcm_store->SetValueForTesting( 685 gcm_store->SetValueForTesting(
683 "last_token_fetch_time", 686 "last_token_fetch_time",
684 "gibberish", 687 "gibberish",
685 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 688 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
686 PumpLoop(); 689 PumpLoop();
687 690
688 gcm_store = BuildGCMStore(); 691 gcm_store = BuildGCMStore();
689 LoadGCMStore(gcm_store.get(), &load_result); 692 LoadGCMStore(gcm_store.get(), &load_result);
690 EXPECT_EQ(base::Time(), load_result->last_token_fetch_time); 693 EXPECT_EQ(base::Time(), load_result->last_token_fetch_time);
691 } 694 }
692 695
693 TEST_F(GCMStoreImplTest, InstanceIDData) { 696 TEST_F(GCMStoreImplTest, InstanceIDData) {
694 scoped_ptr<GCMStoreImpl> gcm_store(BuildGCMStore()); 697 std::unique_ptr<GCMStoreImpl> gcm_store(BuildGCMStore());
695 scoped_ptr<GCMStore::LoadResult> load_result; 698 std::unique_ptr<GCMStore::LoadResult> load_result;
696 LoadGCMStore(gcm_store.get(), &load_result); 699 LoadGCMStore(gcm_store.get(), &load_result);
697 700
698 std::string instance_id_data("Foo"); 701 std::string instance_id_data("Foo");
699 gcm_store->AddInstanceIDData( 702 gcm_store->AddInstanceIDData(
700 kAppName, 703 kAppName,
701 instance_id_data, 704 instance_id_data,
702 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 705 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
703 PumpLoop(); 706 PumpLoop();
704 707
705 std::string instance_id_data2("Hello Instance ID"); 708 std::string instance_id_data2("Hello Instance ID");
(...skipping 24 matching lines...) Expand all
730 733
731 ASSERT_EQ(1u, load_result->instance_id_data.size()); 734 ASSERT_EQ(1u, load_result->instance_id_data.size());
732 ASSERT_TRUE(load_result->instance_id_data.find(kAppName2) != 735 ASSERT_TRUE(load_result->instance_id_data.find(kAppName2) !=
733 load_result->instance_id_data.end()); 736 load_result->instance_id_data.end());
734 EXPECT_EQ(instance_id_data2, load_result->instance_id_data[kAppName2]); 737 EXPECT_EQ(instance_id_data2, load_result->instance_id_data[kAppName2]);
735 } 738 }
736 739
737 } // namespace 740 } // namespace
738 741
739 } // namespace gcm 742 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698