Fixes issue #215 (unclear error output when a "razor tag T_UUID matcher add" [or update, or remove] is invoked from the command line).  This was the result of two errors...the first in the "ProjectRazor::Slice::Base.eval_command method, where an @slice_commands value was used where an @command_hash value should have been used and the second in the definition of the @slice_commands variable for the ProjectRazor::Slice::Tag class, where no default action was provided for three of the branches in this command hash map.  The end result of these two errors was the behavior reported by @lynxbat in issue #215
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>
Add :test group to Gemfile (exclude testing gems in production).
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'
Fix misplaced performance test result files

The performance test result files were misplaced in the previous code; this
corrects them to land in the expected final location.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Merge branch 'feature/master/add-performance-to-acceptance-tests'
Revert scp change that snuck in...

I accidentally committed an additional scp change to use wildcards, which I
was testing elsewhere, as part of the previous change.  This reverts only that
part of the previous change.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Merge branch 'feature/master/add-performance-to-acceptance-tests'
Remove a stray comma that broke JTL "XML" output

This eliminates the stray comma that broke my output parsing...

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