5 # see license for license details
9 from vstf.controller.fabricant import Fabricant
10 from vstf.controller.sw_perf.raw_data import RawDataProcess
11 from vstf.common import perfmark as mark
13 LOG = logging.getLogger(__name__)
16 class NetDeviceMgr(Fabricant):
18 def add(cls, dst, conn, dev):
21 ret = self.config_dev(netdev=dev)
25 def remove(cls, dst, conn, dev):
28 ret = self.recover_dev(netdev=dev)
32 def clear(cls, dst, conn):
34 self.clean_all_namespace()
37 class Actor(Fabricant):
38 def __init__(self, dst, conn, tool, params):
39 super(Actor, self).__init__(dst, conn)
45 repr_dict = self.__dict__
46 repr_keys = list(repr_dict.keys())
48 return '%s(%s)' % (self.__class__.__name__, ', '.join(['%s=%r' % (k, repr_dict[k]) for k in repr_keys]))
52 def start(self, pktsize, **kwargs):
53 LOG.info("Sender.start")
54 if 'ratep' in kwargs and kwargs['ratep']:
55 self._params['ratep'] = kwargs['ratep']
56 self._params['size'] = pktsize
58 ret, info = self.perf_run(
71 LOG.info(self._params)
79 minlatency, avglatency, maxlatency = 0, 0, 0
81 for (ret, info) in rets:
84 if self.is_data() and ret == 0:
86 minlatency += info[mark.minLatency]
87 avglatency += info[mark.avgLatency]
88 maxlatency += info[mark.maxLatency]
89 count = 1 if not count else count
90 self._data[mark.minLatency] = minlatency / count
91 self._data[mark.avgLatency] = avglatency / count
92 self._data[mark.maxLatency] = maxlatency / count
97 if '_lat' in self._params['protocol']:
105 class Receiver(Actor):
106 def start(self, **kwargs):
107 LOG.info("Receiver.start")
108 ret, info = self.perf_run(
116 raise Exception(info)
121 LOG.info("Receiver.stop")
122 ret, info = self.perf_run(
130 raise Exception(info)
135 class NicWatcher(Fabricant):
136 def __init__(self, dst, conn, params):
137 super(NicWatcher, self).__init__(dst, conn)
138 self._params = params
143 print "NicWatcher.start"
144 self._pid = self.run_vnstat(device=self._params["iface"], namespace=self._params["namespace"])
148 print "NicWatcher.stop"
150 data = self.kill_vnstat(pid=self._pid)
151 self._data = RawDataProcess.process(data)
152 print "---------------------------------"
154 print "---------------------------------"
156 def result(self, **kwargs):
160 class CpuWatcher(Fabricant):
161 def __init__(self, dst, conn):
162 super(CpuWatcher, self).__init__(dst, conn)
167 print "CpuWatcher.start"
168 self._pid = self.run_cpuwatch()
172 print "CpuWatcher.stop"
175 data = self.kill_cpuwatch(pid=self._pid)
176 self._data = RawDataProcess.process(data)
177 print "---------------------------------"
179 print "---------------------------------"
181 def result(self, **kwargs):
189 if __name__ == '__main__':