Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #include <algorithm> | 5 #include <algorithm> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 503 // triggered. This is a regression test for http://crbug.com/117469. | 503 // triggered. This is a regression test for http://crbug.com/117469. |
| 504 TEST_F(SequencedWorkerPoolTest, SpuriousWorkSignal) { | 504 TEST_F(SequencedWorkerPoolTest, SpuriousWorkSignal) { |
| 505 EnsureAllWorkersCreated(); | 505 EnsureAllWorkersCreated(); |
| 506 int old_has_work_call_count = has_work_call_count(); | 506 int old_has_work_call_count = has_work_call_count(); |
| 507 pool()->SignalHasWorkForTesting(); | 507 pool()->SignalHasWorkForTesting(); |
| 508 // This is inherently racy, but can only produce false positives. | 508 // This is inherently racy, but can only produce false positives. |
| 509 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(100)); | 509 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(100)); |
| 510 EXPECT_EQ(old_has_work_call_count + 1, has_work_call_count()); | 510 EXPECT_EQ(old_has_work_call_count + 1, has_work_call_count()); |
| 511 } | 511 } |
| 512 | 512 |
| 513 static void IsRunningOnCurrentThreadTask( | |
|
akalin
2012/03/28 20:24:09
nit: no static needed since you're already in anon
michaeln
2012/03/30 22:35:28
Done.
| |
| 514 SequencedWorkerPool::SequenceToken test_positive_token, | |
| 515 SequencedWorkerPool::SequenceToken test_negative_token, | |
| 516 SequencedWorkerPool* pool, | |
|
akalin
2012/03/28 20:24:09
any particular reason this takes a raw pointer ins
michaeln
2012/03/30 22:35:28
I updated the base::Bind callsites to not use Unre
| |
| 517 SequencedWorkerPool* unused_pool) { | |
| 518 EXPECT_TRUE(pool->RunsTasksOnCurrentThread()); | |
| 519 EXPECT_TRUE(pool->IsRunningSequenceOnCurrentThread(test_positive_token)); | |
| 520 EXPECT_FALSE(pool->IsRunningSequenceOnCurrentThread(test_negative_token)); | |
| 521 EXPECT_FALSE(unused_pool->RunsTasksOnCurrentThread()); | |
| 522 EXPECT_FALSE( | |
| 523 unused_pool->IsRunningSequenceOnCurrentThread(test_positive_token)); | |
| 524 EXPECT_FALSE( | |
| 525 unused_pool->IsRunningSequenceOnCurrentThread(test_negative_token)); | |
| 526 } | |
| 527 | |
| 528 TEST_F(SequencedWorkerPoolTest, IsRunningOnCurrentThread) { | |
|
akalin
2012/03/28 20:24:09
add test-level comment explaining what the test is
michaeln
2012/03/30 22:35:28
Done.
| |
| 529 SequencedWorkerPool::SequenceToken token1 = pool()->GetSequenceToken(); | |
| 530 SequencedWorkerPool::SequenceToken token2 = pool()->GetSequenceToken(); | |
| 531 SequencedWorkerPool::SequenceToken unsequenced_token; | |
| 532 | |
| 533 scoped_refptr<SequencedWorkerPool> unused_pool = | |
| 534 new SequencedWorkerPool(2, "unused_pool"); | |
| 535 EXPECT_TRUE(token1.Equals(unused_pool->GetSequenceToken())); | |
| 536 EXPECT_TRUE(token2.Equals(unused_pool->GetSequenceToken())); | |
| 537 | |
| 538 EXPECT_FALSE(pool()->RunsTasksOnCurrentThread()); | |
| 539 EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(token1)); | |
| 540 EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(token2)); | |
| 541 EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(unsequenced_token)); | |
| 542 EXPECT_FALSE(unused_pool->RunsTasksOnCurrentThread()); | |
| 543 EXPECT_FALSE(unused_pool->IsRunningSequenceOnCurrentThread(token1)); | |
| 544 EXPECT_FALSE(unused_pool->IsRunningSequenceOnCurrentThread(token2)); | |
| 545 EXPECT_FALSE( | |
| 546 unused_pool->IsRunningSequenceOnCurrentThread(unsequenced_token)); | |
| 547 | |
| 548 pool()->PostSequencedWorkerTask( | |
| 549 token1, FROM_HERE, | |
| 550 base::Bind(&IsRunningOnCurrentThreadTask, | |
| 551 token1, token2, | |
| 552 base::Unretained(pool().get()), | |
| 553 base::Unretained(unused_pool.get()))); | |
| 554 pool()->PostSequencedWorkerTask( | |
| 555 token2, FROM_HERE, | |
| 556 base::Bind(&IsRunningOnCurrentThreadTask, | |
| 557 token2, unsequenced_token, | |
| 558 base::Unretained(pool().get()), | |
| 559 base::Unretained(unused_pool.get()))); | |
| 560 pool()->PostWorkerTask( | |
| 561 FROM_HERE, | |
| 562 base::Bind(&IsRunningOnCurrentThreadTask, | |
| 563 unsequenced_token, token1, | |
| 564 base::Unretained(pool().get()), | |
| 565 base::Unretained(unused_pool.get()))); | |
| 566 pool()->Shutdown(); | |
| 567 unused_pool->Shutdown(); | |
| 568 } | |
| 569 | |
| 513 class SequencedWorkerPoolTaskRunnerTestDelegate { | 570 class SequencedWorkerPoolTaskRunnerTestDelegate { |
| 514 public: | 571 public: |
| 515 SequencedWorkerPoolTaskRunnerTestDelegate() {} | 572 SequencedWorkerPoolTaskRunnerTestDelegate() {} |
| 516 | 573 |
| 517 ~SequencedWorkerPoolTaskRunnerTestDelegate() {} | 574 ~SequencedWorkerPoolTaskRunnerTestDelegate() {} |
| 518 | 575 |
| 519 void StartTaskRunner() { | 576 void StartTaskRunner() { |
| 520 pool_owner_.reset( | 577 pool_owner_.reset( |
| 521 new SequencedWorkerPoolOwner(10, "SequencedWorkerPoolTaskRunnerTest")); | 578 new SequencedWorkerPoolOwner(10, "SequencedWorkerPoolTaskRunnerTest")); |
| 522 } | 579 } |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 542 scoped_ptr<SequencedWorkerPoolOwner> pool_owner_; | 599 scoped_ptr<SequencedWorkerPoolOwner> pool_owner_; |
| 543 }; | 600 }; |
| 544 | 601 |
| 545 INSTANTIATE_TYPED_TEST_CASE_P( | 602 INSTANTIATE_TYPED_TEST_CASE_P( |
| 546 SequencedWorkerPool, TaskRunnerTest, | 603 SequencedWorkerPool, TaskRunnerTest, |
| 547 SequencedWorkerPoolTaskRunnerTestDelegate); | 604 SequencedWorkerPoolTaskRunnerTestDelegate); |
| 548 | 605 |
| 549 } // namespace | 606 } // namespace |
| 550 | 607 |
| 551 } // namespace base | 608 } // namespace base |
| OLD | NEW |