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):
22 def add(cls, dst, conn, dev):
25 ret = self.config_dev(netdev=dev)
29 def remove(cls, dst, conn, dev):
32 ret = self.recover_dev(netdev=dev)
36 def clear(cls, dst, conn):
38 self.clean_all_namespace()
41 class Actor(Fabricant):
43 def __init__(self, dst, conn, tool, params):
44 super(Actor, self).__init__(dst, conn)
50 repr_dict = self.__dict__
51 repr_keys = sorted(repr_dict.keys())
52 return '%s(%s)' % (self.__class__.__name__, ', '.join(
53 ['%s=%r' % (k, repr_dict[k]) for k in repr_keys]))
58 def start(self, pktsize, **kwargs):
59 LOG.info("Sender.start")
60 if 'ratep' in kwargs and kwargs['ratep']:
61 self._params['ratep'] = kwargs['ratep']
62 self._params['size'] = pktsize
64 ret, info = self.perf_run(
77 LOG.info(self._params)
85 minlatency, avglatency, maxlatency = 0, 0, 0
87 for (ret, info) in rets:
90 if self.is_data() and ret == 0:
92 minlatency += info[mark.minLatency]
93 avglatency += info[mark.avgLatency]
94 maxlatency += info[mark.maxLatency]
95 count = 1 if not count else count
96 self._data[mark.minLatency] = minlatency / count
97 self._data[mark.avgLatency] = avglatency / count
98 self._data[mark.maxLatency] = maxlatency / count
103 if '_lat' in self._params['protocol']:
111 class Receiver(Actor):
113 def start(self, **kwargs):
114 LOG.info("Receiver.start")
115 ret, info = self.perf_run(
123 raise Exception(info)
128 LOG.info("Receiver.stop")
129 ret, info = self.perf_run(
137 raise Exception(info)
142 class NicWatcher(Fabricant):
144 def __init__(self, dst, conn, params):
145 super(NicWatcher, self).__init__(dst, conn)
146 self._params = params
151 print "NicWatcher.start"
152 self._pid = self.run_vnstat(
153 device=self._params["iface"],
154 namespace=self._params["namespace"])
158 print "NicWatcher.stop"
160 data = self.kill_vnstat(pid=self._pid)
161 self._data = RawDataProcess.process(data)
162 print "---------------------------------"
164 print "---------------------------------"
166 def result(self, **kwargs):
170 class CpuWatcher(Fabricant):
172 def __init__(self, dst, conn):
173 super(CpuWatcher, self).__init__(dst, conn)
182 print "CpuWatcher.start"
183 self._pid = self.run_cpuwatch()
187 print "CpuWatcher.stop"
190 data = self.kill_cpuwatch(pid=self._pid)
191 self._data = RawDataProcess.process(data)
192 print "---------------------------------"
194 print "---------------------------------"
196 def result(self, **kwargs):
204 if __name__ == '__main__':