| Index: chrome/browser/sync/syncable/syncable_unittest.cc
|
| diff --git a/chrome/browser/sync/syncable/syncable_unittest.cc b/chrome/browser/sync/syncable/syncable_unittest.cc
|
| index 6ce650de9d7760706445d25049bd8a0f6a3f5696..1b6fc3862a79a5ed40ea1ceda5c63d27527d915f 100644
|
| --- a/chrome/browser/sync/syncable/syncable_unittest.cc
|
| +++ b/chrome/browser/sync/syncable/syncable_unittest.cc
|
| @@ -4,28 +4,15 @@
|
|
|
| #include "chrome/browser/sync/syncable/syncable.h"
|
|
|
| -#include "build/build_config.h"
|
| -
|
| -#include <sys/types.h>
|
| -
|
| -#include <limits>
|
| #include <string>
|
|
|
| -#if !defined(OS_WIN)
|
| -#define MAX_PATH PATH_MAX
|
| -#include <ostream>
|
| -#include <stdio.h>
|
| -#include <sys/ipc.h>
|
| -#include <sys/sem.h>
|
| -#include <sys/times.h>
|
| -#endif // !defined(OS_WIN)
|
| -
|
| #include "base/compiler_specific.h"
|
| #include "base/file_path.h"
|
| #include "base/file_util.h"
|
| #include "base/location.h"
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/message_loop.h"
|
| #include "base/scoped_temp_dir.h"
|
| #include "base/stringprintf.h"
|
| #include "base/synchronization/condition_variable.h"
|
| @@ -39,6 +26,7 @@
|
| #include "chrome/browser/sync/test/engine/test_id_factory.h"
|
| #include "chrome/browser/sync/test/engine/test_syncable_utils.h"
|
| #include "chrome/browser/sync/test/null_directory_change_delegate.h"
|
| +#include "chrome/browser/sync/test/null_transaction_observer.h"
|
| #include "chrome/test/base/values_test_util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/sqlite/sqlite3.h"
|
| @@ -103,6 +91,7 @@ class SyncableGeneralTest : public testing::Test {
|
| virtual void TearDown() {
|
| }
|
| protected:
|
| + MessageLoop message_loop_;
|
| ScopedTempDir temp_dir_;
|
| NullDirectoryChangeDelegate delegate_;
|
| FilePath db_path_;
|
| @@ -110,7 +99,7 @@ class SyncableGeneralTest : public testing::Test {
|
|
|
| TEST_F(SyncableGeneralTest, General) {
|
| Directory dir;
|
| - dir.Open(db_path_, "SimpleTest", &delegate_);
|
| + dir.Open(db_path_, "SimpleTest", &delegate_, NullTransactionObserver());
|
|
|
| int64 root_metahandle;
|
| {
|
| @@ -209,7 +198,7 @@ TEST_F(SyncableGeneralTest, General) {
|
|
|
| TEST_F(SyncableGeneralTest, ChildrenOps) {
|
| Directory dir;
|
| - dir.Open(db_path_, "SimpleTest", &delegate_);
|
| + dir.Open(db_path_, "SimpleTest", &delegate_, NullTransactionObserver());
|
|
|
| int64 root_metahandle;
|
| {
|
| @@ -289,7 +278,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsProperly) {
|
| // Test creating a new meta entry.
|
| {
|
| Directory dir;
|
| - dir.Open(db_path_, "IndexTest", &delegate_);
|
| + dir.Open(db_path_, "IndexTest", &delegate_, NullTransactionObserver());
|
| {
|
| WriteTransaction wtrans(FROM_HERE, UNITTEST, &dir);
|
| MutableEntry me(&wtrans, CREATE, wtrans.root_id(), name);
|
| @@ -305,7 +294,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsProperly) {
|
| // The DB was closed. Now reopen it. This will cause index regeneration.
|
| {
|
| Directory dir;
|
| - dir.Open(db_path_, "IndexTest", &delegate_);
|
| + dir.Open(db_path_, "IndexTest", &delegate_, NullTransactionObserver());
|
|
|
| ReadTransaction trans(FROM_HERE, &dir);
|
| Entry me(&trans, GET_BY_CLIENT_TAG, tag);
|
| @@ -325,7 +314,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsDeletedProperly) {
|
| // Test creating a deleted, unsynced, server meta entry.
|
| {
|
| Directory dir;
|
| - dir.Open(db_path_, "IndexTest", &delegate_);
|
| + dir.Open(db_path_, "IndexTest", &delegate_, NullTransactionObserver());
|
| {
|
| WriteTransaction wtrans(FROM_HERE, UNITTEST, &dir);
|
| MutableEntry me(&wtrans, CREATE, wtrans.root_id(), "deleted");
|
| @@ -343,7 +332,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsDeletedProperly) {
|
| // Should still be present and valid in the client tag index.
|
| {
|
| Directory dir;
|
| - dir.Open(db_path_, "IndexTest", &delegate_);
|
| + dir.Open(db_path_, "IndexTest", &delegate_, NullTransactionObserver());
|
|
|
| ReadTransaction trans(FROM_HERE, &dir);
|
| Entry me(&trans, GET_BY_CLIENT_TAG, tag);
|
| @@ -357,7 +346,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsDeletedProperly) {
|
|
|
| TEST_F(SyncableGeneralTest, ToValue) {
|
| Directory dir;
|
| - dir.Open(db_path_, "SimpleTest", &delegate_);
|
| + dir.Open(db_path_, "SimpleTest", &delegate_, NullTransactionObserver());
|
|
|
| const Id id = TestIdFactory::FromNumber(99);
|
| {
|
| @@ -412,6 +401,7 @@ class TestUnsaveableDirectory : public Directory {
|
| // Test suite for syncable::Directory.
|
| class SyncableDirectoryTest : public testing::Test {
|
| protected:
|
| + MessageLoop message_loop_;
|
| ScopedTempDir temp_dir_;
|
| static const char kName[];
|
| static const Id kId;
|
| @@ -425,7 +415,8 @@ class SyncableDirectoryTest : public testing::Test {
|
| file_util::Delete(file_path_, true);
|
| dir_.reset(new Directory());
|
| ASSERT_TRUE(dir_.get());
|
| - ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
|
| + ASSERT_EQ(OPENED, dir_->Open(file_path_, kName,
|
| + &delegate_, NullTransactionObserver()));
|
| ASSERT_TRUE(dir_->good());
|
| }
|
|
|
| @@ -439,7 +430,8 @@ class SyncableDirectoryTest : public testing::Test {
|
| void ReloadDir() {
|
| dir_.reset(new Directory());
|
| ASSERT_TRUE(dir_.get());
|
| - ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
|
| + ASSERT_EQ(OPENED, dir_->Open(file_path_, kName,
|
| + &delegate_, NullTransactionObserver()));
|
| }
|
|
|
| void SaveAndReloadDir() {
|
| @@ -1202,7 +1194,8 @@ TEST_F(SyncableDirectoryTest, TestSimpleFieldsPreservedDuringSaveChanges) {
|
| dir_->SaveChanges();
|
| dir_.reset(new Directory());
|
| ASSERT_TRUE(dir_.get());
|
| - ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
|
| + ASSERT_EQ(OPENED, dir_->Open(file_path_, kName,
|
| + &delegate_, NullTransactionObserver()));
|
| ASSERT_TRUE(dir_->good());
|
|
|
| {
|
| @@ -1301,7 +1294,8 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailure) {
|
| // always fail.
|
| dir_.reset(new TestUnsaveableDirectory());
|
| ASSERT_TRUE(dir_.get());
|
| - ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
|
| + ASSERT_EQ(OPENED, dir_->Open(file_path_, kName,
|
| + &delegate_, NullTransactionObserver()));
|
| ASSERT_TRUE(dir_->good());
|
| int64 handle2 = 0;
|
| {
|
| @@ -1374,7 +1368,8 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailureWithPurge) {
|
| // always fail.
|
| dir_.reset(new TestUnsaveableDirectory());
|
| ASSERT_TRUE(dir_.get());
|
| - ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
|
| + ASSERT_EQ(OPENED, dir_->Open(file_path_, kName,
|
| + &delegate_, NullTransactionObserver()));
|
| ASSERT_TRUE(dir_->good());
|
|
|
| ModelTypeSet set;
|
| @@ -1496,13 +1491,14 @@ class SyncableDirectoryManager : public testing::Test {
|
| virtual void TearDown() {
|
| }
|
| protected:
|
| + MessageLoop message_loop_;
|
| ScopedTempDir temp_dir_;
|
| NullDirectoryChangeDelegate delegate_;
|
| };
|
|
|
| TEST_F(SyncableDirectoryManager, TestFileRelease) {
|
| DirectoryManager dm(FilePath(temp_dir_.path()));
|
| - ASSERT_TRUE(dm.Open("ScopeTest", &delegate_));
|
| + ASSERT_TRUE(dm.Open("ScopeTest", &delegate_, NullTransactionObserver()));
|
| {
|
| ScopedDirLookup(&dm, "ScopeTest");
|
| }
|
| @@ -1520,7 +1516,8 @@ class ThreadOpenTestDelegate : public base::PlatformThread::Delegate {
|
| private:
|
| // PlatformThread::Delegate methods:
|
| virtual void ThreadMain() {
|
| - CHECK(directory_manager_->Open("Open", &delegate_));
|
| + CHECK(directory_manager_->Open(
|
| + "Open", &delegate_, NullTransactionObserver()));
|
| }
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ThreadOpenTestDelegate);
|
| @@ -1564,6 +1561,7 @@ class ThreadBugDelegate : public base::PlatformThread::Delegate {
|
|
|
| // PlatformThread::Delegate methods:
|
| virtual void ThreadMain() {
|
| + MessageLoop message_loop;
|
| const std::string dirname = "ThreadBug1";
|
| base::AutoLock scoped_lock(step_->mutex);
|
|
|
| @@ -1573,12 +1571,14 @@ class ThreadBugDelegate : public base::PlatformThread::Delegate {
|
| }
|
| switch (step_->number) {
|
| case 0:
|
| - directory_manager_->Open(dirname, &delegate_);
|
| + directory_manager_->Open(
|
| + dirname, &delegate_, NullTransactionObserver());
|
| break;
|
| case 1:
|
| {
|
| directory_manager_->Close(dirname);
|
| - directory_manager_->Open(dirname, &delegate_);
|
| + directory_manager_->Open(
|
| + dirname, &delegate_, NullTransactionObserver());
|
| ScopedDirLookup dir(directory_manager_, dirname);
|
| CHECK(dir.good());
|
| WriteTransaction trans(FROM_HERE, UNITTEST, dir);
|
| @@ -1636,6 +1636,7 @@ class DirectoryKernelStalenessBugDelegate : public ThreadBugDelegate {
|
| : ThreadBugDelegate(role, step, dirman) {}
|
|
|
| virtual void ThreadMain() {
|
| + MessageLoop message_loop;
|
| const char test_bytes[] = "test data";
|
| const std::string dirname = "DirectoryKernelStalenessBug";
|
| base::AutoLock scoped_lock(step_->mutex);
|
| @@ -1652,7 +1653,8 @@ class DirectoryKernelStalenessBugDelegate : public ThreadBugDelegate {
|
| file_util::Delete(directory_manager_->GetSyncDataDatabasePath(),
|
| true);
|
| // Test.
|
| - directory_manager_->Open(dirname, &delegate_);
|
| + directory_manager_->Open(
|
| + dirname, &delegate_, NullTransactionObserver());
|
| ScopedDirLookup dir(directory_manager_, dirname);
|
| CHECK(dir.good());
|
| WriteTransaction trans(FROM_HERE, UNITTEST, dir);
|
| @@ -1671,7 +1673,8 @@ class DirectoryKernelStalenessBugDelegate : public ThreadBugDelegate {
|
| break;
|
| case 1:
|
| {
|
| - directory_manager_->Open(dirname, &delegate_);
|
| + directory_manager_->Open(
|
| + dirname, &delegate_, NullTransactionObserver());
|
| ScopedDirLookup dir(directory_manager_, dirname);
|
| CHECK(dir.good());
|
| }
|
| @@ -1770,13 +1773,14 @@ class StressTransactionsDelegate : public base::PlatformThread::Delegate {
|
| };
|
|
|
| TEST(SyncableDirectory, StressTransactions) {
|
| + MessageLoop message_loop;
|
| ScopedTempDir temp_dir;
|
| ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| DirectoryManager dirman(FilePath(temp_dir.path()));
|
| std::string dirname = "stress";
|
| file_util::Delete(dirman.GetSyncDataDatabasePath(), true);
|
| NullDirectoryChangeDelegate delegate;
|
| - dirman.Open(dirname, &delegate);
|
| + dirman.Open(dirname, &delegate, NullTransactionObserver());
|
|
|
| const int kThreadCount = 7;
|
| base::PlatformThreadHandle threads[kThreadCount];
|
|
|