Make tests public. Rewrite most tests. Add tests.
[pintos-anon] / src / tests / threads / mlfqs-recent-1.ck
1 # -*- perl -*-
2 use strict;
3 use warnings;
4 use tests::tests;
5 use tests::threads::mlfqs;
6
7 our ($test);
8 my (@output) = read_text_file ("$test.output");
9 common_checks (@output);
10 @output = get_core_output (@output);
11
12 # Get actual values.
13 local ($_);
14 my (@actual);
15 foreach (@output) {
16     my ($t, $recent_cpu) = /After (\d+) seconds, recent_cpu is (\d+\.\d+),/
17       or next;
18     $actual[$t] = $recent_cpu;
19 }
20
21 # Calculate expected values.
22 my ($expected_load_avg, $expected_recent_cpu)
23   = mlfqs_expected_load ([(1) x 180], [(100) x 180]);
24 my (@expected) = @$expected_recent_cpu;
25
26 # Compare actual and expected values.
27 mlfqs_compare ("time", "%.2f", \@actual, \@expected, 2.5, [2, 178, 2],
28                "Some recent_cpu values were missing or "
29                . "differed from those expected "
30                . "by more than 2.5.");
31 pass;