Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
96 lines (64 sloc) 3.15 KB
Smoke the CPAN in parallel
The idea is to find regressions between e.g. two perl versions or two
versions of a basic perl module. The CPAN::Testers::ParallelSmoker
framework helps to setup such a system with small effort, i.e. writing
a small configuration file should be enough.
Documentation is not there yet, unfortunately, and initial efforts to
get the smoker running is still high. But after this step it is quite
easy to create new smokers.
Currently it's not proposed to install this distribution the usual
way. Just fetch all the prerequisites mentioned in the Makefile.PL.
Note that not all prerequisites are strictly needed for the parallel
smoker; some are just for analyzing utilities.
Make sure that is configured and the indexes are loaded (at
least call once "reload index" in the CPAN shell).
Writing the configuration file
Create a YAML file which looks like the existing smoke*.yml files in
the distribution (in the toplevel directory or "archive" directory).
The most important fields are:
* testlabel: a unique, short label which is used to create unique
subdirectories per smoke run. Do not use exotic characters.
* perl1, perl2: If comparing two perls, then specify either the url to
fetch the perl distribution from, or a commit id, if building a
specific bleadperl version is needed.
* git_repository: The filesystem path to a git clone of perl's source.
This is needed if any of perl1 or perl2 is specified by "commit".
* modlist: a list of modules to smoke. Best is to use the utility
"utils/" for this. Note that the first run
of this utility is usually quite slow, as many files from CPAN need
to be fetched (a local copy could help here).
Starting the smoker
slaymake CONFIG_FILE=smoke_something.yml
This will fetch, extract, build the perls, install the toolchain
needed for distroprefs and sending reports, and finally starting two
xterms where the modules are smoked.
The reports are stored in the directory
A comparison can be created using
./utils/ -config smoke_....yml
This list is usually too large. You can add to the commandline up to
four "-min" to minimize the list.
Known problems
* Interactive distributions
Some distributions ask interactive questions while configuration.
Usually this can be solved by creating a distropref entry
for such distribution. Existing sample distroprefs exist here:
Unfortunately distroprefs are usually not universally applicable,
and often depend on a particular system configuration (OS, installed
package set).
* Hanging tests
There's no fix yet for this. Hanging tests are not automatically
recognized, so you have to kill it yourself, and probably protect
the smoker by disabling such distribution (e.g. using distroprefs).
* Tests using fixed named resources
Some tests use e.g. a fixed port for daemons or a fixed file path
and cause unnecessary failures.