| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/sync/syncable/syncable.h" | 5 #include "sync/syncable/syncable.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| 11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
| 12 #include "base/location.h" | 12 #include "base/location.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/message_loop.h" | 15 #include "base/message_loop.h" |
| 16 #include "base/scoped_temp_dir.h" | 16 #include "base/scoped_temp_dir.h" |
| 17 #include "base/stringprintf.h" | 17 #include "base/stringprintf.h" |
| 18 #include "base/synchronization/condition_variable.h" | 18 #include "base/synchronization/condition_variable.h" |
| 19 #include "base/test/values_test_util.h" | 19 #include "base/test/values_test_util.h" |
| 20 #include "base/threading/platform_thread.h" | 20 #include "base/threading/platform_thread.h" |
| 21 #include "base/values.h" | 21 #include "base/values.h" |
| 22 #include "chrome/browser/sync/engine/syncproto.h" | 22 #include "sync/engine/syncproto.h" |
| 23 #include "chrome/browser/sync/internal_api/includes/test_unrecoverable_error_han
dler.h" | 23 #include "sync/util/test_unrecoverable_error_handler.h" |
| 24 #include "chrome/browser/sync/syncable/directory_backing_store.h" | 24 #include "sync/syncable/directory_backing_store.h" |
| 25 #include "chrome/browser/sync/syncable/directory_change_delegate.h" | 25 #include "sync/syncable/directory_change_delegate.h" |
| 26 #include "chrome/browser/sync/syncable/on_disk_directory_backing_store.h" | 26 #include "sync/syncable/on_disk_directory_backing_store.h" |
| 27 #include "chrome/browser/sync/test/engine/test_id_factory.h" | 27 #include "sync/test/engine/test_id_factory.h" |
| 28 #include "chrome/browser/sync/test/engine/test_syncable_utils.h" | 28 #include "sync/test/engine/test_syncable_utils.h" |
| 29 #include "chrome/browser/sync/test/fake_encryptor.h" | 29 #include "sync/test/fake_encryptor.h" |
| 30 #include "chrome/browser/sync/test/null_directory_change_delegate.h" | 30 #include "sync/test/null_directory_change_delegate.h" |
| 31 #include "chrome/browser/sync/test/null_transaction_observer.h" | 31 #include "sync/test/null_transaction_observer.h" |
| 32 #include "sync/protocol/bookmark_specifics.pb.h" | 32 #include "sync/protocol/bookmark_specifics.pb.h" |
| 33 #include "testing/gtest/include/gtest/gtest.h" | 33 #include "testing/gtest/include/gtest/gtest.h" |
| 34 #include "third_party/sqlite/sqlite3.h" | |
| 35 | 34 |
| 36 using base::ExpectDictBooleanValue; | 35 using base::ExpectDictBooleanValue; |
| 37 using base::ExpectDictStringValue; | 36 using base::ExpectDictStringValue; |
| 38 using browser_sync::FakeEncryptor; | 37 using browser_sync::FakeEncryptor; |
| 39 using browser_sync::TestIdFactory; | 38 using browser_sync::TestIdFactory; |
| 40 using browser_sync::TestUnrecoverableErrorHandler; | 39 using browser_sync::TestUnrecoverableErrorHandler; |
| 41 | 40 |
| 42 namespace syncable { | 41 namespace syncable { |
| 43 | 42 |
| 44 class SyncableKernelTest : public testing::Test {}; | 43 class SyncableKernelTest : public testing::Test {}; |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 FakeEncryptor encryptor_; | 412 FakeEncryptor encryptor_; |
| 414 TestUnrecoverableErrorHandler handler_; | 413 TestUnrecoverableErrorHandler handler_; |
| 415 }; | 414 }; |
| 416 | 415 |
| 417 // A test fixture for syncable::Directory. Uses an in-memory database to keep | 416 // A test fixture for syncable::Directory. Uses an in-memory database to keep |
| 418 // the unit tests fast. | 417 // the unit tests fast. |
| 419 class SyncableDirectoryTest : public testing::Test { | 418 class SyncableDirectoryTest : public testing::Test { |
| 420 protected: | 419 protected: |
| 421 MessageLoop message_loop_; | 420 MessageLoop message_loop_; |
| 422 static const char kName[]; | 421 static const char kName[]; |
| 423 static const Id kId; | |
| 424 | 422 |
| 425 virtual void SetUp() { | 423 virtual void SetUp() { |
| 426 dir_.reset(new Directory(&encryptor_, &handler_, NULL)); | 424 dir_.reset(new Directory(&encryptor_, &handler_, NULL)); |
| 427 ASSERT_TRUE(dir_.get()); | 425 ASSERT_TRUE(dir_.get()); |
| 428 ASSERT_EQ(OPENED, dir_->OpenInMemoryForTest(kName, &delegate_, | 426 ASSERT_EQ(OPENED, dir_->OpenInMemoryForTest(kName, &delegate_, |
| 429 NullTransactionObserver())); | 427 NullTransactionObserver())); |
| 430 ASSERT_TRUE(dir_->good()); | 428 ASSERT_TRUE(dir_->good()); |
| 431 } | 429 } |
| 432 | 430 |
| 433 virtual void TearDown() { | 431 virtual void TearDown() { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 } | 477 } |
| 480 EXPECT_FALSE(types_to_purge.Has(BOOKMARKS)); | 478 EXPECT_FALSE(types_to_purge.Has(BOOKMARKS)); |
| 481 EXPECT_TRUE(dir_->initial_sync_ended_for_type(BOOKMARKS)); | 479 EXPECT_TRUE(dir_->initial_sync_ended_for_type(BOOKMARKS)); |
| 482 } | 480 } |
| 483 | 481 |
| 484 FakeEncryptor encryptor_; | 482 FakeEncryptor encryptor_; |
| 485 TestUnrecoverableErrorHandler handler_; | 483 TestUnrecoverableErrorHandler handler_; |
| 486 scoped_ptr<Directory> dir_; | 484 scoped_ptr<Directory> dir_; |
| 487 NullDirectoryChangeDelegate delegate_; | 485 NullDirectoryChangeDelegate delegate_; |
| 488 | 486 |
| 489 // Creates an empty entry and sets the ID field to the default kId. | 487 // Creates an empty entry and sets the ID field to a default one. |
| 490 void CreateEntry(const std::string& entryname) { | 488 void CreateEntry(const std::string& entryname) { |
| 491 CreateEntry(entryname, kId); | 489 CreateEntry(entryname, TestIdFactory::FromNumber(-99)); |
| 492 } | 490 } |
| 493 | 491 |
| 494 // Creates an empty entry and sets the ID field to id. | 492 // Creates an empty entry and sets the ID field to id. |
| 495 void CreateEntry(const std::string& entryname, const int id) { | 493 void CreateEntry(const std::string& entryname, const int id) { |
| 496 CreateEntry(entryname, TestIdFactory::FromNumber(id)); | 494 CreateEntry(entryname, TestIdFactory::FromNumber(id)); |
| 497 } | 495 } |
| 498 void CreateEntry(const std::string& entryname, Id id) { | 496 void CreateEntry(const std::string& entryname, Id id) { |
| 499 WriteTransaction wtrans(FROM_HERE, UNITTEST, dir_.get()); | 497 WriteTransaction wtrans(FROM_HERE, UNITTEST, dir_.get()); |
| 500 MutableEntry me(&wtrans, CREATE, wtrans.root_id(), entryname); | 498 MutableEntry me(&wtrans, CREATE, wtrans.root_id(), entryname); |
| 501 ASSERT_TRUE(me.good()); | 499 ASSERT_TRUE(me.good()); |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 EXPECT_EQ(number_changed, snapshot.dirty_metas.size()); | 695 EXPECT_EQ(number_changed, snapshot.dirty_metas.size()); |
| 698 for (EntryKernelSet::const_iterator i = snapshot.dirty_metas.begin(); | 696 for (EntryKernelSet::const_iterator i = snapshot.dirty_metas.begin(); |
| 699 i != snapshot.dirty_metas.end(); ++i) { | 697 i != snapshot.dirty_metas.end(); ++i) { |
| 700 EXPECT_TRUE(i->is_dirty()); | 698 EXPECT_TRUE(i->is_dirty()); |
| 701 } | 699 } |
| 702 dir_->VacuumAfterSaveChanges(snapshot); | 700 dir_->VacuumAfterSaveChanges(snapshot); |
| 703 } | 701 } |
| 704 } | 702 } |
| 705 | 703 |
| 706 const char SyncableDirectoryTest::kName[] = "Foo"; | 704 const char SyncableDirectoryTest::kName[] = "Foo"; |
| 707 const Id SyncableDirectoryTest::kId(TestIdFactory::FromNumber(-99)); | |
| 708 | 705 |
| 709 namespace { | 706 namespace { |
| 707 |
| 710 TEST_F(SyncableDirectoryTest, TestBasicLookupNonExistantID) { | 708 TEST_F(SyncableDirectoryTest, TestBasicLookupNonExistantID) { |
| 711 ReadTransaction rtrans(FROM_HERE, dir_.get()); | 709 ReadTransaction rtrans(FROM_HERE, dir_.get()); |
| 712 Entry e(&rtrans, GET_BY_ID, kId); | 710 Entry e(&rtrans, GET_BY_ID, TestIdFactory::FromNumber(-99)); |
| 713 ASSERT_FALSE(e.good()); | 711 ASSERT_FALSE(e.good()); |
| 714 } | 712 } |
| 715 | 713 |
| 716 TEST_F(SyncableDirectoryTest, TestBasicLookupValidID) { | 714 TEST_F(SyncableDirectoryTest, TestBasicLookupValidID) { |
| 717 CreateEntry("rtc"); | 715 CreateEntry("rtc"); |
| 718 ReadTransaction rtrans(FROM_HERE, dir_.get()); | 716 ReadTransaction rtrans(FROM_HERE, dir_.get()); |
| 719 Entry e(&rtrans, GET_BY_ID, kId); | 717 Entry e(&rtrans, GET_BY_ID, TestIdFactory::FromNumber(-99)); |
| 720 ASSERT_TRUE(e.good()); | 718 ASSERT_TRUE(e.good()); |
| 721 } | 719 } |
| 722 | 720 |
| 723 TEST_F(SyncableDirectoryTest, TestDelete) { | 721 TEST_F(SyncableDirectoryTest, TestDelete) { |
| 724 std::string name = "peanut butter jelly time"; | 722 std::string name = "peanut butter jelly time"; |
| 725 WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); | 723 WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); |
| 726 MutableEntry e1(&trans, CREATE, trans.root_id(), name); | 724 MutableEntry e1(&trans, CREATE, trans.root_id(), name); |
| 727 ASSERT_TRUE(e1.good()); | 725 ASSERT_TRUE(e1.good()); |
| 728 ASSERT_TRUE(e1.Put(IS_DEL, true)); | 726 ASSERT_TRUE(e1.Put(IS_DEL, true)); |
| 729 MutableEntry e2(&trans, CREATE, trans.root_id(), name); | 727 MutableEntry e2(&trans, CREATE, trans.root_id(), name); |
| (...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1734 TEST_F(SyncableClientTagTest, TestClientTagIndexDuplicateServer) { | 1732 TEST_F(SyncableClientTagTest, TestClientTagIndexDuplicateServer) { |
| 1735 EXPECT_TRUE(CreateWithDefaultTag(factory_.NewServerId(), true)); | 1733 EXPECT_TRUE(CreateWithDefaultTag(factory_.NewServerId(), true)); |
| 1736 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewServerId(), true)); | 1734 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewServerId(), true)); |
| 1737 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewServerId(), false)); | 1735 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewServerId(), false)); |
| 1738 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewLocalId(), false)); | 1736 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewLocalId(), false)); |
| 1739 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewLocalId(), true)); | 1737 EXPECT_FALSE(CreateWithDefaultTag(factory_.NewLocalId(), true)); |
| 1740 } | 1738 } |
| 1741 | 1739 |
| 1742 } // namespace | 1740 } // namespace |
| 1743 } // namespace syncable | 1741 } // namespace syncable |
| OLD | NEW |