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

Function TEST

tests/unit_test/balance_test.cpp:13–38  ·  view source on GitHub ↗

@brief Test that stealing from a loaded RR scheduler works correctly. This validates the core primitive that Balance() relies on: Dequeue from source scheduler, Enqueue to destination scheduler.

Source from the content-addressed store, hash-verified

11/// This validates the core primitive that Balance() relies on:
12/// Dequeue from source scheduler, Enqueue to destination scheduler.
13TEST(BalanceTest, StealFromLoadedScheduler) {
14 RoundRobinScheduler source;
15 RoundRobinScheduler dest;
16
17 // Source has 4 tasks, dest has 0
18 TaskControlBlock task1("Task1", 1, nullptr, nullptr);
19 TaskControlBlock task2("Task2", 2, nullptr, nullptr);
20 TaskControlBlock task3("Task3", 3, nullptr, nullptr);
21 TaskControlBlock task4("Task4", 4, nullptr, nullptr);
22
23 source.Enqueue(&task1);
24 source.Enqueue(&task2);
25 source.Enqueue(&task3);
26 source.Enqueue(&task4);
27
28 EXPECT_EQ(source.GetQueueSize(), 4);
29 EXPECT_EQ(dest.GetQueueSize(), 0);
30
31 // Simulate steal: pick from source, enqueue to dest
32 auto* stolen = source.PickNext();
33 ASSERT_NE(stolen, nullptr);
34 dest.Enqueue(stolen);
35
36 EXPECT_EQ(source.GetQueueSize(), 3);
37 EXPECT_EQ(dest.GetQueueSize(), 1);
38}
39
40/// @brief Test that no stealing occurs when queues are balanced.
41TEST(BalanceTest, NoStealWhenBalanced) {

Callers

nothing calls this directly

Calls 4

EnqueueMethod · 0.45
GetQueueSizeMethod · 0.45
PickNextMethod · 0.45
IsEmptyMethod · 0.45

Tested by

no test coverage detected