pat-ui

In the experiments above, it took on average 43.64s to push a small Ruby app to Cloud Foundry.

Introducing PAT: Performance Acceptance Tests!

PAT is actively developed by IBMers julz, simonleung8, and others and recently inducted into the Cloud Foundry Incubator.

In the graph above, I pointed PAT at Pivotal Web Services. Some other comparisons are below.

Setup

The README includes a number of ways to get the pat executable: https://github.com/cloudfoundry-incubator/pat#download-pats-binary

To confirm it is available from within the unpacked project folder:

$ ./pat --help

Next, and I don't know why - but PAT needs gcf CLI rather than cf. The CF CLI was renamed many many months ago.

To make PAT happy, copy the CLI to gcf.

$ which cf
/usr/local/bin/cf
$ cp /usr/local/bin/cf /usr/local/bin/gcf

Finally, before you run pat (in CLI or Server mode), target and login to a Cloud Foundry:

$ cf api https://api.run.pivotal.io
$ cf login

Ask PAT

Once you have targeted a Cloud Foundry API, organization and space:

./pat -workload=gcf:push -iterations=10 -concurrency=3

When targeting Pivotal Web Services from my local laptop to Pivotal's AWS us-east-1 deployment:

pat-pivotalws

I saw similar push times - approx 40s - to TryCF. This was also pushing from my local laptop to us-east-1.

But I have a performance regression on a client's AWS-based Cloud Foundry. It recorded average deploy times of 2 minutes. More odd was that pat was running within another AWS VM in the same region (also us-east-1).

Ask PAT for graphs

In the image at the top of this post, I was running PAT in server mode:

$ ./pat -server

Open PAT locally in your browser: http://localhost:8080

Now click the Experiment button and launch an set of cf push experiements.

ui-experiment

Wait patiently now for the first bars to appear.

Click the bar graph tab to see bar graphs of each experiment as it completes.

bar-graphs

The experiments are also documented at the bottom of the page. Scroll to the bottom to see the most recent result, which includes the most recent "average" of all experiments.

Cleanup

pat does not cleanup the applications and routes it creates. Run the following commands to delete them all:

cf apps | grep pats | awk '{ print $1 }' | xargs -L 1 cf delete -f

domain=$(cf domains | grep shared | awk '{print $1}')  
cf routes | grep pats | awk '{print $1}' | xargs -L1 cf delete-route $domain -f -n