Get ready to run the performance test suite

This welds the infrastructure to run a performance suite into the acceptance
test plan.  Nothing is implemented yet, but the placeholders are ready to get
everything in order and up to speed.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Don't nohup the agent. Change function name to reflect what it does now.
Don't swallow the output - share it with razor

Conflicts:

	lib/project_razor/broker/puppet.rb
Merge pull request #208 from jamezpolley/master

Capture output of puppet_init.sh in a logfile on the node, don't nohup the agent.
Implement a C/GLib2 performance test harness

After investigating the alternatives, writing a custom performance test driver
using C and GLib seems like the best option: it allows a custom implementation
that matches exactly our needs, and has good performance with minimal
resource consumption.

This is a naive implementation using threading and blocking network
operations, which seems to have sufficiently good performance.  If it proves
insufficient rewriting to use CURL multi and libev should resolve any issues.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Wire up building and running the perftest tool

This hooks up the perftest suite to install our load simulator on the target
system, then compile it up, and run it, along with the infrastructure needed
to do that.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Add JLT compatible XML performance output

In addition to the CSV data, which is useful for hand analysis, the perftest
tool now emits an "XML" JTL format file.  This contains the same information
encoded the same way that JMeter does, allowing for interoperability with
additional tools.

This is XML in the sense that it follows the form, but it doesn't actually use
a real XML engine, so output might fail with, eg, embedded newlines, than sort
of thing.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Add performance testing to the acceptance suite
Merge performance setup and run into one test set

A limitation of the existing Puppet Acceptance suite is that each test case
file is treated as independent.  A consequence of this is that a failure in
the performance setup ended up with infinitely blocking the performance
simulation run.

This merges both files into one, ensuring that a setup failure prevents a run
of the acceptance tool.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Add maximum cycle count to perftest

This is a fail-safe: after a set number of seconds, abort the run and exit.

This will ensure that we terminate in a reasonably timely fashion, even if
that means incomplete results.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Merge branch 'feature/master/add-performance-to-acceptance-tests'
Be less strict about URL validation

We can emit 21 or 22 character UUID values in Razor, so accept both.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Merge branch 'feature/master/add-performance-to-acceptance-tests'
Ensure we restart Razor services for performance test

The performance test was stumbling when run, and it looks like a broken
back-end service was at fault.  This ensures that all Razor services are
restarted, which makes sure no dead state breaks our performance run.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Merge branch 'feature/master/add-performance-to-acceptance-tests'
Merge branch 'master' of git://github.com/puppetlabs/Razor into puppetlabs-master
Merge branch 'puppetlabs-master'