Sahara Job Execution benchmark

The benchmark for job execution added.

Change-Id: Iac251de92413f0f1fe1c872b5183c91e40eb1232
Add hacking checks

Checking specific mistakes can be automated via hacking rules.

This patch:
 * adds HACKING.rst - list of rules;
 * adds rally.hacking - module for implementation of rules;
 * edits tox.ini, so hacking rules will be checked during pep8 test;
 * adds 3 rules related to mistakes in  `assert_*` methods from `mock`
   library. Also tests, which are failed due to these rules, are fixed.

Closes-Bug: #1305991
Change-Id: I605dd5cfba4eb83d0735e4f9f3ab4e44e149d041
Rally cli functional testing

  Added test for:
    'rally deployment'
    'rally show'
    'rally info'
    'rally task'

  test_cli was parted

  blueprint tests-integrated

Change-Id: If9febf155d8178b5c941317d2a7b837bbce128f1
Merge "Add hacking checks"
Fix "rally info" failure in case of empty docstrings

In case the input query for "rally info find ... " requested for a benchmark
scenario with an empty docstring, the CLI failed with an exception. Instead,
we should print that there is no info about that scenario.

Change-Id: If3a806f794f9b11ce1eb44eaabce732183c4c99b
Closes-Bug: 1371461
Updated from global requirements

Change-Id: Ia70bbde29c81f9fbfa0def64e46eba309ef6a147
update rally.conf.sample

Change-Id: I5d1ebfac06a024de673914ada7e5b30525bacc19
Merge "Fix "rally info" failure in case of empty docstrings"
Merge "update rally.conf.sample"
Add unit tests for rally.benchmark.context

Partially-Implements: blueprint improve-unit-test-coverage-rally

Change-Id: I29c416428c9697b6a71b2280a631fd3817f3345f
Add atomic action names tracking

Here we change the format of the scenario results so that it now stores
the atomic actions data as a dict:

    Before:
        {
            "duration": ...,
            "error": ...,
            "atomic_actions": [
                {"action": "a1", "duration": 0.3},
                {"action": "a2", "duration": 0.1},
                {"action": "a1", "duration": 0.25}
            ],
            ...
        }

    After:
        {
            "duration": ...,
            "error": ...,
            "atomic_actions": {
                "a1": 0.3,
                "a1 (2)": 0.25,
                "a2": 0.1
            },
            ...
        }

We also solve 2 connected problems here:

1. The statistics table that shows up in the CLI after benchmarks complete now
   always has rows for all the atomic actions that were invoked in benchmark
   scenarios. Before this patch, this was not the case since occasionally the
   atomic actions data could not be written due to Exceptions.

2. We've removed lots of ugly code in benchmark/processing/plot.py, since now
   there is no need to make passes through the atomic actions data to collect
   their names.

This patch also:
* contains some removing of code duplicate between plot & CLI output generation;
* adds missing UTs for raw benchmark data processing;
* fixes a minor bug in histograms bins number calculation.

Change-Id: I17f563051bd1c2ec2fb47a385d4cc652895e1f9e
Merge "Add atomic action names tracking"
Adds the Zaqar client

The Zaqar client is required for benchmarking
the messaging and notifications service.

Change-Id: I763cea5a415185f6571d7a74681d27f63a7357a1
Merge "Sahara Job Execution benchmark"
Merge "Adds the Zaqar client"
Add task file validate command

* Remove the redundant users context setup from benchmark.engine
* Add task_validate to orchestrator api
* Add verify command to validate the task file:
    rally task validate --deploy-id <deployment> --task <TASK FILE PATH>

Change-Id: I6cccf55cb390ae8bb95716db779a0c6daf965f99
Store sla result to db

Change-Id: I96e46493ba70c2bfea5d0ce7e97195f3170d66dd
Updated from global requirements

Change-Id: Ie07472ed923b666ea894d76988dc7154fe1a5cc4
Add unit tests for rally.benchmark.scenarios

Change-Id: I1cdba53559a836a07770dcaa58537dca6d780aec
Partially-Implements: blueprint improve-unit-test-coverage-rally
User story - booting 400 servers on real cluster

Change-Id: I5c2fca1263b4008e6333a69d839e1143f1b55c56