MCPcopy Create free account
hub / github.com/Simple-XX/SimpleKernel / test_rr_dequeue

Function test_rr_dequeue

tests/system_test/rr_scheduler_test.cpp:130–172  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

128}
129
130auto test_rr_dequeue() -> bool {
131 klog::Info("Running test_rr_dequeue...");
132
133 RoundRobinScheduler scheduler;
134
135 TaskControlBlock task1("Task1", 1, nullptr, nullptr);
136 task1.fsm.Receive(MsgSchedule{});
137 TaskControlBlock task2("Task2", 2, nullptr, nullptr);
138 task2.fsm.Receive(MsgSchedule{});
139 TaskControlBlock task3("Task3", 3, nullptr, nullptr);
140 task3.fsm.Receive(MsgSchedule{});
141 TaskControlBlock task4("Task4", 4, nullptr, nullptr);
142 task4.fsm.Receive(MsgSchedule{});
143
144 scheduler.Enqueue(&task1);
145 scheduler.Enqueue(&task2);
146 scheduler.Enqueue(&task3);
147 scheduler.Enqueue(&task4);
148
149 EXPECT_EQ(scheduler.GetQueueSize(), 4, "Queue size should be 4");
150
151 // 移除中间任务
152 scheduler.Dequeue(&task2);
153 EXPECT_EQ(scheduler.GetQueueSize(), 3,
154 "Queue size should be 3 after dequeue");
155
156 // 移除队首任务
157 scheduler.Dequeue(&task1);
158 EXPECT_EQ(scheduler.GetQueueSize(), 2,
159 "Queue size should be 2 after dequeue");
160
161 // 验证剩余任务顺序
162 auto* picked1 = scheduler.PickNext();
163 EXPECT_EQ(picked1, &task3, "First remaining task should be task3");
164
165 auto* picked2 = scheduler.PickNext();
166 EXPECT_EQ(picked2, &task4, "Second remaining task should be task4");
167
168 EXPECT_TRUE(scheduler.IsEmpty(), "Scheduler should be empty");
169
170 klog::Info("test_rr_dequeue passed");
171 return true;
172}
173
174auto test_rr_statistics() -> bool {
175 klog::Info("Running test_rr_statistics...");

Callers 1

rr_scheduler_testFunction · 0.85

Calls 7

InfoFunction · 0.85
ReceiveMethod · 0.80
EnqueueMethod · 0.45
GetQueueSizeMethod · 0.45
DequeueMethod · 0.45
PickNextMethod · 0.45
IsEmptyMethod · 0.45

Tested by

no test coverage detected