Index: components/sync/protocol/proto_size_estimations_unittest.cc |
diff --git a/components/sync/protocol/proto_size_estimations_unittest.cc b/components/sync/protocol/proto_size_estimations_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2c3a2fe3b43826f8b9333acc1792a51dcc7a1b98 |
--- /dev/null |
+++ b/components/sync/protocol/proto_size_estimations_unittest.cc |
@@ -0,0 +1,147 @@ |
+// Copyright (c) 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/debug/scoped_thread_heap_usage.h" |
+#include "base/logging.h" |
+#include "build/build_config.h" |
+#include "components/sync/protocol/app_list_specifics.pb.h" |
+#include "components/sync/protocol/app_notification_specifics.pb.h" |
+#include "components/sync/protocol/app_setting_specifics.pb.h" |
+#include "components/sync/protocol/app_specifics.pb.h" |
+#include "components/sync/protocol/arc_package_specifics.pb.h" |
+#include "components/sync/protocol/autofill_specifics.pb.h" |
+#include "components/sync/protocol/bookmark_specifics.pb.h" |
+#include "components/sync/protocol/dictionary_specifics.pb.h" |
+#include "components/sync/protocol/encryption.pb.h" |
+#include "components/sync/protocol/entity_metadata.pb.h" |
+#include "components/sync/protocol/experiments_specifics.pb.h" |
+#include "components/sync/protocol/extension_setting_specifics.pb.h" |
+#include "components/sync/protocol/extension_specifics.pb.h" |
+#include "components/sync/protocol/favicon_image_specifics.pb.h" |
+#include "components/sync/protocol/favicon_tracking_specifics.pb.h" |
+#include "components/sync/protocol/history_delete_directive_specifics.pb.h" |
+#include "components/sync/protocol/nigori_specifics.pb.h" |
+#include "components/sync/protocol/password_specifics.pb.h" |
+#include "components/sync/protocol/preference_specifics.pb.h" |
+#include "components/sync/protocol/printer_specifics.pb.h" |
+#include "components/sync/protocol/priority_preference_specifics.pb.h" |
+#include "components/sync/protocol/proto_enum_conversions.h" |
+#include "components/sync/protocol/proto_size_estimations.h" |
+#include "components/sync/protocol/proto_unittest_serialized_data.h" |
+#include "components/sync/protocol/reading_list_specifics.pb.h" |
+#include "components/sync/protocol/search_engine_specifics.pb.h" |
+#include "components/sync/protocol/session_specifics.pb.h" |
+#include "components/sync/protocol/sync.pb.h" |
+#include "components/sync/protocol/theme_specifics.pb.h" |
+#include "components/sync/protocol/typed_url_specifics.pb.h" |
+#include "components/sync/protocol/unique_position.pb.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+#if BUILDFLAG(USE_EXPERIMENTAL_ALLOCATOR_SHIM) |
+ |
+namespace syncer { |
+namespace { |
+ |
+using base::debug::ScopedThreadHeapUsage; |
+ |
+class TestingScopedThreadHeapUsage : public ScopedThreadHeapUsage { |
+ public: |
+ using ScopedThreadHeapUsage::DisableHeapTrackingForTesting; |
+}; |
+ |
+class ProtoSizeEstimationsTest : public testing::Test { |
+ public: |
+ void SetUp() override { |
+ TestingScopedThreadHeapUsage::Initialize(); |
+ TestingScopedThreadHeapUsage::EnableHeapTracking(); |
+ } |
+ void TearDown() override { |
+ TestingScopedThreadHeapUsage::DisableHeapTrackingForTesting(); |
+ } |
+}; |
+ |
+#define IMPLEMENT_TEST(Proto) \ |
+ TEST_F(ProtoSizeEstimationsTest, Proto) { \ |
+ sync_pb::Proto proto; \ |
+ const auto& serialized_data = SerializedProto<sync_pb::Proto>::data; \ |
+ \ |
+ base::debug::ScopedThreadHeapUsage scoped_heap_usage; \ |
+ auto usage_before = ScopedThreadHeapUsage::CurrentUsage(); \ |
+ EXPECT_TRUE(proto.ParseFromArray(serialized_data, sizeof(serialized_data))); \ |
+ auto usage_after = ScopedThreadHeapUsage::CurrentUsage(); \ |
+ \ |
+ size_t memory_usage = \ |
+ (usage_after.alloc_bytes - usage_before.alloc_bytes) - \ |
+ (usage_after.free_bytes - usage_before.free_bytes); \ |
+ size_t estimated_memory_usage = sync_pb::EstimateMemoryUsage(proto); \ |
+ \ |
+ EXPECT_EQ(memory_usage, estimated_memory_usage); \ |
+ } |
+ |
+IMPLEMENT_TEST(EncryptedData) |
+IMPLEMENT_TEST(AppListSpecifics) |
+IMPLEMENT_TEST(AppNotificationSettings) |
+IMPLEMENT_TEST(LinkedAppIconInfo) |
+IMPLEMENT_TEST(ArcPackageSpecifics) |
+IMPLEMENT_TEST(SessionHeader) |
+IMPLEMENT_TEST(SessionTab) |
+IMPLEMENT_TEST(SessionWindow) |
+IMPLEMENT_TEST(TabNavigation) |
+IMPLEMENT_TEST(NavigationRedirect) |
+IMPLEMENT_TEST(PasswordSpecificsData) |
+IMPLEMENT_TEST(GlobalIdDirective) |
+IMPLEMENT_TEST(TimeRangeDirective) |
+IMPLEMENT_TEST(SessionSpecifics) |
+IMPLEMENT_TEST(PrinterPPDData) |
+IMPLEMENT_TEST(AppNotification) |
+IMPLEMENT_TEST(AppSettingSpecifics) |
+IMPLEMENT_TEST(AppSpecifics) |
+IMPLEMENT_TEST(ArticleSpecifics) |
+IMPLEMENT_TEST(AutofillSpecifics) |
+IMPLEMENT_TEST(AutofillProfileSpecifics) |
+IMPLEMENT_TEST(WalletMetadataSpecifics) |
+IMPLEMENT_TEST(AutofillWalletSpecifics) |
+IMPLEMENT_TEST(BookmarkSpecifics) |
+IMPLEMENT_TEST(DeviceInfoSpecifics) |
+IMPLEMENT_TEST(DictionarySpecifics) |
+IMPLEMENT_TEST(ExperimentsSpecifics) |
+IMPLEMENT_TEST(PriorityPreferenceSpecifics) |
+IMPLEMENT_TEST(ExtensionSettingSpecifics) |
+IMPLEMENT_TEST(ExtensionSpecifics) |
+IMPLEMENT_TEST(FaviconImageSpecifics) |
+IMPLEMENT_TEST(FaviconTrackingSpecifics) |
+IMPLEMENT_TEST(HistoryDeleteDirectiveSpecifics) |
+IMPLEMENT_TEST(ManagedUserSettingSpecifics) |
+IMPLEMENT_TEST(ManagedUserSpecifics) |
+IMPLEMENT_TEST(ManagedUserSharedSettingSpecifics) |
+IMPLEMENT_TEST(ManagedUserWhitelistSpecifics) |
+IMPLEMENT_TEST(NigoriSpecifics) |
+IMPLEMENT_TEST(PasswordSpecifics) |
+IMPLEMENT_TEST(PreferenceSpecifics) |
+IMPLEMENT_TEST(PrinterSpecifics) |
+IMPLEMENT_TEST(ReadingListSpecifics) |
+IMPLEMENT_TEST(SyncedNotificationAppInfoSpecifics) |
+IMPLEMENT_TEST(SyncedNotificationSpecifics) |
+IMPLEMENT_TEST(SearchEngineSpecifics) |
+IMPLEMENT_TEST(ThemeSpecifics) |
+IMPLEMENT_TEST(TypedUrlSpecifics) |
+IMPLEMENT_TEST(WalletMaskedCreditCard) |
+IMPLEMENT_TEST(WalletPostalAddress) |
+IMPLEMENT_TEST(WifiCredentialSpecifics) |
+IMPLEMENT_TEST(EntitySpecifics) |
+IMPLEMENT_TEST(SyncEntity) |
+// IMPLEMENT_TEST(ClientToServerMessage) |
+// IMPLEMENT_TEST(ClientToServerResponse) |
+IMPLEMENT_TEST(DatatypeAssociationStats) |
+IMPLEMENT_TEST(DebugEventInfo) |
+IMPLEMENT_TEST(DebugInfo) |
+IMPLEMENT_TEST(SyncCycleCompletedEventInfo) |
+IMPLEMENT_TEST(ClientConfigParams) |
+IMPLEMENT_TEST(AttachmentIdProto) |
+IMPLEMENT_TEST(EntityMetadata) |
+ |
+} // namespace |
+} // namespace syncer |
+ |
+#endif // BUILDFLAG(USE_EXPERIMENTAL_ALLOCATOR_SHIM) |