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

Side by Side Diff: chrome/browser/safe_browsing/protocol_manager_unittest.cc

Issue 1555953002: Adds backoff and Min Wait Duration compliance to Protocolmanager pver4 handlers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@osb-pm-2
Patch Set: Rebase Created 4 years, 11 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
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 5
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/base64.h" 8 #include "base/base64.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 pm->HandleGetHashError(now); 247 pm->HandleGetHashError(now);
248 EXPECT_EQ(6U, pm->gethash_error_count_); 248 EXPECT_EQ(6U, pm->gethash_error_count_);
249 EXPECT_TRUE(pm->next_gethash_time_ == now + TimeDelta::FromMinutes(480)); 249 EXPECT_TRUE(pm->next_gethash_time_ == now + TimeDelta::FromMinutes(480));
250 250
251 // 7 errors. 251 // 7 errors.
252 pm->HandleGetHashError(now); 252 pm->HandleGetHashError(now);
253 EXPECT_EQ(7U, pm->gethash_error_count_); 253 EXPECT_EQ(7U, pm->gethash_error_count_);
254 EXPECT_TRUE(pm->next_gethash_time_== now + TimeDelta::FromMinutes(480)); 254 EXPECT_TRUE(pm->next_gethash_time_== now + TimeDelta::FromMinutes(480));
255 } 255 }
256 256
257 TEST_F(SafeBrowsingProtocolManagerTest, TestGetV4HashBackOffTimes) {
258 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL));
259
260 // No errors or back off time yet.
261 EXPECT_EQ(0U, pm->gethash_v4_error_count_);
262 EXPECT_EQ(1U, pm->gethash_v4_back_off_mult_);
263 Time now = Time::Now();
264 EXPECT_TRUE(pm->next_gethash_v4_time_ < now);
265
266 // 1 error.
267 pm->HandleGetHashV4Error(now);
268 EXPECT_EQ(1U, pm->gethash_v4_error_count_);
269 EXPECT_EQ(1U, pm->gethash_v4_back_off_mult_);
270 EXPECT_TRUE(pm->next_gethash_v4_time_ >= now + TimeDelta::FromMinutes(15) &&
Nathan Parker 2016/01/07 06:06:58 These should probably use EXPECT_GE and EXPECT_LE,
kcarattini 2016/01/07 06:48:53 Done.
271 pm->next_gethash_v4_time_ <= now + TimeDelta::FromMinutes(30));
272
273 // 2 errors.
274 pm->HandleGetHashV4Error(now);
275 EXPECT_EQ(2U, pm->gethash_v4_error_count_);
276 EXPECT_EQ(2U, pm->gethash_v4_back_off_mult_);
277 EXPECT_TRUE(pm->next_gethash_v4_time_ >= now + TimeDelta::FromMinutes(30) &&
278 pm->next_gethash_v4_time_ <= now + TimeDelta::FromMinutes(60));
279
280 // 3 errors.
281 pm->HandleGetHashV4Error(now);
282 EXPECT_EQ(3U, pm->gethash_v4_error_count_);
283 EXPECT_EQ(4U, pm->gethash_v4_back_off_mult_);
284 EXPECT_TRUE(pm->next_gethash_v4_time_ >= now + TimeDelta::FromMinutes(60) &&
285 pm->next_gethash_v4_time_ <= now + TimeDelta::FromMinutes(120));
286
287 // 4 errors.
288 pm->HandleGetHashV4Error(now);
289 EXPECT_EQ(4U, pm->gethash_v4_error_count_);
290 EXPECT_EQ(8U, pm->gethash_v4_back_off_mult_);
291 EXPECT_TRUE(pm->next_gethash_v4_time_ >= now + TimeDelta::FromMinutes(120) &&
292 pm->next_gethash_v4_time_ <= now + TimeDelta::FromMinutes(240));
293
294 // 5 errors.
295 pm->HandleGetHashV4Error(now);
296 EXPECT_EQ(5U, pm->gethash_v4_error_count_);
297 EXPECT_EQ(16U, pm->gethash_v4_back_off_mult_);
298 EXPECT_TRUE(pm->next_gethash_v4_time_ >= now + TimeDelta::FromMinutes(240) &&
299 pm->next_gethash_v4_time_ <= now + TimeDelta::FromMinutes(480));
300
301 // 6 errors.
302 pm->HandleGetHashV4Error(now);
303 EXPECT_EQ(6U, pm->gethash_v4_error_count_);
304 EXPECT_EQ(32U, pm->gethash_v4_back_off_mult_);
305 EXPECT_TRUE(pm->next_gethash_v4_time_ >= now + TimeDelta::FromMinutes(480) &&
306 pm->next_gethash_v4_time_ <= now + TimeDelta::FromMinutes(960));
307
308 // 7 errors.
309 pm->HandleGetHashV4Error(now);
310 EXPECT_EQ(7U, pm->gethash_v4_error_count_);
311 EXPECT_EQ(64U, pm->gethash_v4_back_off_mult_);
312 EXPECT_TRUE(pm->next_gethash_v4_time_ >= now + TimeDelta::FromMinutes(960) &&
313 pm->next_gethash_v4_time_ <= now + TimeDelta::FromMinutes(1920));
314
315 // 8 errors, reached max backoff.
316 pm->HandleGetHashV4Error(now);
317 EXPECT_EQ(8U, pm->gethash_v4_error_count_);
318 EXPECT_EQ(128U, pm->gethash_v4_back_off_mult_);
319 EXPECT_TRUE(pm->next_gethash_v4_time_ == now + TimeDelta::FromHours(24));
Nathan Parker 2016/01/07 06:06:58 EXPECT_EQ
kcarattini 2016/01/07 06:48:53 Done.
320 }
321
257 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashUrl) { 322 TEST_F(SafeBrowsingProtocolManagerTest, TestGetHashUrl) {
258 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL)); 323 scoped_ptr<SafeBrowsingProtocolManager> pm(CreateProtocolManager(NULL));
259 324
260 EXPECT_EQ( 325 EXPECT_EQ(
261 "https://prefix.com/foo/gethash?client=unittest&appver=1.0&" 326 "https://prefix.com/foo/gethash?client=unittest&appver=1.0&"
262 "pver=3.0" + 327 "pver=3.0" +
263 key_param_ + "&ext=0", 328 key_param_ + "&ext=0",
264 pm->GetHashUrl(false).spec()); 329 pm->GetHashUrl(false).spec());
265 330
266 pm->set_additional_query(kAdditionalQuery); 331 pm->set_additional_query(kAdditionalQuery);
(...skipping 1042 matching lines...) Expand 10 before | Expand all | Expand 10 after
1309 1374
1310 EXPECT_FALSE(pm->IsUpdateScheduled()); 1375 EXPECT_FALSE(pm->IsUpdateScheduled());
1311 1376
1312 // Invoke the AddChunksCallback to finish the update. 1377 // Invoke the AddChunksCallback to finish the update.
1313 runner->RunPendingTasks(); 1378 runner->RunPendingTasks();
1314 1379
1315 EXPECT_TRUE(pm->IsUpdateScheduled()); 1380 EXPECT_TRUE(pm->IsUpdateScheduled());
1316 } 1381 }
1317 1382
1318 } // namespace safe_browsing 1383 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698