b1cad65d16
Partial bug: 1405884 Change-Id: If6bebfbdd1243adb88fcc3cb015c8f15399e8934
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
# Copyright 2013: Mirantis Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import random
|
|
|
|
from rally.benchmark.runners import base
|
|
from rally import consts
|
|
|
|
|
|
class RandomTimesScenarioRunner(base.ScenarioRunner):
|
|
"""Sample of scenario runner plugin.
|
|
|
|
Run scenario random number of times, which is choosen between min_times and
|
|
max_times.
|
|
"""
|
|
|
|
__execution_type__ = "random_times"
|
|
|
|
CONFIG_SCHEMA = {
|
|
"type": "object",
|
|
"$schema": consts.JSON_SCHEMA,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"min_times": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"max_times": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
},
|
|
"additionalProperties": True
|
|
}
|
|
|
|
def _run_scenario(self, cls, method_name, context, args):
|
|
# runners settings are stored in self.config
|
|
min_times = self.config.get("min_times", 1)
|
|
max_times = self.config.get("max_times", 1)
|
|
|
|
for i in range(random.randrange(min_times, max_times)):
|
|
run_args = (i, cls, method_name,
|
|
base._get_scenario_context(context), args)
|
|
result = base._run_scenario_once(run_args)
|
|
# use self.send_result for result of each iteration
|
|
self._send_result(result)
|