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

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

Issue 121743002: Renaming RMQStore to GCMStore and breaking out its interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding a GCM_EXPORT directive to GCMStoreImpl 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/rmq_store.cc ('k') | google_apis/gcm/gcm.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: google_apis/gcm/engine/rmq_store_unittest.cc
diff --git a/google_apis/gcm/engine/rmq_store_unittest.cc b/google_apis/gcm/engine/rmq_store_unittest.cc
deleted file mode 100644
index a2b098ffd1bb0f11957b9cd0a3223e06a35fd4f1..0000000000000000000000000000000000000000
--- a/google_apis/gcm/engine/rmq_store_unittest.cc
+++ /dev/null
@@ -1,364 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "google_apis/gcm/engine/rmq_store.h"
-
-#include <string>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/files/file_path.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/strings/string_number_conversions.h"
-#include "components/webdata/encryptor/encryptor.h"
-#include "google_apis/gcm/base/mcs_message.h"
-#include "google_apis/gcm/base/mcs_util.h"
-#include "google_apis/gcm/protocol/mcs.pb.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace gcm {
-
-namespace {
-
-// Number of persistent ids to use in tests.
-const int kNumPersistentIds = 10;
-
-const uint64 kDeviceId = 22;
-const uint64 kDeviceToken = 55;
-
-class RMQStoreTest : public testing::Test {
- public:
- RMQStoreTest();
- virtual ~RMQStoreTest();
-
- scoped_ptr<RMQStore> BuildRMQStore();
-
- std::string GetNextPersistentId();
-
- void PumpLoop();
-
- void LoadCallback(RMQStore::LoadResult* result_dst,
- const RMQStore::LoadResult& result);
- void UpdateCallback(bool success);
-
- private:
- base::MessageLoop message_loop_;
- base::ScopedTempDir temp_directory_;
- scoped_ptr<base::RunLoop> run_loop_;
-};
-
-RMQStoreTest::RMQStoreTest() {
- EXPECT_TRUE(temp_directory_.CreateUniqueTempDir());
- run_loop_.reset(new base::RunLoop());
-
- // On OSX, prevent the Keychain permissions popup during unit tests.
- #if defined(OS_MACOSX)
- Encryptor::UseMockKeychain(true);
- #endif
-}
-
-RMQStoreTest::~RMQStoreTest() {
-}
-
-scoped_ptr<RMQStore> RMQStoreTest::BuildRMQStore() {
- return scoped_ptr<RMQStore>(new RMQStore(temp_directory_.path(),
- message_loop_.message_loop_proxy()));
-}
-
-std::string RMQStoreTest::GetNextPersistentId() {
- return base::Uint64ToString(base::Time::Now().ToInternalValue());
-}
-
-void RMQStoreTest::PumpLoop() {
- message_loop_.RunUntilIdle();
-}
-
-void RMQStoreTest::LoadCallback(RMQStore::LoadResult* result_dst,
- const RMQStore::LoadResult& result) {
- ASSERT_TRUE(result.success);
- *result_dst = result;
- run_loop_->Quit();
- run_loop_.reset(new base::RunLoop());
-}
-
-void RMQStoreTest::UpdateCallback(bool success) {
- ASSERT_TRUE(success);
-}
-
-// Verify creating a new database and loading it.
-TEST_F(RMQStoreTest, LoadNew) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::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.next_serial_number);
- EXPECT_TRUE(load_result.user_serial_numbers.empty());
-}
-
-TEST_F(RMQStoreTest, DeviceCredentials) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- rmq_store->SetDeviceCredentials(kDeviceId,
- kDeviceToken,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- 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(RMQStoreTest, IncomingMessages) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- std::vector<std::string> persistent_ids;
- for (int i = 0; i < kNumPersistentIds; ++i) {
- persistent_ids.push_back(GetNextPersistentId());
- rmq_store->AddIncomingMessage(persistent_ids.back(),
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
- }
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_EQ(persistent_ids, load_result.incoming_messages);
- ASSERT_TRUE(load_result.outgoing_messages.empty());
-
- rmq_store->RemoveIncomingMessages(persistent_ids,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- load_result.incoming_messages.clear();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- 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.
-TEST_F(RMQStoreTest, OutgoingMessages) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- std::vector<std::string> persistent_ids;
- const int kNumPersistentIds = 10;
- for (int i = 0; i < kNumPersistentIds; ++i) {
- persistent_ids.push_back(GetNextPersistentId());
- mcs_proto::DataMessageStanza message;
- message.set_from(persistent_ids.back());
- message.set_category(persistent_ids.back());
- rmq_store->AddOutgoingMessage(persistent_ids.back(),
- MCSMessage(message),
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
- }
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- 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]);
- const mcs_proto::DataMessageStanza* message =
- reinterpret_cast<mcs_proto::DataMessageStanza *>(
- load_result.outgoing_messages[id]);
- ASSERT_EQ(message->from(), id);
- ASSERT_EQ(message->category(), id);
- }
-
- rmq_store->RemoveOutgoingMessages(persistent_ids,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- load_result.outgoing_messages.clear();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
-}
-
-// Verify incoming and outgoing messages don't conflict.
-TEST_F(RMQStoreTest, IncomingAndOutgoingMessages) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- std::vector<std::string> persistent_ids;
- const int kNumPersistentIds = 10;
- for (int i = 0; i < kNumPersistentIds; ++i) {
- persistent_ids.push_back(GetNextPersistentId());
- rmq_store->AddIncomingMessage(persistent_ids.back(),
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- mcs_proto::DataMessageStanza message;
- message.set_from(persistent_ids.back());
- message.set_category(persistent_ids.back());
- rmq_store->AddOutgoingMessage(persistent_ids.back(),
- MCSMessage(message),
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
- }
-
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::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());
- for (int i =0 ; i < kNumPersistentIds; ++i) {
- std::string id = persistent_ids[i];
- ASSERT_TRUE(load_result.outgoing_messages[id]);
- const mcs_proto::DataMessageStanza* message =
- reinterpret_cast<mcs_proto::DataMessageStanza *>(
- load_result.outgoing_messages[id]);
- ASSERT_EQ(message->from(), id);
- ASSERT_EQ(message->category(), id);
- }
-
- rmq_store->RemoveIncomingMessages(persistent_ids,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
- rmq_store->RemoveOutgoingMessages(persistent_ids,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- load_result.incoming_messages.clear();
- load_result.outgoing_messages.clear();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
-}
-
-TEST_F(RMQStoreTest, NextSerialNumber) {
- const int64 kNextSerialNumber = 77LL;
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- rmq_store->SetNextSerialNumber(kNextSerialNumber,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- EXPECT_EQ(kNextSerialNumber, load_result.next_serial_number);
-}
-
-TEST_F(RMQStoreTest, UserSerialNumberMappings) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- std::string username1 = "username1";
- int64 serial_number1 = 34LL;
- rmq_store->AddUserSerialNumber(username1, serial_number1,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
-
- std::string username2 = "username2";
- int64 serial_number2 = 56LL;
- rmq_store->AddUserSerialNumber(username2, serial_number2,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_EQ(2u, load_result.user_serial_numbers.size());
- ASSERT_NE(load_result.user_serial_numbers.end(),
- load_result.user_serial_numbers.find(username1));
- EXPECT_EQ(serial_number1, load_result.user_serial_numbers[username1]);
- ASSERT_NE(load_result.user_serial_numbers.end(),
- load_result.user_serial_numbers.find(username2));
- EXPECT_EQ(serial_number2, load_result.user_serial_numbers[username2]);
-}
-
-} // namespace
-
-} // namespace gcm
« no previous file with comments | « google_apis/gcm/engine/rmq_store.cc ('k') | google_apis/gcm/gcm.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698