diff options
author | qiujuan <juan_qiu@tongji.edu.cn> | 2017-09-03 12:31:13 +0800 |
---|---|---|
committer | qiujuan <juan_qiu@tongji.edu.cn> | 2017-10-04 15:46:29 +0800 |
commit | 4db989878666a57a65ca23715ece0c93a078ce85 (patch) | |
tree | 19913df39de4beddb52f952e2d0c01d8dfc817fa /yardstick/benchmark/scenarios/availability/monitor | |
parent | add9dfa6f8739ec3328388c2658750e185e6a3ed (diff) |
Add intermediate variables for attacker,monitor,result_checker
JIRA: YARDSTICK-790
Change-Id: I6bb36c98b8673155d3142fc54cfb39315d5ce613
Signed-off-by: qiujuan <juan_qiu@tongji.edu.cn>
Diffstat (limited to 'yardstick/benchmark/scenarios/availability/monitor')
-rw-r--r-- | yardstick/benchmark/scenarios/availability/monitor/basemonitor.py | 1 | ||||
-rw-r--r-- | yardstick/benchmark/scenarios/availability/monitor/monitor_general.py | 42 |
2 files changed, 24 insertions, 19 deletions
diff --git a/yardstick/benchmark/scenarios/availability/monitor/basemonitor.py b/yardstick/benchmark/scenarios/availability/monitor/basemonitor.py index a6c1a28bd..50a63f53d 100644 --- a/yardstick/benchmark/scenarios/availability/monitor/basemonitor.py +++ b/yardstick/benchmark/scenarios/availability/monitor/basemonitor.py @@ -94,6 +94,7 @@ class BaseMonitor(multiprocessing.Process): self.monitor_data = data self.setup_done = False self.tag = "" + self.intermediate_variables = {} @staticmethod def get_monitor_cls(monitor_type): diff --git a/yardstick/benchmark/scenarios/availability/monitor/monitor_general.py b/yardstick/benchmark/scenarios/availability/monitor/monitor_general.py index c16765fe0..b058ae2b1 100644 --- a/yardstick/benchmark/scenarios/availability/monitor/monitor_general.py +++ b/yardstick/benchmark/scenarios/availability/monitor/monitor_general.py @@ -11,8 +11,8 @@ import logging import yardstick.ssh as ssh from yardstick.benchmark.scenarios.availability.monitor import basemonitor -from yardstick.benchmark.scenarios.availability.util import buildshellparams - +from yardstick.benchmark.scenarios.availability.util \ + import build_shell_command, execute_shell_command LOG = logging.getLogger(__name__) @@ -23,37 +23,41 @@ class GeneralMonitor(basemonitor.BaseMonitor): __monitor_type__ = "general-monitor" def setup(self): - host = self._context[self._config["host"]] + host = self._context.get(self._config.get('host', None), None) + self.connection = None + if host: + self.connection = ssh.SSH.from_node( + host, defaults={"user": "root"}) + self.connection.wait(timeout=600) + LOG.debug("ssh host success!") self.key = self._config["key"] self.monitor_key = self._config["monitor_key"] self.monitor_type = self._config["monitor_type"] - if "parameter" in self._config: - parameter = self._config['parameter'] - str = buildshellparams(parameter) - l = list(item for item in parameter.values()) - self.cmd_param = str.format(*l) - + self.parameter_config = self._config['parameter'] self.monitor_cfg = basemonitor.BaseMonitor.monitor_cfgs.get( self.monitor_key) self.monitor_script = self.get_script_fullpath( self.monitor_cfg['monitor_script']) - self.connection = ssh.SSH.from_node(host, defaults={"user": "root"}) - self.connection.wait(timeout=600) LOG.debug("ssh host success!") def monitor_func(self): if "parameter" in self._config: - with open(self.monitor_script, "r") as stdin_file: - exit_status, stdout, stderr = self.connection.execute( - "sudo {}".format(self.cmd_param), - stdin=stdin_file) + self.cmd_param = \ + build_shell_command( + self.parameter_config, + bool(self.connection), + self.intermediate_variables) + cmd_remote = "sudo {}".format(self.cmd_param) + cmd_local = "/bin/bash {0} {1}".format(self.monitor_script, self.cmd_param) else: + cmd_remote = "sudo /bin/sh -s " + cmd_local = "/bin/bash {0}".format(self.monitor_script) + if self.connection: with open(self.monitor_script, "r") as stdin_file: - exit_status, stdout, stderr = self.connection.execute( - "sudo /bin/bash -s ", - stdin=stdin_file) - + exit_status, stdout, stderr = self.connection.execute(cmd_remote, stdin=stdin_file) + else: + exit_status, stdout = execute_shell_command(cmd_local) if exit_status: return False return True |