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

Side by Side Diff: base/task_scheduler/task_scheduler_impl_unittest.cc

Issue 2873733003: Introduce SingleThreadTaskRunnerThreadMode (Closed)
Patch Set: Created 3 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
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 "base/task_scheduler/task_scheduler_impl.h" 5 #include "base/task_scheduler/task_scheduler_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 12, 384 12,
385 scheduler_.GetMaxConcurrentTasksWithTraitsDeprecated( 385 scheduler_.GetMaxConcurrentTasksWithTraitsDeprecated(
386 TaskTraits().WithPriority(TaskPriority::USER_BLOCKING).MayBlock())); 386 TaskTraits().WithPriority(TaskPriority::USER_BLOCKING).MayBlock()));
387 } 387 }
388 388
389 // Verify that the RunsTasksOnCurrentThread() method of a SequencedTaskRunner 389 // Verify that the RunsTasksOnCurrentThread() method of a SequencedTaskRunner
390 // returns false when called from a task that isn't part of the sequence. 390 // returns false when called from a task that isn't part of the sequence.
391 TEST_F(TaskSchedulerImplTest, SequencedRunsTasksOnCurrentThread) { 391 TEST_F(TaskSchedulerImplTest, SequencedRunsTasksOnCurrentThread) {
392 StartTaskScheduler(); 392 StartTaskScheduler();
393 auto single_thread_task_runner = 393 auto single_thread_task_runner =
394 scheduler_.CreateSingleThreadTaskRunnerWithTraits(TaskTraits()); 394 scheduler_.CreateSingleThreadTaskRunnerWithTraits(
395 TaskTraits(),
396 TaskScheduler::SingleThreadTaskRunnerThreadMode::SHARED);
395 auto sequenced_task_runner = 397 auto sequenced_task_runner =
396 scheduler_.CreateSequencedTaskRunnerWithTraits(TaskTraits()); 398 scheduler_.CreateSequencedTaskRunnerWithTraits(TaskTraits());
397 399
398 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, 400 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL,
399 WaitableEvent::InitialState::NOT_SIGNALED); 401 WaitableEvent::InitialState::NOT_SIGNALED);
400 single_thread_task_runner->PostTask( 402 single_thread_task_runner->PostTask(
401 FROM_HERE, 403 FROM_HERE,
402 BindOnce( 404 BindOnce(
403 [](scoped_refptr<TaskRunner> sequenced_task_runner, 405 [](scoped_refptr<TaskRunner> sequenced_task_runner,
404 WaitableEvent* task_ran) { 406 WaitableEvent* task_ran) {
405 EXPECT_FALSE(sequenced_task_runner->RunsTasksOnCurrentThread()); 407 EXPECT_FALSE(sequenced_task_runner->RunsTasksOnCurrentThread());
406 task_ran->Signal(); 408 task_ran->Signal();
407 }, 409 },
408 sequenced_task_runner, Unretained(&task_ran))); 410 sequenced_task_runner, Unretained(&task_ran)));
409 task_ran.Wait(); 411 task_ran.Wait();
410 } 412 }
411 413
412 // Verify that the RunsTasksOnCurrentThread() method of a SingleThreadTaskRunner 414 // Verify that the RunsTasksOnCurrentThread() method of a SingleThreadTaskRunner
413 // returns false when called from a task that isn't part of the sequence. 415 // returns false when called from a task that isn't part of the sequence.
414 TEST_F(TaskSchedulerImplTest, SingleThreadRunsTasksOnCurrentThread) { 416 TEST_F(TaskSchedulerImplTest, SingleThreadRunsTasksOnCurrentThread) {
415 StartTaskScheduler(); 417 StartTaskScheduler();
416 auto sequenced_task_runner = 418 auto sequenced_task_runner =
417 scheduler_.CreateSequencedTaskRunnerWithTraits(TaskTraits()); 419 scheduler_.CreateSequencedTaskRunnerWithTraits(TaskTraits());
418 auto single_thread_task_runner = 420 auto single_thread_task_runner =
419 scheduler_.CreateSingleThreadTaskRunnerWithTraits(TaskTraits()); 421 scheduler_.CreateSingleThreadTaskRunnerWithTraits(
422 TaskTraits(),
423 TaskScheduler::SingleThreadTaskRunnerThreadMode::SHARED);
420 424
421 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, 425 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL,
422 WaitableEvent::InitialState::NOT_SIGNALED); 426 WaitableEvent::InitialState::NOT_SIGNALED);
423 sequenced_task_runner->PostTask( 427 sequenced_task_runner->PostTask(
424 FROM_HERE, 428 FROM_HERE,
425 BindOnce( 429 BindOnce(
426 [](scoped_refptr<TaskRunner> single_thread_task_runner, 430 [](scoped_refptr<TaskRunner> single_thread_task_runner,
427 WaitableEvent* task_ran) { 431 WaitableEvent* task_ran) {
428 EXPECT_FALSE(single_thread_task_runner->RunsTasksOnCurrentThread()); 432 EXPECT_FALSE(single_thread_task_runner->RunsTasksOnCurrentThread());
429 task_ran->Signal(); 433 task_ran->Signal();
430 }, 434 },
431 single_thread_task_runner, Unretained(&task_ran))); 435 single_thread_task_runner, Unretained(&task_ran)));
432 task_ran.Wait(); 436 task_ran.Wait();
433 } 437 }
434 438
435 #if defined(OS_WIN) 439 #if defined(OS_WIN)
436 TEST_F(TaskSchedulerImplTest, COMSTATaskRunnersRunWithCOMSTA) { 440 TEST_F(TaskSchedulerImplTest, COMSTATaskRunnersRunWithCOMSTA) {
437 StartTaskScheduler(); 441 StartTaskScheduler();
438 auto com_sta_task_runner = 442 auto com_sta_task_runner = scheduler_.CreateCOMSTATaskRunnerWithTraits(
439 scheduler_.CreateCOMSTATaskRunnerWithTraits(TaskTraits()); 443 TaskTraits(), TaskScheduler::SingleThreadTaskRunnerThreadMode::SHARED);
440 444
441 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL, 445 WaitableEvent task_ran(WaitableEvent::ResetPolicy::MANUAL,
442 WaitableEvent::InitialState::NOT_SIGNALED); 446 WaitableEvent::InitialState::NOT_SIGNALED);
443 com_sta_task_runner->PostTask( 447 com_sta_task_runner->PostTask(
444 FROM_HERE, 448 FROM_HERE,
445 Bind( 449 Bind(
446 [](scoped_refptr<TaskRunner> single_thread_task_runner, 450 [](scoped_refptr<TaskRunner> single_thread_task_runner,
447 WaitableEvent* task_ran) { 451 WaitableEvent* task_ran) {
448 HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); 452 HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED);
449 if (SUCCEEDED(hr)) { 453 if (SUCCEEDED(hr)) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 // Give a chance for the file watcher to fire before closing the handles. 525 // Give a chance for the file watcher to fire before closing the handles.
522 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); 526 PlatformThread::Sleep(TestTimeouts::tiny_timeout());
523 527
524 EXPECT_EQ(0, IGNORE_EINTR(close(pipes[0]))); 528 EXPECT_EQ(0, IGNORE_EINTR(close(pipes[0])));
525 EXPECT_EQ(0, IGNORE_EINTR(close(pipes[1]))); 529 EXPECT_EQ(0, IGNORE_EINTR(close(pipes[1])));
526 } 530 }
527 #endif // defined(OS_POSIX) 531 #endif // defined(OS_POSIX)
528 532
529 } // namespace internal 533 } // namespace internal
530 } // namespace base 534 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698