diff options
Diffstat (limited to 'tests/scripts/features/parallelism')
-rw-r--r-- | tests/scripts/features/parallelism | 68 |
1 files changed, 46 insertions, 22 deletions
diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism index 323eb5c..cd75392 100644 --- a/tests/scripts/features/parallelism +++ b/tests/scripts/features/parallelism @@ -3,7 +3,7 @@ $description = "Test parallelism (-j) option."; -$details = "This test creates a makefile with three double-colon default +$details = "This test creates a makefile with two double-colon default rules. The first rule has a series of sleep and echo commands intended to run in series. The second and third have just an echo statement. When make is called in this test, it is given @@ -29,48 +29,72 @@ else { open(MAKEFILE,"> $makefile"); print MAKEFILE <<"EOF"; -all : def_1 def_5 def_6 -def_1 : -\t\@$sleep_command 3 ; echo ONE -\t\@echo TWO -\t\@$sleep_command 1 ; echo THREE -\t\@echo FOUR -def_5 : -\t\@echo FIVE -def_6 : -\t\@$sleep_command 1 ; echo SIX - +all : def_1 def_2 def_3 +def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO +def_2 : ; \@$sleep_command 2 ; echo THREE +def_3 : ; \@$sleep_command 1 ; echo FOUR EOF close(MAKEFILE); &run_make_with_options($makefile, "-j 4", &get_logfile); -$answer = "FIVE\nSIX\nONE\nTWO\nTHREE\nFOUR\n"; +$answer = "ONE\nFOUR\nTHREE\nTWO\n"; &compare_output($answer, &get_logfile(1)); -# Test parallelism with included files +# Test parallelism with included files. Here we sleep/echo while +# building the included files, to test that they are being built in +# parallel. $makefile2 = &get_tmpfile; open(MAKEFILE,"> $makefile2"); -print MAKEFILE <<'EOF'; -all: 1 2 3; @echo success +print MAKEFILE <<"EOF"; +all: 1 2; \@echo success --include 1.inc 2.inc 3.inc +-include 1.inc 2.inc -1.inc: ; @sleep 1; echo 1; echo "1: ; @sleep 2; echo $@ has been included" > $@ -2.inc: ; @sleep 2; echo 2; echo "2: ; @echo $@ has been included" > $@ -3.inc: ; @echo 3; echo "3: ; @sleep 1; echo $@ has been included" > $@ +1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@ +2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@ EOF close(MAKEFILE); &run_make_with_options("$makefile2", "-j 4", &get_logfile); -$answer = "3\n1\n2\n2.inc has been included\n3.inc has been included\n1.inc has been included\nsuccess\n"; +$answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n"; +&compare_output($answer, &get_logfile(1)); + +unlink('1.inc', '2.inc'); + + +# Test parallelism with included files--this time recurse first and make +# sure the jobserver works. + +$makefile3 = &get_tmpfile; + +open(MAKEFILE,"> $makefile3"); + +print MAKEFILE <<"EOF"; +recurse: ; \@\$(MAKE) --no-print-directory -f $makefile3 INC=yes all + +all: 1 2; \@echo success + +INC = no +ifeq (\$(INC),yes) +-include 1.inc 2.inc +endif + +1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo "1: ; \@echo ONE; $sleep_command 2; echo TWO" > \$\@ +2.inc: ; \@$sleep_command 1; echo THREE.inc; echo "2: ; \@$sleep_command 1; echo THREE" > \$\@ +EOF + +close(MAKEFILE); + +&run_make_with_options("$makefile3", "-j 4", &get_logfile); +$answer = "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n"; &compare_output($answer, &get_logfile(1)); -unlink('1.inc', '2.inc', '3.inc'); +unlink('1.inc', '2.inc'); 1; |