# New Ticket Created by Patrick R. Michaud
# Please include the string: [perl #57530]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=57530 >
Schwern provided the following patch at the OSCON hackathon,
but we should probably test it on a couple of other architectures
before applying it. So, can others apply, test, and report
results?
If it works on sufficient platforms, we can apply it.
Thanks!
Pm
----- Forwarded message from Michael G Schwern <[EMAIL PROTECTED]> -----
Date: Sat, 26 Jul 2008 19:44:36 -0700
From: Michael G Schwern <[EMAIL PROTECTED]>
To: "Patrick R. Michaud" <[EMAIL PROTECTED]>
Subject: Parallelize the Perl 6 tests
Turns on parallel testing for the perl 6 tests
* default 3 jobs in parallel. Useful for dual cores,
not so much to swamp a single core machine.
* introduces a "jobs" option Parrot::Test::Harness
* also a PARROT_HARNESS_JOBS environment variable
Runs the spectest_regression about 50% faster on my Macbook.
--
Insulting our readers is part of our business model.
http://somethingpositive.net/sp07122005.shtml
Index: lib/Parrot/Test/Harness.pm
===================================================================
--- lib/Parrot/Test/Harness.pm (revision 29706)
+++ lib/Parrot/Test/Harness.pm (working copy)
@@ -162,12 +162,14 @@
exit unless my @files = get_files(%options);
if (eval { require TAP::Harness; 1 }) {
- my %options =
+ my %harness_options =
$options{exec} ? ( exec => $options{exec} )
: $options{compiler} ? ( exec => [ '../../parrot', './' .
$options{compiler} ] )
: ();
- TAP::Harness->new( \%options )->runtests( @files );
+ $harness_options{jobs} = $ENV{PARROT_HARNESS_JOBS} || $options{jobs}
|| 1;
+ TAP::Harness->new( \%harness_options )->runtests( @files );
+
return;
}
Index: languages/perl6/t/harness
===================================================================
--- languages/perl6/t/harness (revision 29782)
+++ languages/perl6/t/harness (working copy)
@@ -11,7 +11,6 @@
use lib qw( ../../lib );
use strict;
-our %harness_args;
our $recurse = 1;
our %harness_args = (
@@ -22,6 +21,10 @@
GetOptions(
'tests-from-file=s' => \my $list_file,
'fudge' => \my $do_fudge,
+
+ # A sensible default is num_cores + 1.
+ # Many people have two cores these days.
+ 'jobs:3' => \$harness_args{jobs},
);
Index: languages/perl6/config/makefiles/root.in
===================================================================
--- languages/perl6/config/makefiles/root.in (revision 29782)
+++ languages/perl6/config/makefiles/root.in (working copy)
@@ -189,7 +189,7 @@
# NOTE: eventually, we should remove --keep-exit-code and --fudge
# as the goal is that all tests must pass without fudge
-HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code
+HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code --jobs
spectest: all t/spec
-cd t/spec && svn up
@@ -213,7 +213,7 @@
# Run a single test
t/*.t t/*/*.t t/*/*/*.t: all
- @$(HARNESS_WITH_FUDGE) $@
+ @$(HARNESS_WITH_FUDGE) --jobs=1 $@
t/localtest.data:
$(PERL) -MExtUtils::Command -e test_f $@
----- End forwarded message -----