The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.