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

Side by Side Diff: components/reading_list/ios/reading_list_entry_unittest.cc

Issue 2722163002: Fix ReadingListEntry flaky unittests. (Closed)
Patch Set: clean Created 3 years, 9 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 | « no previous file | 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/reading_list/ios/reading_list_entry.h" 5 #include "components/reading_list/ios/reading_list_entry.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/test/ios/wait_util.h" 8 #include "base/test/ios/wait_util.h"
9 #include "base/test/simple_test_tick_clock.h" 9 #include "base/test/simple_test_tick_clock.h"
10 #include "components/reading_list/ios/proto/reading_list.pb.h" 10 #include "components/reading_list/ios/proto/reading_list.pb.h"
11 #include "components/sync/protocol/reading_list_specifics.pb.h" 11 #include "components/sync/protocol/reading_list_specifics.pb.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 namespace { 14 namespace {
15 const int kFirstBackoff = 10; 15 const int kFirstBackoff = 10;
16 const int kSecondBackoff = 10; 16 const int kSecondBackoff = 10;
17 const int kThirdBackoff = 60; 17 const int kThirdBackoff = 60;
18 const int kFourthBackoff = 120; 18 const int kFourthBackoff = 120;
19 const int kFifthBackoff = 120; 19 const int kFifthBackoff = 120;
20 20
21 // Returns the number of microseconds since Jan 1st 1970.
22 int64_t Now() {
23 return (base::Time::Now() - base::Time::UnixEpoch()).InMicroseconds();
24 }
25 } // namespace 21 } // namespace
26 22
27 TEST(ReadingListEntry, CompareIgnoreTitle) { 23 TEST(ReadingListEntry, CompareIgnoreTitle) {
28 const ReadingListEntry e1(GURL("http://example.com"), "bar"); 24 const ReadingListEntry e1(GURL("http://example.com"), "bar");
29 const ReadingListEntry e2(GURL("http://example.com"), "foo"); 25 const ReadingListEntry e2(GURL("http://example.com"), "foo");
30 26
31 EXPECT_EQ(e1, e2); 27 EXPECT_EQ(e1, e2);
32 } 28 }
33 29
34 TEST(ReadingListEntry, CompareFailureIgnoreTitle) { 30 TEST(ReadingListEntry, CompareFailureIgnoreTitle) {
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 EXPECT_EQ(distilled_pb_entry->failed_download_counter(), 0); 311 EXPECT_EQ(distilled_pb_entry->failed_download_counter(), 0);
316 EXPECT_EQ(distilled_pb_entry->distillation_time_us(), 312 EXPECT_EQ(distilled_pb_entry->distillation_time_us(),
317 entry.DistillationTime()); 313 entry.DistillationTime());
318 EXPECT_EQ(distilled_pb_entry->distillation_size(), entry.DistillationSize()); 314 EXPECT_EQ(distilled_pb_entry->distillation_size(), entry.DistillationSize());
319 } 315 }
320 316
321 // Tests that the reading list entry is correctly parsed from 317 // Tests that the reading list entry is correctly parsed from
322 // sync_pb::ReadingListLocal. 318 // sync_pb::ReadingListLocal.
323 TEST(ReadingListEntry, FromReadingListLocal) { 319 TEST(ReadingListEntry, FromReadingListLocal) {
324 ReadingListEntry entry(GURL("http://example.com/"), "title"); 320 ReadingListEntry entry(GURL("http://example.com/"), "title");
325 base::Time next_call = base::Time::Now() + entry.TimeUntilNextTry(); 321 entry.SetDistilledState(ReadingListEntry::ERROR);
326 322
327 std::unique_ptr<reading_list::ReadingListLocal> pb_entry( 323 std::unique_ptr<reading_list::ReadingListLocal> pb_entry(
328 entry.AsReadingListLocal()); 324 entry.AsReadingListLocal());
329 int64_t now = Now(); 325 int64_t now = 12345;
330 326
331 pb_entry->set_entry_id("http://example.com/"); 327 pb_entry->set_entry_id("http://example.com/");
332 pb_entry->set_url("http://example.com/"); 328 pb_entry->set_url("http://example.com/");
333 pb_entry->set_title("title"); 329 pb_entry->set_title("title");
334 pb_entry->set_creation_time_us(1); 330 pb_entry->set_creation_time_us(1);
335 pb_entry->set_update_time_us(2); 331 pb_entry->set_update_time_us(2);
336 pb_entry->set_status(reading_list::ReadingListLocal::UNREAD); 332 pb_entry->set_status(reading_list::ReadingListLocal::UNREAD);
337 pb_entry->set_distillation_state(reading_list::ReadingListLocal::WAITING); 333 pb_entry->set_distillation_state(reading_list::ReadingListLocal::WAITING);
338 pb_entry->set_failed_download_counter(2); 334 pb_entry->set_failed_download_counter(2);
339 pb_entry->set_distillation_time_us(now); 335 pb_entry->set_distillation_time_us(now);
340 pb_entry->set_distillation_size(50); 336 pb_entry->set_distillation_size(50);
341 337
342 std::unique_ptr<ReadingListEntry> waiting_entry( 338 std::unique_ptr<ReadingListEntry> waiting_entry(
343 ReadingListEntry::FromReadingListLocal(*pb_entry)); 339 ReadingListEntry::FromReadingListLocal(*pb_entry));
344 EXPECT_EQ(waiting_entry->URL().spec(), "http://example.com/"); 340 EXPECT_EQ(waiting_entry->URL().spec(), "http://example.com/");
345 EXPECT_EQ(waiting_entry->Title(), "title"); 341 EXPECT_EQ(waiting_entry->Title(), "title");
346 EXPECT_EQ(waiting_entry->UpdateTime(), 2); 342 EXPECT_EQ(waiting_entry->UpdateTime(), 2);
347 EXPECT_EQ(waiting_entry->FailedDownloadCounter(), 2); 343 EXPECT_EQ(waiting_entry->FailedDownloadCounter(), 2);
348 EXPECT_EQ(waiting_entry->DistilledState(), ReadingListEntry::WAITING); 344 EXPECT_EQ(waiting_entry->DistilledState(), ReadingListEntry::WAITING);
349 EXPECT_EQ(waiting_entry->DistilledPath(), base::FilePath()); 345 EXPECT_EQ(waiting_entry->DistilledPath(), base::FilePath());
350 EXPECT_EQ(waiting_entry->DistillationSize(), 50); 346 EXPECT_EQ(waiting_entry->DistillationSize(), 50);
351 EXPECT_EQ(waiting_entry->DistillationTime(), now); 347 EXPECT_EQ(waiting_entry->DistillationTime(), now);
352 base::Time waiting_next_call = 348 double fuzzing = ReadingListEntry::kBackoffPolicy.jitter_factor;
353 base::Time::Now() + waiting_entry->TimeUntilNextTry(); 349 int nextTry = waiting_entry->TimeUntilNextTry().InMinutes();
354 base::TimeDelta delta = next_call - waiting_next_call; 350 EXPECT_NEAR(kFirstBackoff, nextTry, kFirstBackoff * fuzzing);
355 EXPECT_NEAR(delta.InMillisecondsRoundedUp(), 0, 10);
356 } 351 }
357 352
358 // Tests the merging of two ReadingListEntry. 353 // Tests the merging of two ReadingListEntry.
359 // Additional merging tests are done in 354 // Additional merging tests are done in
360 // ReadingListStoreTest.CompareEntriesForSync 355 // ReadingListStoreTest.CompareEntriesForSync
361 TEST(ReadingListEntry, MergeWithEntry) { 356 TEST(ReadingListEntry, MergeWithEntry) {
362 ReadingListEntry local_entry(GURL("http://example.com/"), "title"); 357 ReadingListEntry local_entry(GURL("http://example.com/"), "title");
363 local_entry.SetDistilledState(ReadingListEntry::ERROR); 358 local_entry.SetDistilledState(ReadingListEntry::ERROR);
364 base::Time next_call = base::Time::Now() + local_entry.TimeUntilNextTry();
365 int64_t local_update_time_us = local_entry.UpdateTime(); 359 int64_t local_update_time_us = local_entry.UpdateTime();
366 360
367 ReadingListEntry sync_entry(GURL("http://example.com/"), "title2"); 361 ReadingListEntry sync_entry(GURL("http://example.com/"), "title2");
368 sync_entry.SetDistilledState(ReadingListEntry::ERROR); 362 sync_entry.SetDistilledState(ReadingListEntry::ERROR);
369 int64_t sync_update_time_us = sync_entry.UpdateTime(); 363 int64_t sync_update_time_us = sync_entry.UpdateTime();
370 EXPECT_NE(local_update_time_us, sync_update_time_us); 364 EXPECT_NE(local_update_time_us, sync_update_time_us);
371 local_entry.MergeWithEntry(sync_entry); 365 local_entry.MergeWithEntry(sync_entry);
372 EXPECT_EQ(local_entry.URL().spec(), "http://example.com/"); 366 EXPECT_EQ(local_entry.URL().spec(), "http://example.com/");
373 EXPECT_EQ(local_entry.Title(), "title2"); 367 EXPECT_EQ(local_entry.Title(), "title2");
374 EXPECT_FALSE(local_entry.HasBeenSeen()); 368 EXPECT_FALSE(local_entry.HasBeenSeen());
375 EXPECT_EQ(local_entry.UpdateTime(), sync_update_time_us); 369 EXPECT_EQ(local_entry.UpdateTime(), sync_update_time_us);
376 EXPECT_EQ(local_entry.FailedDownloadCounter(), 1); 370 EXPECT_EQ(local_entry.FailedDownloadCounter(), 1);
377 EXPECT_EQ(local_entry.DistilledState(), ReadingListEntry::ERROR); 371 EXPECT_EQ(local_entry.DistilledState(), ReadingListEntry::ERROR);
378 base::Time merge_next_call = 372 double fuzzing = ReadingListEntry::kBackoffPolicy.jitter_factor;
379 base::Time::Now() + local_entry.TimeUntilNextTry(); 373 int nextTry = local_entry.TimeUntilNextTry().InMinutes();
380 base::TimeDelta delta = merge_next_call - next_call; 374 EXPECT_NEAR(kFirstBackoff, nextTry, kFirstBackoff * fuzzing);
381 EXPECT_NEAR(delta.InMillisecondsRoundedUp(), 0, 10);
382 } 375 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698