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

Unified Diff: chrome/browser/sync/glue/tab_node_pool_unittest.cc

Issue 16421003: [Sync] Add logic to reassociate tab nodes after restart. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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: chrome/browser/sync/glue/tab_node_pool_unittest.cc
diff --git a/chrome/browser/sync/glue/tab_node_pool_unittest.cc b/chrome/browser/sync/glue/tab_node_pool_unittest.cc
index 43d476829d8e8af510152921c25c5cffc83ff0af..cc5f0a46cf3496d6a59b2d838867877e7fa83274 100644
--- a/chrome/browser/sync/glue/tab_node_pool_unittest.cc
+++ b/chrome/browser/sync/glue/tab_node_pool_unittest.cc
@@ -8,80 +8,181 @@
namespace browser_sync {
+typedef testing::Test SyncTabNodePoolTest;
+
+TEST_F(SyncTabNodePoolTest, TabNodeIdIncreases) {
+ // max_used_tab_node_ always increases.
+ TabNodePool pool(NULL);
+ pool.set_machine_tag("tag");
+ pool.AddOldTabNode(4, 10);
+ EXPECT_EQ(10u, pool.max_used_tab_node_id_);
+ pool.AddOldTabNode(5, 1);
+ EXPECT_EQ(10u, pool.max_used_tab_node_id_);
+ pool.AddOldTabNode(6, 1000);
+ EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
+ // Freeing a tab node does not change max_used_tab_node_id_.
+ pool.FreeTabNode(5);
+ EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
+ pool.FreeUnusedOldSyncNodes(std::set<int64>());
+ EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
+ for (int i = 0; i < 3; ++i) {
+ pool.GetFreeTabNode();
+ EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
+ }
+
+ EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
+
+}
namespace {
-typedef testing::Test SyncTabNodePoolTest;
+TEST_F(SyncTabNodePoolTest, OldTabNodesAddAndRemove) {
+ // VerifyOldTabNodes are added.
+ TabNodePool pool(NULL);
+ pool.set_machine_tag("tag");
+ // sync_id =4, tab_node_id = 1
+ pool.AddOldTabNode(4, 1);
+ // sync_id = 5, tab_node_id = 5
+ pool.AddOldTabNode(5, 2);
+ EXPECT_EQ(2u, pool.capacity());
+ EXPECT_TRUE(pool.empty());
+ // max_used_tab_node_ should be 2. The next tab node should be 3.
+ // old tab node pool should contain old sync nodes.
+ EXPECT_TRUE(pool.RemoveIfOldSyncNodeExists(4));
+ EXPECT_TRUE(pool.RemoveIfOldSyncNodeExists(5));
+ EXPECT_TRUE(pool.empty());
+
+ // Returning old tab nodes to pool should
+ pool.FreeTabNode(4);
+ pool.FreeTabNode(5);
+ EXPECT_EQ(2u, pool.capacity());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(5, pool.GetFreeTabNode());
+ EXPECT_EQ(4, pool.GetFreeTabNode());
+ EXPECT_TRUE(pool.empty());
+ EXPECT_FALSE(pool.full());
+}
+
+TEST_F(SyncTabNodePoolTest, OldTabNodesRemove) {
+ // VerifyOldTabNodes are removed correctly and added back to free node pool.
+ TabNodePool pool(NULL);
+ pool.set_machine_tag("tag");
+ // sync_id =4, tab_node_id = 1
+ pool.AddOldTabNode(4, 1);
+ // sync_id = 5, tab_node_id = 2
+ pool.AddOldTabNode(5, 2);
+ // sync_id = 5, tab_node_id = 3
+ pool.AddOldTabNode(6, 3);
+ EXPECT_EQ(3u, pool.capacity());
+ EXPECT_TRUE(pool.empty());
+ std::set<int64> used_sync_ids;
+ used_sync_ids.insert(4);
+ used_sync_ids.insert(5);
+ used_sync_ids.insert(6);
+ pool.FreeUnusedOldSyncNodes(used_sync_ids);
+ // All tab nodes are in use, they should not be removed.
+ EXPECT_EQ(3u, pool.capacity());
+ EXPECT_TRUE(pool.empty());
+ EXPECT_TRUE(pool.RemoveIfOldSyncNodeExists(4));
+ // Should no longer be in old tab nodes pool.
+ EXPECT_FALSE(pool.RemoveIfOldSyncNodeExists(4));
+ used_sync_ids.clear();
+ // 4 is used, 5 and 6 should be returned to the free node pool.
+ pool.FreeUnusedOldSyncNodes(used_sync_ids);
+ // 5 and 6 should not be in the old nodes pool.
+ EXPECT_FALSE(pool.RemoveIfOldSyncNodeExists(5));
+ EXPECT_FALSE(pool.RemoveIfOldSyncNodeExists(6));
+ EXPECT_FALSE(pool.empty());
+ EXPECT_EQ(3u, pool.capacity());
+
+ // Free 4 as well, pool should have all free nodes now.
+ pool.FreeTabNode(4);
+ EXPECT_TRUE(pool.full());
+
+ std::set<int64> free_sync_ids;
+ for (int i = 0; i < 3; ++i) {
+ free_sync_ids.insert(pool.GetFreeTabNode());
+ }
+
+ EXPECT_TRUE(pool.empty());
+ EXPECT_EQ(3u, free_sync_ids.size());
+ EXPECT_EQ(1u, free_sync_ids.count(4));
+ EXPECT_EQ(1u, free_sync_ids.count(5));
+ EXPECT_EQ(1u, free_sync_ids.count(6));
+}
TEST_F(SyncTabNodePoolTest, Init) {
TabNodePool pool(NULL);
pool.set_machine_tag("tag");
- ASSERT_TRUE(pool.empty());
- ASSERT_TRUE(pool.full());
+ EXPECT_TRUE(pool.empty());
+ EXPECT_TRUE(pool.full());
}
TEST_F(SyncTabNodePoolTest, AddGet) {
TabNodePool pool(NULL);
pool.set_machine_tag("tag");
- pool.AddTabNode(5);
- pool.AddTabNode(10);
- ASSERT_FALSE(pool.empty());
- ASSERT_TRUE(pool.full());
-
- ASSERT_EQ(2U, pool.capacity());
- ASSERT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
- ASSERT_FALSE(pool.empty());
- ASSERT_FALSE(pool.full());
- ASSERT_EQ(2U, pool.capacity());
- ASSERT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
+ pool.AddOldTabNode(5, 1);
+ pool.AddOldTabNode(10, 2);
+ pool.FreeUnusedOldSyncNodes(std::set<int64>());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
+ EXPECT_FALSE(pool.empty());
+ EXPECT_FALSE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
}
TEST_F(SyncTabNodePoolTest, All) {
TabNodePool pool(NULL);
pool.set_machine_tag("tag");
- ASSERT_TRUE(pool.empty());
- ASSERT_TRUE(pool.full());
- ASSERT_EQ(0U, pool.capacity());
- pool.AddTabNode(5);
- pool.AddTabNode(10);
- ASSERT_FALSE(pool.empty());
- ASSERT_TRUE(pool.full());
- ASSERT_EQ(2U, pool.capacity());
- ASSERT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
- ASSERT_FALSE(pool.empty());
- ASSERT_FALSE(pool.full());
- ASSERT_EQ(2U, pool.capacity());
- ASSERT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
- ASSERT_TRUE(pool.empty());
- ASSERT_FALSE(pool.full());
- ASSERT_EQ(2U, pool.capacity());
+ EXPECT_TRUE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(0U, pool.capacity());
+ pool.AddOldTabNode(5, 1);
+ pool.AddOldTabNode(10, 2);
+ pool.FreeUnusedOldSyncNodes(std::set<int64>());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
+ EXPECT_FALSE(pool.empty());
+ EXPECT_FALSE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
+ EXPECT_TRUE(pool.empty());
+ EXPECT_FALSE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
// Release them in reverse order.
pool.FreeTabNode(10);
pool.FreeTabNode(5);
- ASSERT_EQ(2U, pool.capacity());
- ASSERT_FALSE(pool.empty());
- ASSERT_TRUE(pool.full());
- ASSERT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
- ASSERT_FALSE(pool.empty());
- ASSERT_FALSE(pool.full());
- ASSERT_EQ(2U, pool.capacity());
- ASSERT_FALSE(pool.empty());
- ASSERT_FALSE(pool.full());
- ASSERT_EQ(2U, pool.capacity());
- ASSERT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
- ASSERT_TRUE(pool.empty());
- ASSERT_FALSE(pool.full());
- ASSERT_EQ(2U, pool.capacity());
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
+ EXPECT_FALSE(pool.empty());
+ EXPECT_FALSE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_FALSE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
+ EXPECT_TRUE(pool.empty());
+ EXPECT_FALSE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
// Release them again.
pool.FreeTabNode(10);
pool.FreeTabNode(5);
- ASSERT_FALSE(pool.empty());
- ASSERT_TRUE(pool.full());
- ASSERT_EQ(2U, pool.capacity());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
pool.clear();
- ASSERT_TRUE(pool.empty());
- ASSERT_TRUE(pool.full());
- ASSERT_EQ(0U, pool.capacity());
+ EXPECT_TRUE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(0U, pool.capacity());
}
} // namespace

Powered by Google App Engine
This is Rietveld 408576698