SimpleKernel
1.17.0
Loading...
Searching...
No Matches
task_test_harness.cpp
Go to the documentation of this file.
1
5
#include "
task_test_harness.hpp
"
6
7
#include <thread>
8
9
#include "
per_cpu.hpp
"
10
#include "
task_manager.hpp
"
11
12
void
TaskTestHarness::SetUp
() {
13
// 1. 初始化环境层(每个测试都有独立实例)
14
env_state_
.
InitializeCores
(
num_cores_
);
15
16
// 2. 设置当前线程的环境指针(让 Mock 层可以访问)
17
env_state_
.
SetCurrentThreadEnvironment
();
18
19
// 3. 绑定主测试线程到 core 0
20
env_state_
.
BindThreadToCore
(std::this_thread::get_id(), 0);
21
22
// 3. 重置 PerCpu 数据
23
per_cpu::PerCpuArraySingleton::create();
24
auto
& per_cpu_array = per_cpu::PerCpuArraySingleton::instance();
25
for
(
size_t
i = 0; i < SIMPLEKERNEL_MAX_CORE_COUNT; ++i) {
26
per_cpu_array[i] =
per_cpu::PerCpu
(i);
27
}
28
29
// 4. 重置 TaskManager(如果有 ResetForTesting 方法)
30
// 注意:这需要在 TaskManager 中实现
31
// TaskManagerSingleton::instance().ResetForTesting();
32
}
33
34
void
TaskTestHarness::TearDown
() {
35
per_cpu::PerCpuArraySingleton::destroy();
36
// 清除当前线程的环境指针
37
env_state_
.
ClearCurrentThreadEnvironment
();
38
39
// 其他清理
40
env_state_
.
ClearSwitchHistory
();
41
}
TaskTestHarness::TearDown
void TearDown() override
Definition
task_test_harness.cpp:34
TaskTestHarness::SetUp
void SetUp() override
Definition
task_test_harness.cpp:12
TaskTestHarness::num_cores_
size_t num_cores_
Definition
task_test_harness.hpp:36
TaskTestHarness::env_state_
test_env::TestEnvironmentState env_state_
Definition
task_test_harness.hpp:37
test_env::TestEnvironmentState::ClearCurrentThreadEnvironment
void ClearCurrentThreadEnvironment()
清除当前线程的环境实例指针
Definition
test_environment_state.cpp:22
test_env::TestEnvironmentState::BindThreadToCore
void BindThreadToCore(std::thread::id tid, size_t core_id)
将指定线程绑定到核心
Definition
test_environment_state.cpp:66
test_env::TestEnvironmentState::InitializeCores
void InitializeCores(size_t num_cores)
初始化指定数量的核心
Definition
test_environment_state.cpp:31
test_env::TestEnvironmentState::ClearSwitchHistory
void ClearSwitchHistory()
清空所有核心的切换历史
Definition
test_environment_state.cpp:162
test_env::TestEnvironmentState::SetCurrentThreadEnvironment
void SetCurrentThreadEnvironment()
设置当前线程的环境实例指针
Definition
test_environment_state.cpp:18
per_cpu.hpp
per_cpu::PerCpu
每个 CPU 核心的局部数据
Definition
per_cpu.hpp:23
task_manager.hpp
task_test_harness.hpp
tests
unit_test
task
fixtures
task_test_harness.cpp
Generated by
1.9.8