)]}'
{"doc/source/miscellaneous/concepts.rst":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"37a9331f1fac950fffc0a55ea9a08f9f2a02cb4f","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Developer\u0027s view"},{"line_number":82,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"From the developer\u0027s perspective, a benchmark scenario is a method marked by a **@scenario** decorator and placed in a class that inherits from the base `Scenario \u003chttps://github.com/openstack/rally/blob/master/rally/rally/task/scenario.py\u003e`_ class and located in some subpackage of `rally.plugins.openstack.scenarios \u003chttps://github.com/openstack/rally/tree/master/rally/plugins/openstack/scenarios\u003e`_. There may be arbitrary many benchmark scenarios in a scenario class; each of them should be referenced to (in the task configuration file) as *ScenarioClassName.method_name*."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"In a toy example below, we define a scenario class *MyScenario* with one benchmark scenario *MyScenario.scenario*. This benchmark scenario tests the performance of a sequence of 2 actions, implemented via private methods in the same class. Both methods are marked with the **@atomic.action_timer** decorator. This allows Rally to handle those actions in a special way and, after benchmarks complete, show runtime statistics not only for the whole scenarios, but for separate actions as well."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a26ad4f_136e7f01","line":84,"updated":"2015-10-29 11:40:28.000000000","message":"\u003e method marked by a **@scenario**\n\n@scenario -\u003e @scenario.configure","commit_id":"745423fcbc967339ebb1de84936885ee68115678"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"c73b4d525875b847b0da3f0d52b1b0c694381021","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Developer\u0027s view"},{"line_number":82,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"From the developer\u0027s perspective, a benchmark scenario is a method marked by a **@scenario** decorator and placed in a class that inherits from the base `Scenario \u003chttps://github.com/openstack/rally/blob/master/rally/rally/task/scenario.py\u003e`_ class and located in some subpackage of `rally.plugins.openstack.scenarios \u003chttps://github.com/openstack/rally/tree/master/rally/plugins/openstack/scenarios\u003e`_. There may be arbitrary many benchmark scenarios in a scenario class; each of them should be referenced to (in the task configuration file) as *ScenarioClassName.method_name*."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"In a toy example below, we define a scenario class *MyScenario* with one benchmark scenario *MyScenario.scenario*. This benchmark scenario tests the performance of a sequence of 2 actions, implemented via private methods in the same class. Both methods are marked with the **@atomic.action_timer** decorator. This allows Rally to handle those actions in a special way and, after benchmarks complete, show runtime statistics not only for the whole scenarios, but for separate actions as well."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_681143ac","line":84,"updated":"2015-11-04 02:09:48.000000000","message":"the first url is wrong, should be https://github.com/openstack/rally/blob/master/rally/task/scenario.py","commit_id":"745423fcbc967339ebb1de84936885ee68115678"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"37a9331f1fac950fffc0a55ea9a08f9f2a02cb4f","unresolved":false,"context_lines":[{"line_number":171,"context_line":"Developer\u0027s view"},{"line_number":172,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"It is possible to extend Rally with new Scenario Runner types, if needed. Basically, each scenario runner should be implemented as a subclass of the base `ScenarioRunner \u003chttps://github.com/openstack/rally/blob/master/rally/task/runner.py#L113\u003e`_ class and located in the `rally.plugins.common.runners package \u003chttps://github.com/openstack/rally/tree/master/rally/plugins/common/runners\u003e`_. The interface each scenario runner class should support is fairly easy:"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":".. code-block:: python"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a26ad4f_b37d4bb3","line":174,"updated":"2015-10-29 11:40:28.000000000","message":"\u003ehttps://github.com/openstack/rally/blob/master/rally/task/runner.py#L113\n\nwrong line. https://github.com/openstack/rally/blob/master/rally/task/runner.py#L97","commit_id":"745423fcbc967339ebb1de84936885ee68115678"}]}
