#                                                                    -*-perl-*-
# Date: Tue, 11 Aug 1992 09:34:26 -0400
# From: pds@lemming.webo.dg.com (Paul D. Smith)

$description = "Test load balancing (-l) option.";

$details = "\
This test creates a makefile where all depends on three rules
which contain the same body.  Each rule checks for the existence
of a temporary file; if it exists an error is generated.  If it
doesn't exist then it is created, the rule sleeps, then deletes
the temp file again.  Thus if any of the rules are run in
parallel the test will fail.  When make is called in this test,
it is given the -l option with a value of 0.0001.  This ensures
that the load will be above this number and make will therefore
decide that it cannot run more than one job even though -j 4 was
also specified on the command line.";

# On Windows a very different algorithm is used.
$port_type eq 'W32' and return -1;

open(MAKEFILE,"> $makefile");
printf MAKEFILE subst_make_string(q!
test = #HELPER# noexist test-file file test-file sleep 2 rm test-file

all : ONE TWO THREE
ONE : ; @$(test)
TWO : ; @$(test)
THREE : ; @$(test)
!);
close(MAKEFILE);
my $ans = "noexist test-file\nfile test-file\nsleep 2\nrm test-file\n";

$mkoptions = "-l 0.0001";
$mkoptions .= " -j 4" if ($parallel_jobs);

# We have to wait longer than the default (5s).
&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 10);

$slurp = &read_file_into_string(&get_logfile(1));
if ($slurp =~ /cannot enforce load limit/) {
  return -1;
}
&compare_output("$ans$ans$ans", &get_logfile(1));

1;
