provided code
This commit is contained in:
36
src/tests/threads/mlfqs-load-avg.ck
Normal file
36
src/tests/threads/mlfqs-load-avg.ck
Normal file
@@ -0,0 +1,36 @@
|
||||
# -*- perl -*-
|
||||
use strict;
|
||||
use warnings;
|
||||
use tests::tests;
|
||||
use tests::threads::mlfqs;
|
||||
|
||||
our ($test);
|
||||
my (@output) = read_text_file ("$test.output");
|
||||
|
||||
common_checks ("run", @output);
|
||||
@output = get_core_output ("run", @output);
|
||||
|
||||
# Get actual values.
|
||||
local ($_);
|
||||
my (@actual);
|
||||
foreach (@output) {
|
||||
my ($t, $load_avg) = /After (\d+) seconds, load average=(\d+\.\d+)\./
|
||||
or next;
|
||||
$actual[$t] = $load_avg;
|
||||
}
|
||||
|
||||
# Calculate expected values.
|
||||
my ($load_avg) = 0;
|
||||
my ($recent) = 0;
|
||||
my (@expected);
|
||||
for (my ($t) = 0; $t < 180; $t++) {
|
||||
my ($ready) = $t < 60 ? $t : $t < 120 ? 120 - $t : 0;
|
||||
$load_avg = (59/60) * $load_avg + (1/60) * $ready;
|
||||
$expected[$t] = $load_avg;
|
||||
}
|
||||
|
||||
mlfqs_compare ("time", "%.2f", \@actual, \@expected, 2.5, [2, 178, 2],
|
||||
"Some load average values were missing or "
|
||||
. "differed from those expected "
|
||||
. "by more than 2.5.");
|
||||
pass;
|
||||
Reference in New Issue
Block a user