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

Unified Diff: sync/engine/syncer_unittest.cc

Issue 1273303002: Measuring data use of different ModelTypes in Sync Service. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@NewServices
Patch Set: Updating the recording macro. Created 5 years, 4 months 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
Index: sync/engine/syncer_unittest.cc
diff --git a/sync/engine/syncer_unittest.cc b/sync/engine/syncer_unittest.cc
index dcd326e8c887888ddab0eb867fafb20be8a07bcb..50f4485c5235048e9782c770b2c8e4d1af89e6a3 100644
--- a/sync/engine/syncer_unittest.cc
+++ b/sync/engine/syncer_unittest.cc
@@ -20,6 +20,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/string_number_conversions.h"
+#include "base/test/histogram_tester.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "sync/engine/backoff_delay_provider.h"
@@ -666,6 +667,118 @@ TEST_F(SyncerTest, GetCommitIdsFiltersThrottledEntries) {
}
}
+// This test has three steps. In the first step, a BOOKMARK update is received.
+// In the next step, syncing BOOKMARKS is disabled, so no BOOKMARK is sent or
+// received. In the last step, a BOOKMARK update is committed.
+TEST_F(SyncerTest, DataUseHistogramsTest) {
+ base::HistogramTester histogram_tester;
+ sync_pb::EntitySpecifics bookmark_data;
+ AddDefaultFieldValue(BOOKMARKS, &bookmark_data);
+
+ mock_server_->AddUpdateDirectory(1, 0, "A", 10, 10,
+ foreign_cache_guid(), "-1");
+ int download_bytes_bookmark = 0;
+ vector<int> progress_bookmark = {0, 0, 0};
Nicolas Zea 2015/08/19 22:01:51 nit: std:: here and below
amohammadkhan 2015/08/20 00:20:13 Done.
+ vector<int> progress_all = {0, 0, 0};
sclittle 2015/08/19 22:41:35 Instead of using these progress vectors and compar
amohammadkhan 2015/08/20 00:20:13 By comparing these values I am showing the progres
+ std::vector<base::Bucket> samples;
+ EXPECT_TRUE(SyncShareNudge());
+ {
+ histogram_tester.ExpectTotalCount("DataUse.Sync.Upload.Count", 0);
+ histogram_tester.ExpectTotalCount("DataUse.Sync.Upload.Bytes", 0);
+ histogram_tester.ExpectTotalCount("DataUse.Sync.Download.Count", 1);
+ histogram_tester.ExpectUniqueSample("DataUse.Sync.Download.Count",
+ BOOKMARKS, 1);
+ samples = histogram_tester.GetAllSamples("DataUse.Sync.Download.Bytes");
+ EXPECT_TRUE(samples.size() == 1);
Nicolas Zea 2015/08/19 22:01:51 nit: use EXPECT_EQ, EXPECT_GE, EXPECT_GT where pos
amohammadkhan 2015/08/20 00:20:13 Done.
+ EXPECT_TRUE(samples.at(0).min == BOOKMARKS);
+ EXPECT_TRUE(samples.at(0).count >= 0);
+ download_bytes_bookmark = samples.at(0).count;
+
+ samples = histogram_tester.GetAllSamples(
+ "DataUse.Sync.ProgressMarker.Bytes");
+
+ for(std::vector<base::Bucket>::iterator it = samples.begin();
sclittle 2015/08/19 22:41:35 nit: use range-based for, e.g. for (const base::Bu
amohammadkhan 2015/08/20 00:20:13 Done.
+ it != samples.end(); ++it) {
+ if (it->min == BOOKMARKS)
+ progress_bookmark.at(0) += it->count;
Nicolas Zea 2015/08/19 22:01:51 there should only be one bucket with value BOOKMAR
amohammadkhan 2015/08/20 00:20:13 Yes it should be one here. But I was thinking mayb
+ progress_all.at(0) += it->count;
+ }
+ EXPECT_TRUE(progress_bookmark.at(0) > 0);
+ EXPECT_TRUE(progress_all.at(0) > 0);
Nicolas Zea 2015/08/19 22:01:51 should progress_all == progress_bookmark? Maybe th
amohammadkhan 2015/08/20 00:20:13 They are not equal because of having progress mark
+
+ WriteTransaction wtrans(FROM_HERE, UNITTEST, directory());
+ MutableEntry A(&wtrans, GET_BY_ID, ids_.FromNumber(1));
+ A.PutIsUnsynced(true);
+ A.PutSpecifics(bookmark_data);
+ A.PutNonUniqueName("bookmark");
+ }
+
+ // Now sync without enabling bookmarks.
+ mock_server_->ExpectGetUpdatesRequestTypes(
+ Difference(context_->GetEnabledTypes(), ModelTypeSet(BOOKMARKS)));
+ ResetSession();
+ syncer_->NormalSyncShare(
+ Difference(context_->GetEnabledTypes(), ModelTypeSet(BOOKMARKS)),
+ &nudge_tracker_, session_.get());
+
+ {
+ // Nothing should have been committed as bookmarks is throttled.
+ histogram_tester.ExpectTotalCount("DataUse.Sync.Upload.Count", 0);
+ histogram_tester.ExpectTotalCount("DataUse.Sync.Upload.Bytes", 0);
+ histogram_tester.ExpectTotalCount("DataUse.Sync.Download.Count", 1);
+ histogram_tester.ExpectUniqueSample("DataUse.Sync.Download.Count",
+ BOOKMARKS, 1);
+
+ samples = histogram_tester.GetAllSamples("DataUse.Sync.Download.Bytes");
+ EXPECT_TRUE(samples.size() == 1);
+ EXPECT_TRUE(samples.at(0).min == BOOKMARKS);
+ EXPECT_TRUE(samples.at(0).count == download_bytes_bookmark);
+
+ samples = histogram_tester.GetAllSamples(
+ "DataUse.Sync.ProgressMarker.Bytes");
+ for(std::vector<base::Bucket>::iterator it = samples.begin();
+ it != samples.end(); ++it) {
+ if (it->min == BOOKMARKS)
+ progress_bookmark.at(1) += it->count;
+ progress_all.at(1) += it->count;
+ }
+ EXPECT_TRUE(progress_bookmark.at(1) == progress_bookmark.at(0));
+ EXPECT_TRUE(progress_all.at(1) > progress_all.at(0));
+ }
+
+ // Sync again with bookmarks enabled.
+ mock_server_->ExpectGetUpdatesRequestTypes(context_->GetEnabledTypes());
+ EXPECT_TRUE(SyncShareNudge());
+ {
+ // It should have been committed.
+ histogram_tester.ExpectTotalCount("DataUse.Sync.Upload.Count", 1);
+ histogram_tester.ExpectUniqueSample("DataUse.Sync.Upload.Count",
+ BOOKMARKS,1);
+ samples = histogram_tester.GetAllSamples("DataUse.Sync.Upload.Bytes");
+ EXPECT_TRUE(samples.size() == 1);
+ EXPECT_TRUE(samples.at(0).min == BOOKMARKS);
+ EXPECT_TRUE(samples.at(0).count >= 0);
+
+ samples = histogram_tester.GetAllSamples("DataUse.Sync.Download.Bytes");
+ EXPECT_TRUE(samples.size() == 1);
+ EXPECT_TRUE(samples.at(0).min == BOOKMARKS);
+ EXPECT_TRUE(samples.at(0).count == download_bytes_bookmark);
+
+ histogram_tester.ExpectTotalCount("DataUse.Sync.Download.Count", 1);
+
+ samples = histogram_tester.GetAllSamples(
+ "DataUse.Sync.ProgressMarker.Bytes");
+ for(std::vector<base::Bucket>::iterator it = samples.begin();
+ it != samples.end(); ++it) {
+ if (it->min == BOOKMARKS)
+ progress_bookmark.at(2) += it->count;
+ progress_all.at(2) += it->count;
+ }
+ EXPECT_TRUE(progress_bookmark.at(2) > progress_bookmark.at(1));
+ EXPECT_TRUE(progress_all.at(2) > progress_all.at(1));
+ }
+}
+
// We use a macro so we can preserve the error location.
#define VERIFY_ENTRY(id, is_unapplied, is_unsynced, prev_initialized, \
parent_id, version, server_version, id_fac, rtrans) \

Powered by Google App Engine
This is Rietveld 408576698