Test::Aggregate● Combine multiple .t files into a single file● Avoids compilation overhead● Therefore speeds up your tests!
Test::Aggregate::Nested● Alpha code● Uses the fairly recently added syntax for subtests in TAP● Works really well for us!
Test::Aggregate caveats● Breaks BEGIN and END blocks (use Scope::Guard instead!)● exit() is also a bad idea!● Be aware of Test modules which use these (Test::NoWarnings is the most common!)
Parallelisation of Aggregated TestsCurrently closed source - sorry! The logic is: i. Split up tests into N groups ii. Copy .t files into temporary directory iii. Write temporary .t file that uses Test:: Aggregate::Nested iv. Run those tests with prove -j N
TAP::Harness::Archive● "isa" TAP::Harness● Stores the TAP output in a tar archive● Gives you full TAP even when running in parallel● Allows you to run your tests once and then format the results in multiple ways
How we format our TAP● Process the output from our parallelised aggregated test runs● Match up the failures with the .t files● Write a summary in Markdown format thats later converted to HTML and emailed to us
How you might format your TAP● TAP::Formatter::JUnit (eg. for Jenkins)● TAP::Formatter::TeamCity● TAP::Formatter::HTML
Continuous Deployment at Lokku svn commit On test success new code is automatically pushed Deployment is one command and very quick Perl daemon notices commitParallelised and aggregated test run starts runningNicely formatted results are emailed on success or failure