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

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: Fix win compile, rename uint -> size_t. 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..3a86eaa08419e82969b767610baedb813645c463 100644
--- a/chrome/browser/sync/glue/tab_node_pool_unittest.cc
+++ b/chrome/browser/sync/glue/tab_node_pool_unittest.cc
@@ -8,80 +8,205 @@
namespace browser_sync {
+typedef testing::Test SyncTabNodePoolTest;
Nicolas Zea 2013/06/19 21:35:33 Given what I mentioned about friending a test clas
shashi 2013/06/20 00:49:32 Done. On 2013/06/19 21:35:33, Nicolas Zea wrote:
+
+TEST_F(SyncTabNodePoolTest, TabNodeIdIncreases) {
+ // max_used_tab_node_ always increases.
+ TabNodePool pool(NULL);
+ pool.set_machine_tag("tag");
+ SessionID session_id;
+ session_id.set_id(1);
+ pool.AddTabNode(4, session_id, 10);
+ EXPECT_EQ(10u, pool.max_used_tab_node_id_);
+ session_id.set_id(2);
+ pool.AddTabNode(5, session_id, 1);
+ EXPECT_EQ(10u, pool.max_used_tab_node_id_);
+ session_id.set_id(3);
+ pool.AddTabNode(6, session_id, 1000);
+ EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
+ pool.ReassociateTabNode(6, 500);
+ // Freeing a tab node does not change max_used_tab_node_id_.
+ pool.FreeTabNode(4);
+ pool.FreeUnusedTabNodes(std::set<int64>());
+ EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
+ for (int i = 0; i < 3; ++i) {
+ pool.AssociateTabNode(pool.GetFreeTabNode(), i + 1);
+ 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, tab_id = 1
+ SessionID session_id;
+ session_id.set_id(1);
+ pool.AddTabNode(4, session_id, 1);
+ // sync_id = 5, tab_node_id = 5, tab_id = 2
+ session_id.set_id(2);
+ pool.AddTabNode(5, session_id, 2);
+ EXPECT_EQ(2u, pool.capacity());
+ EXPECT_TRUE(pool.empty());
+ EXPECT_TRUE(pool.ReassociateTabNode(4, 2));
+ EXPECT_TRUE(pool.ReassociateTabNode(5, 1));
+ EXPECT_TRUE(pool.empty());
+ // Check free unused tab nodes returns the node to free node pool.
+ std::set<int64> used_sync_ids;
+ used_sync_ids.insert(5);
+ pool.FreeUnusedTabNodes(used_sync_ids);
+ // 4 should be returned to free node pool.
+ EXPECT_EQ(2u, pool.capacity());
+ EXPECT_FALSE(pool.empty());
+ // 5 should still be in the associated nodes.
+ EXPECT_FALSE(pool.full());
+ pool.FreeTabNode(5);
+ // 5 should be returned to free nodes pool and pool should be full.
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(4, pool.GetFreeTabNode());
+ pool.AssociateTabNode(4, 1);
+ EXPECT_EQ(5, pool.GetFreeTabNode());
+ pool.AssociateTabNode(5, 1);
+ EXPECT_TRUE(pool.empty());
+ EXPECT_FALSE(pool.full());
+}
+
+TEST_F(SyncTabNodePoolTest, OldTabNodesReassociation) {
+ // VerifyOldTabNodes are reassociated correctly.
+ TabNodePool pool(NULL);
+ pool.set_machine_tag("tag");
+ // sync_id =4, tab_node_id = 1, tab_id = 1
+ SessionID session_id;
+ session_id.set_id(1);
+ pool.AddTabNode(4, session_id, 1);
+ // sync_id = 5, tab_node_id = 2, tab_id = 2
+ session_id.set_id(2);
+ pool.AddTabNode(5, session_id, 2);
+ // sync_id = 5, tab_node_id = 3, tab_id =3
+ session_id.set_id(3);
+ pool.AddTabNode(6, session_id, 3);
+ EXPECT_EQ(3u, pool.capacity());
+ EXPECT_TRUE(pool.empty());
+ // Free 5 and 6.
+ pool.FreeTabNode(5);
+ pool.FreeTabNode(6);
+ // 5 and 6 nodes should not get reassociated.
+ EXPECT_TRUE(pool.ReassociateTabNode(4, 5));
+ EXPECT_FALSE(pool.ReassociateTabNode(5, 6));
+ EXPECT_FALSE(pool.ReassociateTabNode(6, 7));
+ // Free node pool should have 5 and 6.
+ EXPECT_FALSE(pool.empty());
+ EXPECT_EQ(3u, pool.capacity());
+
+ // Free all nodes
+ pool.FreeUnusedTabNodes(std::set<int64>());
+ EXPECT_TRUE(pool.full());
+ std::set<int64> free_sync_ids;
+ for (int i = 0; i < 3; ++i) {
+ free_sync_ids.insert(pool.GetFreeTabNode());
+ // GetFreeTabNode will return the same value till the node is
+ // reassociated.
+ pool.AssociateTabNode(pool.GetFreeTabNode(), i + 1);
+ }
+
+ 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.
+ SessionID session_id;
+ session_id.set_id(1);
+ pool.AddTabNode(5, session_id, 1);
+ session_id.set_id(2);
+ pool.AddTabNode(10, session_id, 2);
+ pool.FreeUnusedTabNodes(std::set<int64>());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_EQ(5, pool.GetFreeTabNode());
+ pool.AssociateTabNode(5, 1);
+ EXPECT_FALSE(pool.empty());
+ EXPECT_FALSE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ // 5 is now used, should return 10.
+ EXPECT_EQ(10, pool.GetFreeTabNode());
}
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());
+ SessionID session_id;
+ session_id.set_id(1);
+ pool.AddTabNode(5, session_id, 1);
+ session_id.set_id(2);
+ pool.AddTabNode(10, session_id, 2);
+ // Free added nodes.
+ pool.FreeUnusedTabNodes(std::set<int64>());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ // GetFreeTabNode returns the lowest numbered free node.
+ EXPECT_EQ(5, pool.GetFreeTabNode());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ // Associate 5, next free node should be 10.
+ pool.AssociateTabNode(5, 1);
+ EXPECT_EQ(10, pool.GetFreeTabNode());
+ pool.AssociateTabNode(10, 2);
+ 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());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_FALSE(pool.empty());
+ EXPECT_TRUE(pool.full());
+ pool.AssociateTabNode(5, 1);
+ EXPECT_EQ(2U, pool.capacity());
+ EXPECT_EQ(10, pool.GetFreeTabNode());
+ pool.AssociateTabNode(10, 2);
+ 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