Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(317)

Unified Diff: sync/engine/syncer_unittest.cc

Issue 61213009: Don't drop debug_info when posting to sync server fails (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed erroneous use of SYNC_EXPORT_PRIVATE from MockDebugInfoGetter. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sync/engine/download_unittest.cc ('k') | sync/internal_api/debug_info_event_listener.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « sync/engine/download_unittest.cc ('k') | sync/internal_api/debug_info_event_listener.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698