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

Side by Side Diff: cc/test/ordered_simple_task_runner_unittest.cc

Issue 1178423008: Provision to start base::SimpleTestTickClock at initial ticks Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
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 <string> 5 #include <string>
6 6
7 #include "base/cancelable_callback.h" 7 #include "base/cancelable_callback.h"
8 #include "base/format_macros.h" 8 #include "base/format_macros.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 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilIdle(), ""); 288 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilIdle(), "");
289 } 289 }
290 290
291 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeAutoNow) { 291 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeAutoNow) {
292 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); 292 PostTaskWhichPostsInstantTask(1, base::TimeDelta());
293 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); 293 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2));
294 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); 294 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3));
295 295
296 task_runner_->SetAutoAdvanceNowToPendingTasks(true); 296 task_runner_->SetAutoAdvanceNowToPendingTasks(true);
297 297
298 base::TimeTicks run_at = base::TimeTicks(); 298 // SimpleTestTickClock starts at 1 microsecond
299 base::TimeTicks run_at =
300 base::TimeTicks() + base::TimeDelta::FromMicroseconds(1);
299 301
300 run_at += base::TimeDelta::FromMilliseconds(2); 302 run_at += base::TimeDelta::FromMilliseconds(2);
301 RUN_AND_CHECK_RESULT( 303 RUN_AND_CHECK_RESULT(
302 EXPECT_TRUE, RunUntilTime(run_at), "1(0ms) -1(0ms) 2(2ms) -2(2ms)"); 304 EXPECT_TRUE, RunUntilTime(run_at), "1(0ms) -1(0ms) 2(2ms) -2(2ms)");
303 EXPECT_EQ(run_at, now_src_->NowTicks()); 305 EXPECT_EQ(run_at, now_src_->NowTicks());
304 306
305 run_at += base::TimeDelta::FromMilliseconds(1); 307 run_at += base::TimeDelta::FromMilliseconds(1);
306 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "3(3ms) -3(3ms)"); 308 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "3(3ms) -3(3ms)");
307 EXPECT_EQ(run_at, now_src_->NowTicks()); 309 EXPECT_EQ(run_at, now_src_->NowTicks());
308 310
309 run_at += base::TimeDelta::FromMilliseconds(1); 311 run_at += base::TimeDelta::FromMilliseconds(1);
310 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), ""); 312 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "");
311 EXPECT_EQ(run_at, now_src_->NowTicks()); 313 EXPECT_EQ(run_at, now_src_->NowTicks());
312 } 314 }
313 315
314 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeManualNow) { 316 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeManualNow) {
315 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); 317 PostTaskWhichPostsInstantTask(1, base::TimeDelta());
316 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); 318 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2));
317 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); 319 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3));
318 320
319 task_runner_->SetAutoAdvanceNowToPendingTasks(false); 321 task_runner_->SetAutoAdvanceNowToPendingTasks(false);
320 322
321 base::TimeTicks run_at = base::TimeTicks(); 323 // SimpleTestTickClock starts at 1 microsecond
324 base::TimeTicks run_at =
325 base::TimeTicks() + base::TimeDelta::FromMicroseconds(1);
322 326
323 run_at += base::TimeDelta::FromMilliseconds(2); 327 run_at += base::TimeDelta::FromMilliseconds(2);
324 RUN_AND_CHECK_RESULT( 328 RUN_AND_CHECK_RESULT(
325 EXPECT_TRUE, RunUntilTime(run_at), "1(2ms) 2(2ms) -1(2ms) -2(2ms)"); 329 EXPECT_TRUE, RunUntilTime(run_at), "1(2ms) 2(2ms) -1(2ms) -2(2ms)");
326 EXPECT_EQ(run_at, now_src_->NowTicks()); 330 EXPECT_EQ(run_at, now_src_->NowTicks());
327 331
328 run_at += base::TimeDelta::FromMilliseconds(1); 332 run_at += base::TimeDelta::FromMilliseconds(1);
329 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "3(3ms) -3(3ms)"); 333 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "3(3ms) -3(3ms)");
330 EXPECT_EQ(run_at, now_src_->NowTicks()); 334 EXPECT_EQ(run_at, now_src_->NowTicks());
331 335
332 run_at += base::TimeDelta::FromMilliseconds(1); 336 run_at += base::TimeDelta::FromMilliseconds(1);
333 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), ""); 337 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_at), "");
334 EXPECT_EQ(run_at, now_src_->NowTicks()); 338 EXPECT_EQ(run_at, now_src_->NowTicks());
335 } 339 }
336 340
337 TEST_F(OrderedSimpleTaskRunnerTest, RunForPeriod) { 341 TEST_F(OrderedSimpleTaskRunnerTest, RunForPeriod) {
338 PostTaskWhichPostsInstantTask(1, base::TimeDelta()); 342 PostTaskWhichPostsInstantTask(1, base::TimeDelta());
339 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2)); 343 PostTaskWhichPostsInstantTask(2, base::TimeDelta::FromMilliseconds(2));
340 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3)); 344 PostTaskWhichPostsInstantTask(3, base::TimeDelta::FromMilliseconds(3));
341 345
342 RUN_AND_CHECK_RESULT(EXPECT_TRUE, 346 RUN_AND_CHECK_RESULT(EXPECT_TRUE,
343 RunForPeriod(base::TimeDelta::FromMilliseconds(2)), 347 RunForPeriod(base::TimeDelta::FromMilliseconds(2)),
344 "1(0ms) -1(0ms) 2(2ms) -2(2ms)"); 348 "1(0ms) -1(0ms) 2(2ms) -2(2ms)");
345 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMilliseconds(2), 349 // SimpleTestTickClock starts at 1 microsecond
350 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1) +
351 base::TimeDelta::FromMilliseconds(2),
346 now_src_->NowTicks()); 352 now_src_->NowTicks());
347 353
348 RUN_AND_CHECK_RESULT(EXPECT_FALSE, 354 RUN_AND_CHECK_RESULT(EXPECT_FALSE,
349 RunForPeriod(base::TimeDelta::FromMilliseconds(1)), 355 RunForPeriod(base::TimeDelta::FromMilliseconds(1)),
350 "3(3ms) -3(3ms)"); 356 "3(3ms) -3(3ms)");
351 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMilliseconds(3), 357 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1) +
358 base::TimeDelta::FromMilliseconds(3),
352 now_src_->NowTicks()); 359 now_src_->NowTicks());
353 360
354 RUN_AND_CHECK_RESULT( 361 RUN_AND_CHECK_RESULT(
355 EXPECT_FALSE, RunForPeriod(base::TimeDelta::FromMilliseconds(1)), ""); 362 EXPECT_FALSE, RunForPeriod(base::TimeDelta::FromMilliseconds(1)), "");
356 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMilliseconds(4), 363 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1) +
364 base::TimeDelta::FromMilliseconds(4),
357 now_src_->NowTicks()); 365 now_src_->NowTicks());
358 } 366 }
359 367
360 TEST_F(OrderedSimpleTaskRunnerTest, RunTasksWhileWithCallback) { 368 TEST_F(OrderedSimpleTaskRunnerTest, RunTasksWhileWithCallback) {
361 base::Callback<bool(void)> return_true = base::Bind(&ReturnTrue); 369 base::Callback<bool(void)> return_true = base::Bind(&ReturnTrue);
362 base::Callback<bool(void)> return_false = base::Bind(&ReturnFalse); 370 base::Callback<bool(void)> return_false = base::Bind(&ReturnFalse);
363 371
364 PostTask(1, base::TimeDelta()); 372 PostTask(1, base::TimeDelta());
365 373
366 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunTasksWhile(return_false), ""); 374 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunTasksWhile(return_false), "");
367 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunTasksWhile(return_true), "1(0ms)"); 375 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunTasksWhile(return_true), "1(0ms)");
368 } 376 }
369 377
370 TEST_F(OrderedSimpleTaskRunnerTest, EmptyTaskList) { 378 TEST_F(OrderedSimpleTaskRunnerTest, EmptyTaskList) {
371 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunPendingTasks(), ""); 379 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunPendingTasks(), "");
372 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilIdle(), ""); 380 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilIdle(), "");
373 381
374 ASSERT_EQ(base::TimeTicks(), now_src_->NowTicks()); 382 // SimpleTestTickClock starts at 1 microsecond
383 ASSERT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1),
384 now_src_->NowTicks());
375 385
376 RUN_AND_CHECK_RESULT( 386 RUN_AND_CHECK_RESULT(
377 EXPECT_FALSE, RunUntilTime(base::TimeTicks::FromInternalValue(100)), ""); 387 EXPECT_FALSE, RunUntilTime(base::TimeTicks::FromInternalValue(100)), "");
378 EXPECT_EQ(base::TimeTicks::FromInternalValue(100), now_src_->NowTicks()); 388 EXPECT_EQ(base::TimeTicks::FromInternalValue(100), now_src_->NowTicks());
379 389
380 RUN_AND_CHECK_RESULT( 390 RUN_AND_CHECK_RESULT(
381 EXPECT_FALSE, RunForPeriod(base::TimeDelta::FromInternalValue(100)), ""); 391 EXPECT_FALSE, RunForPeriod(base::TimeDelta::FromInternalValue(100)), "");
382 EXPECT_EQ(base::TimeTicks::FromInternalValue(200), now_src_->NowTicks()); 392 EXPECT_EQ(base::TimeTicks::FromInternalValue(200), now_src_->NowTicks());
383 393
384 base::Callback<bool(void)> return_true = base::Bind(&ReturnTrue); 394 base::Callback<bool(void)> return_true = base::Bind(&ReturnTrue);
(...skipping 25 matching lines...) Expand all
410 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "1(3ms) 1(6ms) 1(9ms)"); 420 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "1(3ms) 1(6ms) 1(9ms)");
411 421
412 task_runner_->SetRunTaskLimit(2); 422 task_runner_->SetRunTaskLimit(2);
413 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "1(12ms) 1(15ms)"); 423 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "1(12ms) 1(15ms)");
414 424
415 task_runner_->SetRunTaskLimit(0); 425 task_runner_->SetRunTaskLimit(0);
416 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), ""); 426 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilIdle(), "");
417 } 427 }
418 428
419 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeout) { 429 TEST_F(OrderedSimpleTaskRunnerTest, RunUntilTimeout) {
420 base::TimeTicks run_to = base::TimeTicks() + base::TimeDelta::FromSeconds(1); 430 // SimpleTestTickClock starts at 1 microsecond
431 base::TimeTicks run_to = base::TimeTicks() +
432 base::TimeDelta::FromMicroseconds(1) +
433 base::TimeDelta::FromSeconds(1);
421 434
422 PostTask(1, base::TimeDelta::FromMilliseconds(1)); 435 PostTask(1, base::TimeDelta::FromMilliseconds(1));
423 PostTask(2, base::TimeDelta::FromMilliseconds(2)); 436 PostTask(2, base::TimeDelta::FromMilliseconds(2));
424 PostTask(3, base::TimeDelta::FromMilliseconds(3)); 437 PostTask(3, base::TimeDelta::FromMilliseconds(3));
425 PostTask(4, base::TimeDelta::FromMilliseconds(4)); 438 PostTask(4, base::TimeDelta::FromMilliseconds(4));
426 PostTask(5, base::TimeDelta::FromMilliseconds(5)); 439 PostTask(5, base::TimeDelta::FromMilliseconds(5));
427 440
428 EXPECT_EQ(base::TimeTicks(), now_src_->NowTicks()); 441 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1),
442 now_src_->NowTicks());
429 task_runner_->SetRunTaskLimit(3); 443 task_runner_->SetRunTaskLimit(3);
430 RUN_AND_CHECK_RESULT( 444 RUN_AND_CHECK_RESULT(
431 EXPECT_TRUE, RunUntilTime(run_to), "1(1ms) 2(2ms) 3(3ms)"); 445 EXPECT_TRUE, RunUntilTime(run_to), "1(1ms) 2(2ms) 3(3ms)");
432 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMilliseconds(3), 446 EXPECT_EQ(base::TimeTicks() + base::TimeDelta::FromMicroseconds(1) +
447 base::TimeDelta::FromMilliseconds(3),
433 now_src_->NowTicks()); 448 now_src_->NowTicks());
434 449
435 task_runner_->SetRunTaskLimit(0); 450 task_runner_->SetRunTaskLimit(0);
436 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilTime(run_to), ""); 451 RUN_AND_CHECK_RESULT(EXPECT_TRUE, RunUntilTime(run_to), "");
437 452
438 task_runner_->SetRunTaskLimit(100); 453 task_runner_->SetRunTaskLimit(100);
439 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_to), "4(4ms) 5(5ms)"); 454 RUN_AND_CHECK_RESULT(EXPECT_FALSE, RunUntilTime(run_to), "4(4ms) 5(5ms)");
440 EXPECT_EQ(run_to, now_src_->NowTicks()); 455 EXPECT_EQ(run_to, now_src_->NowTicks());
441 } 456 }
442 457
443 } // namespace cc 458 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698