Home | History | Annotate | Download | only in engine
      1 // Copyright 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "sync/test/engine/test_directory_setter_upper.h"
      6 
      7 #include "base/compiler_specific.h"
      8 #include "base/files/file_util.h"
      9 #include "base/location.h"
     10 #include "base/strings/string_util.h"
     11 #include "sync/syncable/directory.h"
     12 #include "sync/syncable/in_memory_directory_backing_store.h"
     13 #include "sync/syncable/mutable_entry.h"
     14 #include "sync/syncable/syncable_read_transaction.h"
     15 #include "sync/syncable/syncable_write_transaction.h"
     16 #include "sync/test/test_transaction_observer.h"
     17 #include "testing/gtest/include/gtest/gtest.h"
     18 
     19 namespace syncer {
     20 
     21 TestDirectorySetterUpper::TestDirectorySetterUpper() : name_("Test") {}
     22 
     23 TestDirectorySetterUpper::~TestDirectorySetterUpper() {}
     24 
     25 void TestDirectorySetterUpper::SetUp() {
     26   test_transaction_observer_.reset(new syncable::TestTransactionObserver());
     27   WeakHandle<syncable::TransactionObserver> transaction_observer =
     28       MakeWeakHandle(test_transaction_observer_->AsWeakPtr());
     29 
     30   directory_.reset(
     31       new syncable::Directory(
     32           new syncable::InMemoryDirectoryBackingStore(name_),
     33           &handler_,
     34           NULL,
     35           &encryption_handler_,
     36           encryption_handler_.cryptographer()));
     37   ASSERT_EQ(syncable::OPENED, directory_->Open(
     38           name_, &delegate_, transaction_observer));
     39 }
     40 
     41 void TestDirectorySetterUpper::SetUpWith(
     42     syncer::syncable::DirectoryBackingStore* directory_store) {
     43   CHECK(directory_store);
     44   test_transaction_observer_.reset(new syncable::TestTransactionObserver());
     45   WeakHandle<syncable::TransactionObserver> transaction_observer =
     46       MakeWeakHandle(test_transaction_observer_->AsWeakPtr());
     47 
     48   directory_.reset(
     49       new syncable::Directory(directory_store,
     50                               &handler_,
     51                               NULL,
     52                               &encryption_handler_,
     53                               encryption_handler_.cryptographer()));
     54     ASSERT_EQ(syncable::OPENED, directory_->Open(
     55           name_, &delegate_, transaction_observer));
     56 }
     57 
     58 void TestDirectorySetterUpper::TearDown() {
     59   if (!directory()->good())
     60     return;
     61 
     62   RunInvariantCheck();
     63   directory()->SaveChanges();
     64   RunInvariantCheck();
     65   directory()->SaveChanges();
     66 
     67   directory_.reset();
     68 }
     69 
     70 void TestDirectorySetterUpper::RunInvariantCheck() {
     71   // Check invariants for all items.
     72   syncable::ReadTransaction trans(FROM_HERE, directory());
     73 
     74   // The TestUnrecoverableErrorHandler that this directory was constructed with
     75   // will handle error reporting, so we can safely ignore the return value.
     76   directory()->FullyCheckTreeInvariants(&trans);
     77 }
     78 
     79 }  // namespace syncer
     80