xref: /aosp_15_r20/external/libchrome/base/task_scheduler/test_utils.h (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #ifndef BASE_TASK_SCHEDULER_TEST_UTILS_H_
6*635a8641SAndroid Build Coastguard Worker #define BASE_TASK_SCHEDULER_TEST_UTILS_H_
7*635a8641SAndroid Build Coastguard Worker 
8*635a8641SAndroid Build Coastguard Worker #include "base/memory/ref_counted.h"
9*635a8641SAndroid Build Coastguard Worker #include "base/task_runner.h"
10*635a8641SAndroid Build Coastguard Worker #include "base/task_scheduler/scheduler_worker_observer.h"
11*635a8641SAndroid Build Coastguard Worker #include "base/task_scheduler/sequence.h"
12*635a8641SAndroid Build Coastguard Worker #include "testing/gmock/include/gmock/gmock.h"
13*635a8641SAndroid Build Coastguard Worker 
14*635a8641SAndroid Build Coastguard Worker namespace base {
15*635a8641SAndroid Build Coastguard Worker namespace internal {
16*635a8641SAndroid Build Coastguard Worker 
17*635a8641SAndroid Build Coastguard Worker class SchedulerWorkerPool;
18*635a8641SAndroid Build Coastguard Worker struct Task;
19*635a8641SAndroid Build Coastguard Worker 
20*635a8641SAndroid Build Coastguard Worker namespace test {
21*635a8641SAndroid Build Coastguard Worker 
22*635a8641SAndroid Build Coastguard Worker class MockSchedulerWorkerObserver : public SchedulerWorkerObserver {
23*635a8641SAndroid Build Coastguard Worker  public:
24*635a8641SAndroid Build Coastguard Worker   MockSchedulerWorkerObserver();
25*635a8641SAndroid Build Coastguard Worker   ~MockSchedulerWorkerObserver();
26*635a8641SAndroid Build Coastguard Worker 
27*635a8641SAndroid Build Coastguard Worker   MOCK_METHOD0(OnSchedulerWorkerMainEntry, void());
28*635a8641SAndroid Build Coastguard Worker   MOCK_METHOD0(OnSchedulerWorkerMainExit, void());
29*635a8641SAndroid Build Coastguard Worker 
30*635a8641SAndroid Build Coastguard Worker  private:
31*635a8641SAndroid Build Coastguard Worker   DISALLOW_COPY_AND_ASSIGN(MockSchedulerWorkerObserver);
32*635a8641SAndroid Build Coastguard Worker };
33*635a8641SAndroid Build Coastguard Worker 
34*635a8641SAndroid Build Coastguard Worker // An enumeration of possible task scheduler TaskRunner types. Used to
35*635a8641SAndroid Build Coastguard Worker // parametrize relevant task_scheduler tests.
36*635a8641SAndroid Build Coastguard Worker enum class ExecutionMode { PARALLEL, SEQUENCED, SINGLE_THREADED };
37*635a8641SAndroid Build Coastguard Worker 
38*635a8641SAndroid Build Coastguard Worker // Creates a Sequence and pushes |task| to it. Returns that sequence.
39*635a8641SAndroid Build Coastguard Worker scoped_refptr<Sequence> CreateSequenceWithTask(Task task);
40*635a8641SAndroid Build Coastguard Worker 
41*635a8641SAndroid Build Coastguard Worker // Creates a TaskRunner that posts tasks to |worker_pool| with the
42*635a8641SAndroid Build Coastguard Worker // |execution_mode| execution mode and the WithBaseSyncPrimitives() trait.
43*635a8641SAndroid Build Coastguard Worker // Caveat: this does not support ExecutionMode::SINGLE_THREADED.
44*635a8641SAndroid Build Coastguard Worker scoped_refptr<TaskRunner> CreateTaskRunnerWithExecutionMode(
45*635a8641SAndroid Build Coastguard Worker     SchedulerWorkerPool* worker_pool,
46*635a8641SAndroid Build Coastguard Worker     test::ExecutionMode execution_mode);
47*635a8641SAndroid Build Coastguard Worker 
48*635a8641SAndroid Build Coastguard Worker }  // namespace test
49*635a8641SAndroid Build Coastguard Worker }  // namespace internal
50*635a8641SAndroid Build Coastguard Worker }  // namespace base
51*635a8641SAndroid Build Coastguard Worker 
52*635a8641SAndroid Build Coastguard Worker #endif  // BASE_TASK_SCHEDULER_TEST_UTILS_H_
53