Chromium Code Reviews| Index: sync/syncable/directory_unittest.cc |
| diff --git a/sync/syncable/directory_unittest.cc b/sync/syncable/directory_unittest.cc |
| index d802d4f2ccf5624e6af0dba22d1d4dbac748d52c..a25c21ce8099ce2367f022c11e8a374a690157ae 100644 |
| --- a/sync/syncable/directory_unittest.cc |
| +++ b/sync/syncable/directory_unittest.cc |
| @@ -12,6 +12,7 @@ |
| #include "sync/syncable/syncable_write_transaction.h" |
| #include "sync/test/engine/test_syncable_utils.h" |
| #include "sync/test/test_directory_backing_store.h" |
| +#include "sync/util/mock_unrecoverable_error_handler.h" |
| using base::ExpectDictBooleanValue; |
| using base::ExpectDictStringValue; |
| @@ -2030,6 +2031,24 @@ TEST_F(SyncableDirectoryTest, SaveChangesSnapshot_HasUnsavedMetahandleChanges) { |
| snapshot.delete_journals_to_purge.clear(); |
| } |
| +// Verify that Directory triggers an unrecoverable error when a catastrophic |
| +// DirectoryBackingStore error is detected. |
| +TEST_F(SyncableDirectoryTest, CatastrophicError) { |
| + MockUnrecoverableErrorHandler unrecoverable_error_handler; |
| + Directory dir(new InMemoryDirectoryBackingStore("catastrophic_error"), |
| + &unrecoverable_error_handler, nullptr, nullptr, nullptr); |
| + ASSERT_EQ(OPENED, dir.Open(kDirectoryName, directory_change_delegate(), |
| + NullTransactionObserver())); |
| + ASSERT_EQ(0, unrecoverable_error_handler.invocation_count()); |
| + |
| + // Fire off two catastrophic errors. |
| + dir.OnCatastrophicError(); |
|
Nicolas Zea
2015/04/27 19:17:32
out of curiosity, why twice?
maniscalco
2015/04/27 19:51:17
Just to make sure Directory can tolerate since tha
|
| + dir.OnCatastrophicError(); |
| + |
| + // See that the unrecoverable error handler has been invoked twice. |
| + ASSERT_EQ(2, unrecoverable_error_handler.invocation_count()); |
| +} |
| + |
| } // namespace syncable |
| } // namespace syncer |