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.

