NAME

Test::Puppet::Compile - Puppet catalog testing

SYNOPSIS

use Test::Puppet::Compile;

my $TPC = Test::Puppet::Compile::->new({
  'name'          => 'synopsis',
  'manifests'     => [glob 'manifests/*.pp'],
  'basedir'       => `pwd`,
  'tpldir'        => '/your/template/dir', # must contain: hiera.yaml.tt, node.yaml.tt and puppet.conf.tt
  'reqenvs'       => [qw(development staging superlive)],
  'moduledirs'    => [qw(modules supermodules services subservices)],
  'warnings'      => 1,
  'domainpattern' => [
    { match => qr/^int-/, domain => 'integrationdomain', }
  ],
  'defaultdomain' => 'localdomain',
});
$TPC->test();

METHODS

test

After successfull initializtation call this method to detect all nodes and compile a catalog for each node.

HOWTO

USE THIS MODULE

See the synopsis

REDHAT

If you want to simulate another OS just copy all templates to a directory of your choice and adjust them acording to your needs.

Then set tpldir to point to that directory.

Q&A

WHY PERL

Because I'm most prolific with perl.

WHY IS IT SO SLOW

Because it does lots of computations.

Some performance hints:

Use a ramfs

Your temp directory, usually /tmp, should be located on a sufficiently large ramdisk

Use forkprove

You should split your tests into multiple t files, each testing on environment, and process them w/ forkprove, e.g. forkprove -j<NUMCORES> -MMoose -MTest::More -MTest::Puppet::Compile t/

AUTHOR

Dominik Schulz <dominik.schulz@gauner.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Dominik Schulz.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.