1 ##############################################################################
2 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
12 from vstf.controller.fabricant import Fabricant
13 from vstf.controller.sw_perf.raw_data import RawDataProcess
14 from vstf.common import perfmark as mark
16 LOG = logging.getLogger(__name__)
19 class NetDeviceMgr(Fabricant):
21 def add(cls, dst, conn, dev):
24 ret = self.config_dev(netdev=dev)
28 def remove(cls, dst, conn, dev):
31 ret = self.recover_dev(netdev=dev)
35 def clear(cls, dst, conn):
37 self.clean_all_namespace()
40 class Actor(Fabricant):
41 def __init__(self, dst, conn, tool, params):
42 super(Actor, self).__init__(dst, conn)
48 repr_dict = self.__dict__
49 repr_keys = list(repr_dict.keys())
51 return '%s(%s)' % (self.__class__.__name__, ', '.join(['%s=%r' % (k, repr_dict[k]) for k in repr_keys]))
55 def start(self, pktsize, **kwargs):
56 LOG.info("Sender.start")
57 if 'ratep' in kwargs and kwargs['ratep']:
58 self._params['ratep'] = kwargs['ratep']
59 self._params['size'] = pktsize
61 ret, info = self.perf_run(
74 LOG.info(self._params)
82 minlatency, avglatency, maxlatency = 0, 0, 0
84 for (ret, info) in rets:
87 if self.is_data() and ret == 0:
89 minlatency += info[mark.minLatency]
90 avglatency += info[mark.avgLatency]
91 maxlatency += info[mark.maxLatency]
92 count = 1 if not count else count
93 self._data[mark.minLatency] = minlatency / count
94 self._data[mark.avgLatency] = avglatency / count
95 self._data[mark.maxLatency] = maxlatency / count
100 if '_lat' in self._params['protocol']:
108 class Receiver(Actor):
109 def start(self, **kwargs):
110 LOG.info("Receiver.start")
111 ret, info = self.perf_run(
119 raise Exception(info)
124 LOG.info("Receiver.stop")
125 ret, info = self.perf_run(
133 raise Exception(info)
138 class NicWatcher(Fabricant):
139 def __init__(self, dst, conn, params):
140 super(NicWatcher, self).__init__(dst, conn)
141 self._params = params
146 print "NicWatcher.start"
147 self._pid = self.run_vnstat(device=self._params["iface"], namespace=self._params["namespace"])
151 print "NicWatcher.stop"
153 data = self.kill_vnstat(pid=self._pid)
154 self._data = RawDataProcess.process(data)
155 print "---------------------------------"
157 print "---------------------------------"
159 def result(self, **kwargs):
163 class CpuWatcher(Fabricant):
164 def __init__(self, dst, conn):
165 super(CpuWatcher, self).__init__(dst, conn)
174 print "CpuWatcher.start"
175 self._pid = self.run_cpuwatch()
179 print "CpuWatcher.stop"
182 data = self.kill_cpuwatch(pid=self._pid)
183 self._data = RawDataProcess.process(data)
184 print "---------------------------------"
186 print "---------------------------------"
188 def result(self, **kwargs):
196 if __name__ == '__main__':