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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync/glue/tab_node_pool.h" 5 #include "chrome/browser/sync/glue/tab_node_pool.h"
6 6
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 namespace browser_sync { 9 namespace browser_sync {
10 10
11 typedef testing::Test SyncTabNodePoolTest;
12
13 TEST_F(SyncTabNodePoolTest, TabNodeIdIncreases) {
14 // max_used_tab_node_ always increases.
15 TabNodePool pool(NULL);
16 pool.set_machine_tag("tag");
17 pool.AddOldTabNode(4, 10);
18 EXPECT_EQ(10u, pool.max_used_tab_node_id_);
19 pool.AddOldTabNode(5, 1);
20 EXPECT_EQ(10u, pool.max_used_tab_node_id_);
21 pool.AddOldTabNode(6, 1000);
22 EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
23 // Freeing a tab node does not change max_used_tab_node_id_.
24 pool.FreeTabNode(5);
25 EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
26 pool.FreeUnusedOldSyncNodes(std::set<int64>());
27 EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
28 for (int i = 0; i < 3; ++i) {
29 pool.GetFreeTabNode();
30 EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
31 }
32
33 EXPECT_EQ(1000u, pool.max_used_tab_node_id_);
34
35 }
11 namespace { 36 namespace {
12 37
13 typedef testing::Test SyncTabNodePoolTest; 38 TEST_F(SyncTabNodePoolTest, OldTabNodesAddAndRemove) {
39 // VerifyOldTabNodes are added.
40 TabNodePool pool(NULL);
41 pool.set_machine_tag("tag");
42 // sync_id =4, tab_node_id = 1
43 pool.AddOldTabNode(4, 1);
44 // sync_id = 5, tab_node_id = 5
45 pool.AddOldTabNode(5, 2);
46 EXPECT_EQ(2u, pool.capacity());
47 EXPECT_TRUE(pool.empty());
48 // max_used_tab_node_ should be 2. The next tab node should be 3.
49 // old tab node pool should contain old sync nodes.
50 EXPECT_TRUE(pool.RemoveIfOldSyncNodeExists(4));
51 EXPECT_TRUE(pool.RemoveIfOldSyncNodeExists(5));
52 EXPECT_TRUE(pool.empty());
53
54 // Returning old tab nodes to pool should
55 pool.FreeTabNode(4);
56 pool.FreeTabNode(5);
57 EXPECT_EQ(2u, pool.capacity());
58 EXPECT_FALSE(pool.empty());
59 EXPECT_TRUE(pool.full());
60 EXPECT_EQ(5, pool.GetFreeTabNode());
61 EXPECT_EQ(4, pool.GetFreeTabNode());
62 EXPECT_TRUE(pool.empty());
63 EXPECT_FALSE(pool.full());
64 }
65
66 TEST_F(SyncTabNodePoolTest, OldTabNodesRemove) {
67 // VerifyOldTabNodes are removed correctly and added back to free node pool.
68 TabNodePool pool(NULL);
69 pool.set_machine_tag("tag");
70 // sync_id =4, tab_node_id = 1
71 pool.AddOldTabNode(4, 1);
72 // sync_id = 5, tab_node_id = 2
73 pool.AddOldTabNode(5, 2);
74 // sync_id = 5, tab_node_id = 3
75 pool.AddOldTabNode(6, 3);
76 EXPECT_EQ(3u, pool.capacity());
77 EXPECT_TRUE(pool.empty());
78 std::set<int64> used_sync_ids;
79 used_sync_ids.insert(4);
80 used_sync_ids.insert(5);
81 used_sync_ids.insert(6);
82 pool.FreeUnusedOldSyncNodes(used_sync_ids);
83 // All tab nodes are in use, they should not be removed.
84 EXPECT_EQ(3u, pool.capacity());
85 EXPECT_TRUE(pool.empty());
86 EXPECT_TRUE(pool.RemoveIfOldSyncNodeExists(4));
87 // Should no longer be in old tab nodes pool.
88 EXPECT_FALSE(pool.RemoveIfOldSyncNodeExists(4));
89 used_sync_ids.clear();
90 // 4 is used, 5 and 6 should be returned to the free node pool.
91 pool.FreeUnusedOldSyncNodes(used_sync_ids);
92 // 5 and 6 should not be in the old nodes pool.
93 EXPECT_FALSE(pool.RemoveIfOldSyncNodeExists(5));
94 EXPECT_FALSE(pool.RemoveIfOldSyncNodeExists(6));
95 EXPECT_FALSE(pool.empty());
96 EXPECT_EQ(3u, pool.capacity());
97
98 // Free 4 as well, pool should have all free nodes now.
99 pool.FreeTabNode(4);
100 EXPECT_TRUE(pool.full());
101
102 std::set<int64> free_sync_ids;
103 for (int i = 0; i < 3; ++i) {
104 free_sync_ids.insert(pool.GetFreeTabNode());
105 }
106
107 EXPECT_TRUE(pool.empty());
108 EXPECT_EQ(3u, free_sync_ids.size());
109 EXPECT_EQ(1u, free_sync_ids.count(4));
110 EXPECT_EQ(1u, free_sync_ids.count(5));
111 EXPECT_EQ(1u, free_sync_ids.count(6));
112 }
14 113
15 TEST_F(SyncTabNodePoolTest, Init) { 114 TEST_F(SyncTabNodePoolTest, Init) {
16 TabNodePool pool(NULL); 115 TabNodePool pool(NULL);
17 pool.set_machine_tag("tag"); 116 pool.set_machine_tag("tag");
18 ASSERT_TRUE(pool.empty()); 117 EXPECT_TRUE(pool.empty());
19 ASSERT_TRUE(pool.full()); 118 EXPECT_TRUE(pool.full());
20 } 119 }
21 120
22 TEST_F(SyncTabNodePoolTest, AddGet) { 121 TEST_F(SyncTabNodePoolTest, AddGet) {
23 TabNodePool pool(NULL); 122 TabNodePool pool(NULL);
24 pool.set_machine_tag("tag"); 123 pool.set_machine_tag("tag");
25 124
26 pool.AddTabNode(5); 125 pool.AddOldTabNode(5, 1);
27 pool.AddTabNode(10); 126 pool.AddOldTabNode(10, 2);
28 ASSERT_FALSE(pool.empty()); 127 pool.FreeUnusedOldSyncNodes(std::set<int64>());
29 ASSERT_TRUE(pool.full()); 128 EXPECT_FALSE(pool.empty());
129 EXPECT_TRUE(pool.full());
30 130
31 ASSERT_EQ(2U, pool.capacity()); 131 EXPECT_EQ(2U, pool.capacity());
32 ASSERT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab. 132 EXPECT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
33 ASSERT_FALSE(pool.empty()); 133 EXPECT_FALSE(pool.empty());
34 ASSERT_FALSE(pool.full()); 134 EXPECT_FALSE(pool.full());
35 ASSERT_EQ(2U, pool.capacity()); 135 EXPECT_EQ(2U, pool.capacity());
36 ASSERT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab. 136 EXPECT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
37 } 137 }
38 138
39 TEST_F(SyncTabNodePoolTest, All) { 139 TEST_F(SyncTabNodePoolTest, All) {
40 TabNodePool pool(NULL); 140 TabNodePool pool(NULL);
41 pool.set_machine_tag("tag"); 141 pool.set_machine_tag("tag");
42 ASSERT_TRUE(pool.empty()); 142 EXPECT_TRUE(pool.empty());
43 ASSERT_TRUE(pool.full()); 143 EXPECT_TRUE(pool.full());
44 ASSERT_EQ(0U, pool.capacity()); 144 EXPECT_EQ(0U, pool.capacity());
45 pool.AddTabNode(5); 145 pool.AddOldTabNode(5, 1);
46 pool.AddTabNode(10); 146 pool.AddOldTabNode(10, 2);
47 ASSERT_FALSE(pool.empty()); 147 pool.FreeUnusedOldSyncNodes(std::set<int64>());
48 ASSERT_TRUE(pool.full()); 148 EXPECT_FALSE(pool.empty());
49 ASSERT_EQ(2U, pool.capacity()); 149 EXPECT_TRUE(pool.full());
50 ASSERT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab. 150 EXPECT_EQ(2U, pool.capacity());
51 ASSERT_FALSE(pool.empty()); 151 EXPECT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
52 ASSERT_FALSE(pool.full()); 152 EXPECT_FALSE(pool.empty());
53 ASSERT_EQ(2U, pool.capacity()); 153 EXPECT_FALSE(pool.full());
54 ASSERT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab. 154 EXPECT_EQ(2U, pool.capacity());
55 ASSERT_TRUE(pool.empty()); 155 EXPECT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
56 ASSERT_FALSE(pool.full()); 156 EXPECT_TRUE(pool.empty());
57 ASSERT_EQ(2U, pool.capacity()); 157 EXPECT_FALSE(pool.full());
158 EXPECT_EQ(2U, pool.capacity());
58 // Release them in reverse order. 159 // Release them in reverse order.
59 pool.FreeTabNode(10); 160 pool.FreeTabNode(10);
60 pool.FreeTabNode(5); 161 pool.FreeTabNode(5);
61 ASSERT_EQ(2U, pool.capacity()); 162 EXPECT_EQ(2U, pool.capacity());
62 ASSERT_FALSE(pool.empty()); 163 EXPECT_FALSE(pool.empty());
63 ASSERT_TRUE(pool.full()); 164 EXPECT_TRUE(pool.full());
64 ASSERT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab. 165 EXPECT_EQ(5, pool.GetFreeTabNode()); // Returns last free tab.
65 ASSERT_FALSE(pool.empty()); 166 EXPECT_FALSE(pool.empty());
66 ASSERT_FALSE(pool.full()); 167 EXPECT_FALSE(pool.full());
67 ASSERT_EQ(2U, pool.capacity()); 168 EXPECT_EQ(2U, pool.capacity());
68 ASSERT_FALSE(pool.empty()); 169 EXPECT_FALSE(pool.empty());
69 ASSERT_FALSE(pool.full()); 170 EXPECT_FALSE(pool.full());
70 ASSERT_EQ(2U, pool.capacity()); 171 EXPECT_EQ(2U, pool.capacity());
71 ASSERT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab. 172 EXPECT_EQ(10, pool.GetFreeTabNode()); // Returns last free tab.
72 ASSERT_TRUE(pool.empty()); 173 EXPECT_TRUE(pool.empty());
73 ASSERT_FALSE(pool.full()); 174 EXPECT_FALSE(pool.full());
74 ASSERT_EQ(2U, pool.capacity()); 175 EXPECT_EQ(2U, pool.capacity());
75 // Release them again. 176 // Release them again.
76 pool.FreeTabNode(10); 177 pool.FreeTabNode(10);
77 pool.FreeTabNode(5); 178 pool.FreeTabNode(5);
78 ASSERT_FALSE(pool.empty()); 179 EXPECT_FALSE(pool.empty());
79 ASSERT_TRUE(pool.full()); 180 EXPECT_TRUE(pool.full());
80 ASSERT_EQ(2U, pool.capacity()); 181 EXPECT_EQ(2U, pool.capacity());
81 pool.clear(); 182 pool.clear();
82 ASSERT_TRUE(pool.empty()); 183 EXPECT_TRUE(pool.empty());
83 ASSERT_TRUE(pool.full()); 184 EXPECT_TRUE(pool.full());
84 ASSERT_EQ(0U, pool.capacity()); 185 EXPECT_EQ(0U, pool.capacity());
85 } 186 }
86 187
87 } // namespace 188 } // namespace
88 189
89 } // namespace browser_sync 190 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698