Fix order of checks on load average.
[pintos-anon] / src / tests / threads / mlfqs-load-1.c
index 652407c669161d28e1c4ebe359193f6088619845..a39eea27ff32ff60540b5017959a95274b80c03a 100644 (file)
@@ -1,3 +1,11 @@
+/* Verifies that a single busy thread raises the load average to
+   0.5 in 38 to 45 seconds.  The expected time is 42 seconds, as
+   you can verify:
+   perl -e '$i++,$a=(59*$a+1)/60while$a<=.5;print "$i\n"'
+
+   Then, verifies that 10 seconds of inactivity drop the load
+   average back below 0.5 again. */
+
 #include <stdio.h>
 #include "tests/threads/tests.h"
 #include "threads/init.h"
@@ -13,7 +21,7 @@ test_mlfqs_load_1 (void)
   int elapsed;
   int load_avg;
   
-  ASSERT (enable_mlfqs);
+  ASSERT (thread_mlfqs);
 
   msg ("spinning for up to 45 seconds, please wait...");
 
@@ -23,12 +31,12 @@ test_mlfqs_load_1 (void)
       load_avg = thread_get_load_avg ();
       ASSERT (load_avg >= 0);
       elapsed = timer_elapsed (start_time) / TIMER_FREQ;
-      if (load_avg > 50)
-        break;
-      else if (load_avg > 100)
+      if (load_avg > 100)
         fail ("load average is %d.%02d "
               "but should be between 0 and 1 (after %d seconds)",
               load_avg / 100, load_avg % 100, elapsed);
+      else if (load_avg > 50)
+        break;
       else if (elapsed > 45)
         fail ("load average stayed below 0.5 for more than 45 seconds");
     }