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

Side by Side Diff: components/domain_reliability/scheduler_unittest.cc

Issue 272773004: Domain Reliability: Don't clear "upload pending" bit until upload starts (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebase Created 6 years, 7 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
« no previous file with comments | « components/domain_reliability/scheduler.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/domain_reliability/scheduler.h" 5 #include "components/domain_reliability/scheduler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "components/domain_reliability/config.h" 9 #include "components/domain_reliability/config.h"
10 #include "components/domain_reliability/test_util.h" 10 #include "components/domain_reliability/test_util.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 << callback_max_.InSeconds() << " seconds from now"; 56 << callback_max_.InSeconds() << " seconds from now";
57 } 57 }
58 58
59 ::testing::AssertionResult CheckPendingUpload(TimeDelta expected_min, 59 ::testing::AssertionResult CheckPendingUpload(TimeDelta expected_min,
60 TimeDelta expected_max) { 60 TimeDelta expected_max) {
61 DCHECK(scheduler_); 61 DCHECK(scheduler_);
62 DCHECK_LE(expected_min.InMicroseconds(), expected_max.InMicroseconds()); 62 DCHECK_LE(expected_min.InMicroseconds(), expected_max.InMicroseconds());
63 63
64 if (callback_called_ && expected_min == callback_min_ 64 if (callback_called_ && expected_min == callback_min_
65 && expected_max == callback_max_) { 65 && expected_max == callback_max_) {
66 callback_called_ = false;
66 return ::testing::AssertionSuccess(); 67 return ::testing::AssertionSuccess();
67 } 68 }
68 69
69 if (callback_called_) { 70 if (callback_called_) {
70 return ::testing::AssertionFailure() 71 return ::testing::AssertionFailure()
71 << "expected upload between " << expected_min.InSeconds() 72 << "expected upload between " << expected_min.InSeconds()
72 << " and " << expected_max.InSeconds() << " seconds from now, " 73 << " and " << expected_max.InSeconds() << " seconds from now, "
73 << "got upload between " << callback_min_.InSeconds() 74 << "got upload between " << callback_min_.InSeconds()
74 << " and " << callback_max_.InSeconds() << " seconds from now"; 75 << " and " << callback_max_.InSeconds() << " seconds from now";
75 } else { 76 } else {
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 scheduler_->OnUploadComplete(false); 204 scheduler_->OnUploadComplete(false);
204 205
205 ASSERT_TRUE(CheckPendingUpload(zero_delta(), max_delay() - min_delay())); 206 ASSERT_TRUE(CheckPendingUpload(zero_delta(), max_delay() - min_delay()));
206 time_.Advance(retry_interval()); 207 time_.Advance(retry_interval());
207 208
208 // T = min_delay + retry_interval; collector 0 should be active again. 209 // T = min_delay + retry_interval; collector 0 should be active again.
209 ASSERT_TRUE(CheckStartingUpload(0)); 210 ASSERT_TRUE(CheckStartingUpload(0));
210 scheduler_->OnUploadComplete(true); 211 scheduler_->OnUploadComplete(true);
211 } 212 }
212 213
214 TEST_F(DomainReliabilitySchedulerTest, BeaconWhilePending) {
215 CreateScheduler(1);
216
217 scheduler_->OnBeaconAdded();
218 ASSERT_TRUE(CheckPendingUpload(min_delay(), max_delay()));
219
220 // Second beacon should not call callback again.
221 scheduler_->OnBeaconAdded();
222 ASSERT_TRUE(CheckNoPendingUpload());
223 time_.Advance(min_delay());
224
225 // No pending upload after beacon.
226 ASSERT_TRUE(CheckStartingUpload(0));
227 scheduler_->OnUploadComplete(true);
228 ASSERT_TRUE(CheckNoPendingUpload());
229 }
230
231 TEST_F(DomainReliabilitySchedulerTest, BeaconWhileUploading) {
232 CreateScheduler(1);
233
234 scheduler_->OnBeaconAdded();
235 ASSERT_TRUE(CheckPendingUpload(min_delay(), max_delay()));
236 time_.Advance(min_delay());
237
238 // If a beacon arrives during the upload, a new upload should be pending.
239 ASSERT_TRUE(CheckStartingUpload(0));
240 scheduler_->OnBeaconAdded();
241 scheduler_->OnUploadComplete(true);
242 ASSERT_TRUE(CheckPendingUpload(min_delay(), max_delay()));
243
244 time_.Advance(min_delay());
245 ASSERT_TRUE(CheckStartingUpload(0));
246 scheduler_->OnUploadComplete(true);
247 ASSERT_TRUE(CheckNoPendingUpload());
248 }
249
213 } // namespace domain_reliability 250 } // namespace domain_reliability
OLDNEW
« no previous file with comments | « components/domain_reliability/scheduler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698