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

Unified Diff: chrome/browser/sync/test/integration/sync_test.cc

Issue 267723012: Use FakeServer-based invalidations for Sync tests (try #2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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
Index: chrome/browser/sync/test/integration/sync_test.cc
diff --git a/chrome/browser/sync/test/integration/sync_test.cc b/chrome/browser/sync/test/integration/sync_test.cc
index 3c8b63a0283a147cf0ec77e560b0933a9c2bb83e..7da507de601c53bce16ee5f72a26d2edfe6b22b0 100644
--- a/chrome/browser/sync/test/integration/sync_test.cc
+++ b/chrome/browser/sync/test/integration/sync_test.cc
@@ -36,6 +36,7 @@
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/browser/sync/profile_sync_service_factory.h"
+#include "chrome/browser/sync/test/integration/fake_server_invalidation_service.h"
#include "chrome/browser/sync/test/integration/p2p_invalidation_forwarder.h"
#include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
#include "chrome/browser/sync/test/integration/single_client_status_change_checker.h"
@@ -234,6 +235,8 @@ void SyncTest::TearDown() {
// Stop the local sync test server. This is a no-op if one wasn't started.
TearDownLocalTestServer();
+
+ fake_server_.reset();
}
void SyncTest::SetUpCommandLine(base::CommandLine* cl) {
@@ -326,6 +329,7 @@ bool SyncTest::SetupClients() {
browsers_.resize(num_clients_);
clients_.resize(num_clients_);
invalidation_forwarders_.resize(num_clients_);
+ fake_server_invalidation_services_.resize(num_clients_);
for (int i = 0; i < num_clients_; ++i) {
InitializeInstance(i);
}
@@ -352,14 +356,6 @@ void SyncTest::InitializeInstance(int index) {
EXPECT_FALSE(GetBrowser(index) == NULL) << "Could not create Browser "
<< index << ".";
- invalidation::P2PInvalidationService* p2p_invalidation_service =
- static_cast<invalidation::P2PInvalidationService*>(
- InvalidationServiceFactory::GetInstance()->SetTestingFactoryAndUse(
- GetProfile(index),
- TestUsesSelfNotifications() ?
- BuildSelfNotifyingP2PInvalidationService
- : BuildRealisticP2PInvalidationService));
- p2p_invalidation_service->UpdateCredentials(username_, password_);
// Make sure the ProfileSyncService has been created before creating the
// ProfileSyncServiceHarness - some tests expect the ProfileSyncService to
@@ -381,11 +377,7 @@ void SyncTest::InitializeInstance(int index) {
password_);
EXPECT_FALSE(GetClient(index) == NULL) << "Could not create Client "
<< index << ".";
-
- // Start listening for and emitting notificaitons of commits.
- invalidation_forwarders_[index] =
- new P2PInvalidationForwarder(clients_[index]->service(),
- p2p_invalidation_service);
+ InitializeInvalidations(index);
test::WaitForBookmarkModelToLoad(
BookmarkModelFactory::GetForProfile(GetProfile(index)));
@@ -395,6 +387,32 @@ void SyncTest::InitializeInstance(int index) {
TemplateURLServiceFactory::GetForProfile(GetProfile(index)));
}
+void SyncTest::InitializeInvalidations(int index) {
+ if (server_type_ == IN_PROCESS_FAKE_SERVER) {
+ CHECK(fake_server_.get());
+ fake_server::FakeServerInvalidationService* invalidation_service =
+ static_cast<fake_server::FakeServerInvalidationService*>(
+ InvalidationServiceFactory::GetInstance()->SetTestingFactoryAndUse(
+ GetProfile(index),
+ fake_server::FakeServerInvalidationService::Build));
+ fake_server_->AddObserver(invalidation_service);
+ fake_server_invalidation_services_[index] = invalidation_service;
+ } else {
+ invalidation::P2PInvalidationService* p2p_invalidation_service =
+ static_cast<invalidation::P2PInvalidationService*>(
+ InvalidationServiceFactory::GetInstance()->SetTestingFactoryAndUse(
+ GetProfile(index),
+ TestUsesSelfNotifications() ?
+ BuildSelfNotifyingP2PInvalidationService
+ : BuildRealisticP2PInvalidationService));
+ p2p_invalidation_service->UpdateCredentials(username_, password_);
+ // Start listening for and emitting notifications of commits.
+ invalidation_forwarders_[index] =
+ new P2PInvalidationForwarder(clients_[index]->service(),
+ p2p_invalidation_service);
+ }
+}
+
bool SyncTest::SetupSync() {
// Create sync profiles and clients if they haven't already been created.
if (profiles_.empty()) {
@@ -434,10 +452,19 @@ void SyncTest::CleanUpOnMainThread() {
chrome::CloseAllBrowsers();
content::RunAllPendingInMessageLoop();
+ if (fake_server_.get()) {
+ std::vector<fake_server::FakeServerInvalidationService*>::const_iterator it;
+ for (it = fake_server_invalidation_services_.begin();
+ it != fake_server_invalidation_services_.end(); ++it) {
+ fake_server_->RemoveObserver(*it);
+ }
+ }
+
// All browsers should be closed at this point, or else we could see memory
// corruption in QuitBrowser().
CHECK_EQ(0U, chrome::GetTotalBrowserCount());
invalidation_forwarders_.clear();
+ fake_server_invalidation_services_.clear();
clients_.clear();
}
@@ -605,8 +632,6 @@ void SyncTest::SetUpTestServerIfRequired() {
LOG(FATAL) << "Failed to set up local test server";
} else if (server_type_ == IN_PROCESS_FAKE_SERVER) {
fake_server_.reset(new fake_server::FakeServer());
- // Similar to LOCAL_LIVE_SERVER, we must start this for XMPP.
- SetUpLocalPythonTestServer();
SetupMockGaiaResponses();
} else if (server_type_ == EXTERNAL_LIVE_SERVER) {
// Nothing to do; we'll just talk to the URL we were given.
@@ -725,6 +750,10 @@ bool SyncTest::IsTestServerRunning() {
}
void SyncTest::EnableNetwork(Profile* profile) {
+ // TODO(pvalenzuela): Remove this restriction when FakeServer's observers
+ // (namely FakeServerInvaldationService) are aware of a network disconnect.
+ ASSERT_NE(IN_PROCESS_FAKE_SERVER, server_type_)
+ << "FakeServer does not support EnableNetwork.";
SetProxyConfig(profile->GetRequestContext(),
net::ProxyConfig::CreateDirect());
if (notifications_enabled_) {
@@ -735,6 +764,10 @@ void SyncTest::EnableNetwork(Profile* profile) {
}
void SyncTest::DisableNetwork(Profile* profile) {
+ // TODO(pvalenzuela): Remove this restriction when FakeServer's observers
+ // (namely FakeServerInvaldationService) are aware of a network disconnect.
+ ASSERT_NE(IN_PROCESS_FAKE_SERVER, server_type_)
+ << "FakeServer does not support DisableNetwork.";
DisableNotificationsImpl();
// Set the current proxy configuration to a nonexistent proxy to effectively
// disable networking.

Powered by Google App Engine
This is Rietveld 408576698