diff options
Diffstat (limited to 'testsuites/vstf/vstf_scripts/vstf/controller/sw_perf')
6 files changed, 101 insertions, 47 deletions
diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py index df7d24d0..83b8d15d 100644 --- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py +++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/__init__.py @@ -6,4 +6,3 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## - diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py index 4a3b02c2..a4bd1467 100644 --- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py +++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/flow_producer.py @@ -21,6 +21,7 @@ LOG = logging.getLogger(__name__) class FlowsProducer(object): + def __init__(self, conn, flows_settings): self._perf = flows_settings self._forwarding = ForwardingSettings().settings @@ -43,12 +44,13 @@ class FlowsProducer(object): raise Exception("error devs :%s", devs) LOG.info(agent) LOG.info(name) - if not self._devs_map.has_key((agent, name)): + if (agent, name) not in self._devs_map: query = Fabricant(agent, self._conn) query.clean_all_namespace() dev_info = query.get_device_verbose(identity=name) if not isinstance(dev_info, dict): - err = "get device detail failed, agent:%s net:%s" % (agent, name) + err = "get device detail failed, agent:%s net:%s" % ( + agent, name) raise Exception(err) dev = { "agent": agent, @@ -127,7 +129,10 @@ class FlowsProducer(object): def unit_test(): from vstf.rpc_frame_work.rpc_producer import Server from vstf.common.log import setup_logging - setup_logging(level=logging.INFO, log_file="/var/log/vstf/vstf-producer.log", clevel=logging.INFO) + setup_logging( + level=logging.INFO, + log_file="/var/log/vstf/vstf-producer.log", + clevel=logging.INFO) conn = Server("192.168.188.10") flow_settings = FlowsSettings() diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py index c49df041..8e3e7b22 100644 --- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py +++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/model.py @@ -17,6 +17,7 @@ LOG = logging.getLogger(__name__) class NetDeviceMgr(Fabricant): + @classmethod def add(cls, dst, conn, dev): self = cls(dst, conn) @@ -38,6 +39,7 @@ class NetDeviceMgr(Fabricant): class Actor(Fabricant): + def __init__(self, dst, conn, tool, params): super(Actor, self).__init__(dst, conn) self._tool = tool @@ -46,12 +48,13 @@ class Actor(Fabricant): def __repr__(self): repr_dict = self.__dict__ - repr_keys = list(repr_dict.keys()) - repr_keys.sort() - return '%s(%s)' % (self.__class__.__name__, ', '.join(['%s=%r' % (k, repr_dict[k]) for k in repr_keys])) + repr_keys = sorted(repr_dict.keys()) + return '%s(%s)' % (self.__class__.__name__, ', '.join( + ['%s=%r' % (k, repr_dict[k]) for k in repr_keys])) class Sender(Actor): + def start(self, pktsize, **kwargs): LOG.info("Sender.start") if 'ratep' in kwargs and kwargs['ratep']: @@ -106,6 +109,7 @@ class Sender(Actor): class Receiver(Actor): + def start(self, **kwargs): LOG.info("Receiver.start") ret, info = self.perf_run( @@ -136,6 +140,7 @@ class Receiver(Actor): class NicWatcher(Fabricant): + def __init__(self, dst, conn, params): super(NicWatcher, self).__init__(dst, conn) self._params = params @@ -144,7 +149,9 @@ class NicWatcher(Fabricant): def start(self): print "NicWatcher.start" - self._pid = self.run_vnstat(device=self._params["iface"], namespace=self._params["namespace"]) + self._pid = self.run_vnstat( + device=self._params["iface"], + namespace=self._params["namespace"]) print self._pid def stop(self): @@ -161,6 +168,7 @@ class NicWatcher(Fabricant): class CpuWatcher(Fabricant): + def __init__(self, dst, conn): super(CpuWatcher, self).__init__(dst, conn) self._pid = None diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py index 396e6eef..3fdbad60 100644 --- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py +++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/perf_provider.py @@ -26,6 +26,7 @@ def get_agent_dict(nodes): class PerfProvider(object): + def __init__(self, flows_info, tool_info, tester_info): self._flows_info = flows_info self._tool_info = tool_info @@ -33,7 +34,8 @@ class PerfProvider(object): def _islation(self): flows = self._flows_info["flows"] - if flows == 2 and self._flows_info["senders"][0]["agent"] == self._flows_info["senders"][1]["agent"]: + if flows == 2 and self._flows_info["senders"][0][ + "agent"] == self._flows_info["senders"][1]["agent"]: return True return False @@ -53,8 +55,10 @@ class PerfProvider(object): } } for i in range(flows): - sender['params']['src'].append(self._flows_info["senders"][i]['dev']) - sender['params']['dst'].append(self._flows_info["receivers"][i]['dev']) + sender['params']['src'].append( + self._flows_info["senders"][i]['dev']) + sender['params']['dst'].append( + self._flows_info["receivers"][i]['dev']) result.append(sender) else: for i in range(flows): @@ -63,12 +67,12 @@ class PerfProvider(object): "params": { "protocol": protocol, "namespace": None if "netmap" == tool else self._flows_info["senders"][i]['dev']['namespace'], - "src": [self._flows_info["senders"][i]['dev']], - "dst": [self._flows_info["receivers"][i]['dev']], + "src": [ + self._flows_info["senders"][i]['dev']], + "dst": [ + self._flows_info["receivers"][i]['dev']], "time": self._tool_info[tool]["time"], - "threads": self._tool_info[tool]["threads"] - } - } + "threads": self._tool_info[tool]["threads"]}} result.append(sender) return result @@ -91,9 +95,8 @@ class PerfProvider(object): "params": { "namespace": None if "netmap" == tool else self._flows_info["receivers"][i]['dev']['namespace'], "protocol": protocol, - "dst": [self._flows_info["receivers"][i]['dev']] - } - } + "dst": [ + self._flows_info["receivers"][i]['dev']]}} result.append(receiver) return result @@ -104,9 +107,10 @@ class PerfProvider(object): "agent": watcher["agent"], "params": { "iface": watcher['dev']["iface"], - "namespace": None if tool in ["pktgen", "netmap"] else watcher['dev']["namespace"], - } - } + "namespace": None if tool in [ + "pktgen", + "netmap"] else watcher['dev']["namespace"], + }} result.append(node) return result @@ -118,10 +122,12 @@ class PerfProvider(object): "agent": watcher["agent"], "params": { "iface": watcher['dev']["iface"], - "namespace": watcher['dev']["namespace"] if tool not in ["pktgen", "netmap"] else None, - "ip": watcher['dev']["ip"] + '/24', - } - } + "namespace": watcher['dev']["namespace"] if tool not in [ + "pktgen", + "netmap"] else None, + "ip": watcher['dev']["ip"] + + '/24', + }} result.append(node) return result @@ -176,7 +182,10 @@ class PerfProvider(object): def unit_test(): from vstf.common.log import setup_logging - setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-perf-provider.log", clevel=logging.INFO) + setup_logging( + level=logging.DEBUG, + log_file="/var/log/vstf/vstf-perf-provider.log", + clevel=logging.INFO) from vstf.controller.settings.flows_settings import FlowsSettings from vstf.controller.settings.tool_settings import ToolSettings @@ -186,7 +195,10 @@ def unit_test(): tool_settings = ToolSettings() tester_settings = TesterSettings() - provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings) + provider = PerfProvider( + flows_settings.settings, + tool_settings.settings, + tester_settings.settings) tools = ['pktgen'] protocols = ['udp_bw', 'udp_lat'] diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py index 3fe91e93..7dc426f8 100644 --- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py +++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/performance.py @@ -29,6 +29,7 @@ LOG = logging.getLogger(__name__) class Performance(object): + def __init__(self, conn, provider): self._provider = provider self._conn = conn @@ -221,7 +222,8 @@ class Performance(object): lat_tool = "qperf" lat_type = 'latency' lat_tpro = protocol + '_lat' - self.run_latency_test(lat_tool, lat_tpro, size, ratep=realspeed) + self.run_latency_test( + lat_tool, lat_tpro, size, ratep=realspeed) lat_result = self.result(tool, lat_type) LOG.info(bw_result) LOG.info(lat_result) @@ -272,23 +274,32 @@ class Performance(object): record[mark.txMbps] += nic_data['txmB/s'] * 8 if record[mark.rxMbps] > record[mark.txMbps]: - record[mark.rxMbps], record[mark.txMbps] = record[mark.txMbps], record[mark.rxMbps] + record[ + mark.rxMbps], record[ + mark.txMbps] = record[ + mark.txMbps], record[ + mark.rxMbps] if record[mark.rxCount] > record[mark.txCount]: - record[mark.rxCount], record[mark.txCount] = record[mark.txCount], record[mark.rxCount] + record[ + mark.rxCount], record[ + mark.txCount] = record[ + mark.txCount], record[ + mark.rxCount] if record[mark.txCount]: - record[mark.percentLoss] = round(100 * (1 - record[mark.rxCount] / record[mark.txCount]), - cst.PKTLOSS_ROUND) + record[mark.percentLoss] = round( + 100 * (1 - record[mark.rxCount] / record[mark.txCount]), cst.PKTLOSS_ROUND) else: record[mark.percentLoss] = 100 record[mark.bandwidth] /= 1000000.0 if cpu_mhz and record[mark.cpu]: - record[mark.mppsGhz] = round(record[mark.bandwidth] / (record[mark.cpu] * cpu_mhz / 100000), - cst.CPU_USAGE_ROUND) + record[mark.mppsGhz] = round( + record[mark.bandwidth] / (record[mark.cpu] * cpu_mhz / 100000), cst.CPU_USAGE_ROUND) - record[mark.bandwidth] = round(record[mark.bandwidth], cst.RATEP_ROUND) + record[mark.bandwidth] = round( + record[mark.bandwidth], cst.RATEP_ROUND) elif ttype in {'latency'}: record = { @@ -319,7 +330,10 @@ class Performance(object): def unit_test(): from vstf.common.log import setup_logging - setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-sw_perf.log", clevel=logging.INFO) + setup_logging( + level=logging.DEBUG, + log_file="/var/log/vstf/vstf-sw_perf.log", + clevel=logging.INFO) conn = Server("192.168.188.10") perf_settings = PerfSettings() @@ -327,7 +341,10 @@ def unit_test(): tool_settings = ToolSettings() tester_settings = TesterSettings() flow_producer = FlowsProducer(conn, flows_settings) - provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings) + provider = PerfProvider( + flows_settings.settings, + tool_settings.settings, + tester_settings.settings) perf = Performance(conn, provider) tests = perf_settings.settings for scenario, cases in tests.items(): @@ -348,7 +365,10 @@ def unit_test(): def main(): from vstf.common.log import setup_logging - setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-performance.log", clevel=logging.INFO) + setup_logging( + level=logging.DEBUG, + log_file="/var/log/vstf/vstf-performance.log", + clevel=logging.INFO) from vstf.controller.database.dbinterface import DbManage parser = argparse.ArgumentParser(add_help=True) parser.add_argument("case", @@ -374,9 +394,10 @@ def main(): action="store", default="64", help='test size list "64 128"') - parser.add_argument("--affctl", - action="store_true", - help="when input '--affctl', the performance will do affctl before testing") + parser.add_argument( + "--affctl", + action="store_true", + help="when input '--affctl', the performance will do affctl before testing") parser.add_argument("--monitor", dest="monitor", default="localhost", @@ -399,7 +420,10 @@ def main(): tool_settings = ToolSettings() tester_settings = TesterSettings() flow_producer = FlowsProducer(conn, flows_settings) - provider = PerfProvider(flows_settings.settings, tool_settings.settings, tester_settings.settings) + provider = PerfProvider( + flows_settings.settings, + tool_settings.settings, + tester_settings.settings) perf = Performance(conn, provider) scenario = db_mgr.query_scenario(casetag) flow_producer.create(scenario, casetag) diff --git a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py index aefb863d..828981db 100644 --- a/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py +++ b/testsuites/vstf/vstf_scripts/vstf/controller/sw_perf/raw_data.py @@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__) class RawDataProcess(object): + def __init__(self): pass @@ -24,7 +25,9 @@ class RawDataProcess(object): buf = ' '.join(buf) m = {} digits = re.compile(r"\d{1,}\.?\d*") - units = re.compile(r"(?:gib|mib|kib|kbit/s|gbit/s|mbit/s|p/s)", re.IGNORECASE | re.MULTILINE) + units = re.compile( + r"(?:gib|mib|kib|kbit/s|gbit/s|mbit/s|p/s)", + re.IGNORECASE | re.MULTILINE) units_arr = units.findall(buf) LOG.debug(units_arr) digits_arr = digits.findall(buf) @@ -96,9 +99,9 @@ class RawDataProcess(object): m = self.process_vnstat(data) if tool == 'sar' and data_type == 'cpu': m = self.process_sar_cpu(data) - if raw.has_key('cpu_num'): + if 'cpu_num' in raw: m['cpu_num'] = raw['cpu_num'] - if raw.has_key('cpu_mhz'): + if 'cpu_mhz' in raw: m['cpu_mhz'] = raw['cpu_mhz'] if tool == 'qperf': m = self.process_qperf(data) @@ -121,7 +124,10 @@ if __name__ == '__main__': print p.process_vnstat(data) cmd = "sar -u 2" - child = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE) + child = subprocess.Popen( + cmd.split(), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) import time import os from signal import SIGINT |