Index: sync/engine/syncer_unittest.cc |
diff --git a/sync/engine/syncer_unittest.cc b/sync/engine/syncer_unittest.cc |
index e31a08ee580f1ff82fa518de6485f9a1a4a15e8f..e4755b6a4f32a070a9ec05e4788b95696eaab9d5 100644 |
--- a/sync/engine/syncer_unittest.cc |
+++ b/sync/engine/syncer_unittest.cc |
@@ -50,6 +50,7 @@ |
#include "sync/test/engine/test_syncable_utils.h" |
#include "sync/test/fake_encryptor.h" |
#include "sync/test/fake_sync_encryption_handler.h" |
+#include "sync/test/sessions/mock_debug_info_getter.h" |
#include "sync/util/cryptographer.h" |
#include "sync/util/extensions_activity.h" |
#include "sync/util/time.h" |
@@ -104,6 +105,7 @@ using syncable::SPECIFICS; |
using syncable::SYNCING; |
using syncable::UNITTEST; |
+using sessions::MockDebugInfoGetter; |
using sessions::StatusController; |
using sessions::SyncSessionContext; |
using sessions::SyncSession; |
@@ -204,6 +206,7 @@ class SyncerTest : public testing::Test, |
dir_maker_.SetUp(); |
mock_server_.reset(new MockConnectionManager(directory(), |
&cancelation_signal_)); |
+ debug_info_getter_.reset(new MockDebugInfoGetter); |
EnableDatatype(BOOKMARKS); |
EnableDatatype(NIGORI); |
EnableDatatype(PREFERENCES); |
@@ -222,7 +225,7 @@ class SyncerTest : public testing::Test, |
new SyncSessionContext( |
mock_server_.get(), directory(), workers, |
extensions_activity_, |
- listeners, NULL, &traffic_recorder_, |
+ listeners, debug_info_getter_.get(), &traffic_recorder_, |
true, // enable keystore encryption |
false, // force enable pre-commit GU avoidance experiment |
"fake_invalidator_client_id")); |
@@ -490,6 +493,7 @@ class SyncerTest : public testing::Test, |
ModelTypeSet enabled_datatypes_; |
TrafficRecorder traffic_recorder_; |
sessions::NudgeTracker nudge_tracker_; |
+ scoped_ptr<MockDebugInfoGetter> debug_info_getter_; |
DISALLOW_COPY_AND_ASSIGN(SyncerTest); |
}; |
@@ -2515,6 +2519,58 @@ TEST_F(SyncerTest, CommitManyItemsInOneGo_CommitConflict) { |
directory()->unsynced_entity_count()); |
} |
+// Tests that sending debug info events works. |
+TEST_F(SyncerTest, SendDebugInfoEvents_HappyCase) { |
+ debug_info_getter_->AddDebugEvent(); |
+ debug_info_getter_->AddDebugEvent(); |
+ |
+ SyncShareNudge(); |
+ |
+ // Verify we received one request with two debug info events. |
+ EXPECT_EQ(1U, mock_server_->requests().size()); |
+ EXPECT_EQ(2, mock_server_->requests().back().debug_info().events_size()); |
+ |
+ SyncShareNudge(); |
+ |
+ // See that we received another request, but that it contains no debug info |
+ // events. |
+ EXPECT_EQ(2U, mock_server_->requests().size()); |
+ EXPECT_EQ(0, mock_server_->requests().back().debug_info().events_size()); |
+ |
+ debug_info_getter_->AddDebugEvent(); |
+ |
+ SyncShareNudge(); |
+ |
+ // See that we received another request and it contains one debug info event. |
+ EXPECT_EQ(3U, mock_server_->requests().size()); |
+ EXPECT_EQ(1, mock_server_->requests().back().debug_info().events_size()); |
+} |
+ |
+// Tests that debug info events are dropped on server error. |
+TEST_F(SyncerTest, SendDebugInfoEvents_PostFailsDontDrop) { |
+ debug_info_getter_->AddDebugEvent(); |
+ debug_info_getter_->AddDebugEvent(); |
+ |
+ mock_server_->FailNextPostBufferToPathCall(); |
+ SyncShareNudge(); |
+ |
+ // Verify we attempted to send one request with two debug info events. |
+ EXPECT_EQ(1U, mock_server_->requests().size()); |
+ EXPECT_EQ(2, mock_server_->requests().back().debug_info().events_size()); |
+ |
+ SyncShareNudge(); |
+ |
+ // See that the client resent the two debug info events. |
+ EXPECT_EQ(2U, mock_server_->requests().size()); |
+ EXPECT_EQ(2, mock_server_->requests().back().debug_info().events_size()); |
+ |
+ // The previous send was successful so this next one shouldn't generate any |
+ // debug info events. |
+ SyncShareNudge(); |
+ EXPECT_EQ(3U, mock_server_->requests().size()); |
+ EXPECT_EQ(0, mock_server_->requests().back().debug_info().events_size()); |
+} |
+ |
TEST_F(SyncerTest, HugeConflict) { |
int item_count = 300; // We should be able to do 300 or 3000 w/o issue. |