Bugfix: AttributeError when run tc055 89/35389/2
authorchenjiankun <chenjiankun1@huawei.com>
Fri, 26 May 2017 06:52:07 +0000 (06:52 +0000)
committerchenjiankun <chenjiankun1@huawei.com>
Fri, 26 May 2017 07:06:58 +0000 (07:06 +0000)
JIRA: YARDSTICK-662

When I run tc055, I got an error, see log:
Traceback (most recent call last):
      File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in
      _bootstrap
          self.run()
        File "/usr/lib/python2.7/multiprocessing/process.py", line 114,
        in run
          self._target(*self._args, **self._kwargs)
        File
      "/usr/local/lib/python2.7/dist-packages/yardstick/benchmark/runners/iteration.py",
      line 46, in _worker_process
          initial_rate = options_cfg.get("rate", 100)
      AttributeError: 'NoneType' object has no attribute 'get'

This is because in the former patch, we get 'options' by scenario_cfg['options'], it is
unsafe since some test case do not have 'options' field. For tc055, 'options' is None.

Change-Id: I18a4a7954c18c609f422da403fe65c4739c93648
Signed-off-by: chenjiankun <chenjiankun1@huawei.com>
yardstick/benchmark/runners/iteration.py

index 29daa0d..3963de8 100644 (file)
@@ -41,10 +41,8 @@ def _worker_process(queue, cls, method_name, scenario_cfg,
     interval = runner_cfg.get("interval", 1)
     iterations = runner_cfg.get("iterations", 1)
     run_step = runner_cfg.get("run_step", "setup,run,teardown")
+
     delta = runner_cfg.get("delta", 2)
-    options_cfg = scenario_cfg['options']
-    initial_rate = options_cfg.get("rate", 100)
-    scenario_cfg['options']['rate'] = initial_rate
     LOG.info("worker START, iterations %d times, class %s", iterations, cls)
 
     runner_cfg['runner_id'] = os.getpid()
@@ -82,6 +80,12 @@ def _worker_process(queue, cls, method_name, scenario_cfg,
                     LOG.warning("SLA validation failed: %s", assertion.args)
                     errors = assertion.args
                 elif sla_action == "rate-control":
+                    try:
+                        scenario_cfg['options']['rate']
+                    except KeyError:
+                        scenario_cfg.setdefault('options', {})
+                        scenario_cfg['options']['rate'] = 100
+
                     scenario_cfg['options']['rate'] -= delta
                     sequence = 1
                     continue