| # -*-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; |