- Notifications
You must be signed in to change notification settings - Fork 19.9k
/
Copy pathMLFQSchedulerTest.java
46 lines (34 loc) · 1.5 KB
/
MLFQSchedulerTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
packagecom.thealgorithms.scheduling;
importstaticorg.junit.jupiter.api.Assertions.assertEquals;
importorg.junit.jupiter.api.Test;
publicclassMLFQSchedulerTest {
@Test
voidtestMLFQScheduling() {
// Create MLFQ Scheduler with 3 levels and time quantum for each level
int[] timeQuantums = {4, 8, 12}; // Example of different quantum for each queue
MLFQSchedulerscheduler = newMLFQScheduler(3, timeQuantums);
// Add processes to the scheduler
scheduler.addProcess(newProcess(1, 10, 0)); // pid=1, burstTime=10, arrivalTime=0
scheduler.addProcess(newProcess(2, 15, 0)); // pid=2, burstTime=15, arrivalTime=0
scheduler.addProcess(newProcess(3, 25, 0)); // pid=3, burstTime=25, arrivalTime=0
// Run the scheduler
scheduler.run();
// Check current time after all processes are finished
assertEquals(50, scheduler.getCurrentTime());
}
@Test
voidtestProcessCompletionOrder() {
int[] timeQuantums = {3, 6, 9};
MLFQSchedulerscheduler = newMLFQScheduler(3, timeQuantums);
Processp1 = newProcess(1, 10, 0);
Processp2 = newProcess(2, 5, 0);
Processp3 = newProcess(3, 20, 0);
scheduler.addProcess(p1);
scheduler.addProcess(p2);
scheduler.addProcess(p3);
scheduler.run();
// After running, current time should match the total burst time for all
// processes
assertEquals(35, scheduler.getCurrentTime());
}
}