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

Side by Side Diff: chrome/browser/sync/sessions/status_controller_unittest.cc

Issue 386030: Relieve SyncerSession,SyncCycleState, SyncProcessState, SyncerSession, Syncer... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/sync/sessions/sync_session.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7
8 namespace browser_sync {
9 namespace sessions {
10
11 typedef testing::Test StatusControllerTest;
12
13 TEST_F(StatusControllerTest, GetsDirty) {
14 StatusController status;
15 status.set_num_conflicting_commits(1);
16 EXPECT_TRUE(status.TestAndClearIsDirty());
17 EXPECT_FALSE(status.TestAndClearIsDirty()); // Test that it actually resets.
18 status.set_num_conflicting_commits(1);
19 EXPECT_FALSE(status.TestAndClearIsDirty());
20 status.set_num_conflicting_commits(0);
21 EXPECT_TRUE(status.TestAndClearIsDirty());
22
23 status.set_num_consecutive_problem_get_updates(1);
24 EXPECT_TRUE(status.TestAndClearIsDirty());
25
26 status.increment_num_consecutive_problem_get_updates();
27 EXPECT_TRUE(status.TestAndClearIsDirty());
28
29 status.set_num_consecutive_problem_commits(1);
30 EXPECT_TRUE(status.TestAndClearIsDirty());
31
32 status.increment_num_consecutive_problem_commits();
33 EXPECT_TRUE(status.TestAndClearIsDirty());
34
35 status.set_num_consecutive_transient_error_commits(1);
36 EXPECT_TRUE(status.TestAndClearIsDirty());
37
38 status.increment_num_consecutive_transient_error_commits_by(1);
39 EXPECT_TRUE(status.TestAndClearIsDirty());
40 status.increment_num_consecutive_transient_error_commits_by(0);
41 EXPECT_FALSE(status.TestAndClearIsDirty());
42
43 status.set_num_consecutive_errors(10);
44 EXPECT_TRUE(status.TestAndClearIsDirty());
45 status.set_num_consecutive_errors(10);
46 EXPECT_FALSE(status.TestAndClearIsDirty()); // Only dirty if value changed.
47 status.increment_num_consecutive_errors();
48 EXPECT_TRUE(status.TestAndClearIsDirty());
49 status.increment_num_consecutive_errors_by(1);
50 EXPECT_TRUE(status.TestAndClearIsDirty());
51 status.increment_num_consecutive_errors_by(0);
52 EXPECT_FALSE(status.TestAndClearIsDirty());
53
54 status.set_current_sync_timestamp(100);
55 EXPECT_TRUE(status.TestAndClearIsDirty());
56
57 status.set_num_server_changes_remaining(30);
58 EXPECT_TRUE(status.TestAndClearIsDirty());
59
60 status.set_over_quota(true);
61 EXPECT_TRUE(status.TestAndClearIsDirty());
62 status.set_over_quota(false);
63 EXPECT_TRUE(status.TestAndClearIsDirty());
64
65 status.set_invalid_store(true);
66 EXPECT_TRUE(status.TestAndClearIsDirty());
67 status.set_invalid_store(false);
68 EXPECT_TRUE(status.TestAndClearIsDirty());
69
70 status.set_syncer_stuck(true);
71 EXPECT_TRUE(status.TestAndClearIsDirty());
72 status.set_syncer_stuck(false);
73 EXPECT_TRUE(status.TestAndClearIsDirty());
74
75 status.set_syncing(true);
76 EXPECT_TRUE(status.TestAndClearIsDirty());
77 status.set_syncing(false);
78 EXPECT_TRUE(status.TestAndClearIsDirty());
79
80 status.set_num_successful_commits(1);
81 EXPECT_TRUE(status.TestAndClearIsDirty());
82 status.increment_num_successful_commits();
83 EXPECT_TRUE(status.TestAndClearIsDirty());
84
85 std::vector<int64> v;
86 v.push_back(1);
87 status.set_unsynced_handles(v);
88 EXPECT_TRUE(status.TestAndClearIsDirty());
89 std::vector<int64> v2;
90 v2.push_back(1);
91 status.set_unsynced_handles(v2);
92 EXPECT_FALSE(status.TestAndClearIsDirty()); // Test for deep comparison.
93 }
94
95 TEST_F(StatusControllerTest, StaysClean) {
96 StatusController status;
97 status.set_conflict_sets_built(true);
98 EXPECT_FALSE(status.TestAndClearIsDirty());
99 status.set_conflicts_resolved(true);
100 EXPECT_FALSE(status.TestAndClearIsDirty());
101 status.set_timestamp_dirty(true);
102 EXPECT_FALSE(status.TestAndClearIsDirty());
103 status.set_items_committed(true);
104 EXPECT_FALSE(status.TestAndClearIsDirty());
105
106 std::vector<syncable::Id> v;
107 v.push_back(syncable::Id());
108 status.set_commit_ids(v);
109 EXPECT_FALSE(status.TestAndClearIsDirty());
110 }
111
112 // This test is useful, as simple as it sounds, due to the copy-paste prone
113 // nature of status_controller.cc (we have had bugs in the past where a set_foo
114 // method was actually setting |bar_| instead!).
115 TEST_F(StatusControllerTest, ReadYourWrites) {
116 StatusController status;
117 status.set_num_conflicting_commits(1);
118 EXPECT_EQ(1, status.error_counters().num_conflicting_commits);
119
120 status.set_num_consecutive_problem_get_updates(2);
121 EXPECT_EQ(2, status.error_counters().consecutive_problem_get_updates);
122 status.increment_num_consecutive_problem_get_updates();
123 EXPECT_EQ(3, status.error_counters().consecutive_problem_get_updates);
124
125 status.set_num_consecutive_problem_commits(4);
126 EXPECT_EQ(4, status.error_counters().consecutive_problem_commits);
127 status.increment_num_consecutive_problem_commits();
128 EXPECT_EQ(5, status.error_counters().consecutive_problem_commits);
129
130 status.set_num_consecutive_transient_error_commits(6);
131 EXPECT_EQ(6, status.error_counters().consecutive_transient_error_commits);
132 status.increment_num_consecutive_transient_error_commits_by(1);
133 EXPECT_EQ(7, status.error_counters().consecutive_transient_error_commits);
134 status.increment_num_consecutive_transient_error_commits_by(0);
135 EXPECT_EQ(7, status.error_counters().consecutive_transient_error_commits);
136
137 status.set_num_consecutive_errors(8);
138 EXPECT_EQ(8, status.error_counters().consecutive_errors);
139 status.increment_num_consecutive_errors();
140 EXPECT_EQ(9, status.error_counters().consecutive_errors);
141 status.increment_num_consecutive_errors_by(2);
142 EXPECT_EQ(11, status.error_counters().consecutive_errors);
143
144 status.set_current_sync_timestamp(12);
145 EXPECT_EQ(12, status.change_progress().current_sync_timestamp);
146
147 status.set_num_server_changes_remaining(13);
148 EXPECT_EQ(13, status.change_progress().num_server_changes_remaining);
149
150 EXPECT_FALSE(status.syncer_status().over_quota);
151 status.set_over_quota(true);
152 EXPECT_TRUE(status.syncer_status().over_quota);
153
154 EXPECT_FALSE(status.syncer_status().invalid_store);
155 status.set_invalid_store(true);
156 EXPECT_TRUE(status.syncer_status().invalid_store);
157
158 EXPECT_FALSE(status.syncer_status().syncer_stuck);
159 status.set_syncer_stuck(true);
160 EXPECT_TRUE(status.syncer_status().syncer_stuck);
161
162 EXPECT_FALSE(status.syncer_status().syncing);
163 status.set_syncing(true);
164 EXPECT_TRUE(status.syncer_status().syncing);
165
166 status.set_num_successful_commits(14);
167 EXPECT_EQ(14, status.syncer_status().num_successful_commits);
168 status.increment_num_successful_commits();
169 EXPECT_EQ(15, status.syncer_status().num_successful_commits);
170
171 std::vector<int64> v;
172 v.push_back(16);
173 status.set_unsynced_handles(v);
174 EXPECT_EQ(16, v[0]);
175 }
176
177 TEST_F(StatusControllerTest, ResetTransientState) {
178 StatusController status;
179 status.set_conflict_sets_built(true);
180 EXPECT_TRUE(status.conflict_sets_built());
181 status.set_timestamp_dirty(true);
182 status.set_items_committed(true);
183 status.set_conflicts_resolved(true);
184 sync_pb::SyncEntity entity;
185 status.mutable_update_progress()->AddVerifyResult(VERIFY_SUCCESS, entity);
186 status.mutable_commit_message()->mutable_commit(); // Lazy initialization.
187 ASSERT_TRUE(status.mutable_commit_message()->has_commit());
188 status.mutable_commit_response()->mutable_commit();
189 ASSERT_TRUE(status.commit_response().has_commit());
190 status.mutable_updates_response()->mutable_get_updates();
191 ASSERT_TRUE(status.updates_response().has_get_updates());
192
193 std::vector<int64> v;
194 v.push_back(1);
195 status.set_unsynced_handles(v);
196
197 std::vector<syncable::Id> v2;
198 v2.push_back(syncable::Id());
199 status.set_commit_ids(v2);
200
201 EXPECT_TRUE(status.TestAndClearIsDirty());
202 status.ResetTransientState();
203 EXPECT_FALSE(status.TestAndClearIsDirty());
204
205 EXPECT_FALSE(status.conflict_sets_built());
206 EXPECT_FALSE(status.timestamp_dirty());
207 EXPECT_FALSE(status.did_commit_items());
208 EXPECT_FALSE(status.conflicts_resolved());
209 EXPECT_EQ(0, status.update_progress().VerifiedUpdatesSize());
210 EXPECT_FALSE(status.mutable_commit_message()->has_commit());
211 EXPECT_FALSE(status.commit_response().has_commit());
212 EXPECT_FALSE(status.updates_response().has_get_updates());
213 }
214
215 TEST_F(StatusControllerTest, HasConflictingUpdates) {
216 StatusController status;
217 EXPECT_FALSE(status.update_progress().HasConflictingUpdates());
218 status.mutable_update_progress()->AddAppliedUpdate(SUCCESS, syncable::Id());
219 status.mutable_update_progress()->AddAppliedUpdate(CONFLICT, syncable::Id());
220 EXPECT_TRUE(status.update_progress().HasConflictingUpdates());
221 }
222
223 TEST_F(StatusControllerTest, CountUpdates) {
224 StatusController status;
225 EXPECT_EQ(0, status.CountUpdates());
226 EXPECT_TRUE(status.got_zero_updates());
227 ClientToServerResponse* response(status.mutable_updates_response());
228 sync_pb::SyncEntity* entity1 = response->mutable_get_updates()->add_entries();
229 sync_pb::SyncEntity* entity2 = response->mutable_get_updates()->add_entries();
230 ASSERT_TRUE(entity1 != NULL && entity2 != NULL);
231 EXPECT_EQ(2, status.CountUpdates());
232 EXPECT_FALSE(status.got_zero_updates());
233 }
234
235 } // namespace sessions
236 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/sessions/status_controller.cc ('k') | chrome/browser/sync/sessions/sync_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698