5 # see license for license details
9 operation: [start, stop, restart]
10 action: [send, receive]
11 tool: [pktgen, netperf, qperf, iperf, netmap]
13 protocol: [tcp_lat, udp_lat, tcp_bw, udp_bw]
16 { "iface":"eth0", "ip":"xxx.xxx.xxx.xxx", "mac":"FF:FF:FF:FF:FF:FF"}
19 { "iface":"eth0", "ip":"xxx.xxx.xxx.xxx", "mac":"FF:FF:FF:FF:FF:FF"}
29 import vstf.common.constants as cst
30 import vstf.common.decorator as deco
31 import vstf.agent.perf.pktgen as vstf_pktgen
32 import vstf.agent.perf.netmap as vstf_netmap
33 import vstf.agent.perf.qperf as vstf_qperf
34 import vstf.agent.perf.iperf as vstf_iperf
35 import vstf.agent.perf.netperf as vstf_netperf
37 LOG = logging.getLogger(__name__)
40 class Vstfperf(object):
42 for tool in cst.TOOLS:
43 obj_name = 'vstf_' + tool
44 obj = getattr(sys.modules[__name__], obj_name)
45 cls_name = tool.title()
46 cls = getattr(obj, tool.title())
47 self.__dict__.update({tool: cls()})
49 @deco.check("operation", choices=cst.OPERATIONS)
50 @deco.check("action", choices=cst.ACTIONS)
51 @deco.check("tool", choices=cst.TOOLS)
52 @deco.check("params", defaults={})
53 def run(self, **kwargs):
55 operation = kwargs.pop("operation")
56 tool = kwargs.pop("tool")
57 instance = getattr(self, tool)
58 action = kwargs.pop("action")
59 func_name = "%s_%s" % (action, operation)
60 func = getattr(instance, func_name)
61 LOG.info(kwargs['params'])
63 ret = func(**kwargs['params'])
66 def force_clean(self):
67 LOG.info("%s %s start", self.__class__, self.force_clean.__name__)
68 for tool in cst.TOOLS:
69 instance = getattr(self, tool)
70 instance.force_clean()
75 from vstf.common.log import setup_logging
76 setup_logging(level=logging.DEBUG, log_file="/var/log/vstf/vstf-vstfperf.log", clevel=logging.INFO)
84 "namespace": "vnet_name1",
85 "protocol": "udp_lat",
87 {"ip": "192.168.1.102"}
104 if __name__ == '__main__':