X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=tools%2Fpkt_gen%2Fixnet%2Fixnet.py;h=5e4ae569451426e68d208a8b09613aa42c4bf44b;hb=a9e754b1050b17464d9e77a942068956d872894e;hp=aaedf05ac3936da6bfd4c26a9b6ec97a450ea6bc;hpb=a05bfbc0bd553f761962634609d626085b3b3beb;p=vswitchperf.git diff --git a/tools/pkt_gen/ixnet/ixnet.py b/tools/pkt_gen/ixnet/ixnet.py index aaedf05a..5e4ae569 100755 --- a/tools/pkt_gen/ixnet/ixnet.py +++ b/tools/pkt_gen/ixnet/ixnet.py @@ -1,4 +1,4 @@ -# Copyright 2015 Intel Corporation. +# Copyright 2015-2016 Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,8 +19,6 @@ This requires the following settings in your config file: * TRAFFICGEN_IXNET_LIB_PATH IxNetwork libraries path -* TRAFFICGEN_IXNET_HOST - IxNetwork host IP address * TRAFFICGEN_IXNET_PORT IxNetwork host port number * TRAFFICGEN_IXNET_USER @@ -32,7 +30,7 @@ This requires the following settings in your config file: as the previous one The following settings are also required. These can likely be shared -an 'Ixia' traffic generator instance: +with an 'Ixia' traffic generator instance: * TRAFFICGEN_IXIA_HOST IXIA chassis IP address @@ -153,7 +151,11 @@ class IxNet(trafficgen.ITrafficGenerator): Currently only the RFC2544 tests are implemented. """ - _script = os.path.join(os.path.dirname(__file__), 'ixnetrfc2544.tcl') + if settings.getValue('TRAFFICGEN_IXNET_TCL_SCRIPT') == '': + _script = os.path.join(os.path.dirname(__file__), 'ixnetrfc2544.tcl') + else: + _script = os.path.join(os.path.dirname(__file__), + settings.getValue('TRAFFICGEN_IXNET_TCL_SCRIPT')) _tclsh = tkinter.Tcl() _cfg = None _logger = logging.getLogger(__name__) @@ -200,7 +202,7 @@ class IxNet(trafficgen.ITrafficGenerator): """ pass - def send_cont_traffic(self, traffic=None, duration=30, multistream=False): + def send_cont_traffic(self, traffic=None, duration=30): """See ITrafficGenerator for description """ self.start_cont_traffic(traffic, duration) @@ -218,6 +220,7 @@ class IxNet(trafficgen.ITrafficGenerator): 'duration': duration, 'framerate': traffic['frame_rate'], 'multipleStreams': traffic['multistream'], + 'streamType': traffic['stream_type'], 'rfc2544TestType': 'throughput', } self._params['traffic'] = self.traffic_defaults.copy() @@ -250,15 +253,15 @@ class IxNet(trafficgen.ITrafficGenerator): """ return self._wait_result() - def send_rfc2544_throughput(self, traffic=None, trials=3, duration=20, - lossrate=0.0, multistream=False): + def send_rfc2544_throughput(self, traffic=None, tests=1, duration=20, + lossrate=0.0): """See ITrafficGenerator for description """ - self.start_rfc2544_throughput(traffic, trials, duration, lossrate) + self.start_rfc2544_throughput(traffic, tests, duration, lossrate) return self.wait_rfc2544_throughput() - def start_rfc2544_throughput(self, traffic=None, trials=3, duration=20, + def start_rfc2544_throughput(self, traffic=None, tests=1, duration=20, lossrate=0.0): """Start transmission. """ @@ -267,10 +270,11 @@ class IxNet(trafficgen.ITrafficGenerator): self._params['config'] = { 'binary': True, - 'trials': trials, + 'tests': tests, 'duration': duration, 'lossrate': lossrate, 'multipleStreams': traffic['multistream'], + 'streamType': traffic['stream_type'], 'rfc2544TestType': 'throughput', } self._params['traffic'] = self.traffic_defaults.copy() @@ -357,7 +361,7 @@ class IxNet(trafficgen.ITrafficGenerator): tx_mbps = 'Unknown' if bool(results.get(ResultsConstants.THROUGHPUT_RX_FPS)) \ - == False: + is False: prev_percent_rx = 0.0 else: prev_percent_rx = \ @@ -369,6 +373,7 @@ class IxNet(trafficgen.ITrafficGenerator): results[ResultsConstants.THROUGHPUT_RX_MBPS] = row[6] results[ResultsConstants.TX_RATE_PERCENT] = row[3] results[ResultsConstants.THROUGHPUT_RX_PERCENT] = row[4] + results[ResultsConstants.FRAME_LOSS_PERCENT] = row[10] results[ResultsConstants.MIN_LATENCY_NS] = row[11] results[ResultsConstants.MAX_LATENCY_NS] = row[12] results[ResultsConstants.AVG_LATENCY_NS] = row[13] @@ -382,15 +387,18 @@ class IxNet(trafficgen.ITrafficGenerator): # the results file return parse_ixnet_rfc_results(parse_result_string(output[0])) - def send_rfc2544_back2back(self, traffic=None, trials=1, duration=20, + def send_rfc2544_back2back(self, traffic=None, tests=1, duration=2, lossrate=0.0): """See ITrafficGenerator for description """ - self.start_rfc2544_back2back(traffic, trials, duration, lossrate) + # NOTE 2 seconds is the recommended duration for a back 2 back + # test in RFC2544. 50 trials is the recommended number from the + # RFC also. + self.start_rfc2544_back2back(traffic, tests, duration, lossrate) return self.wait_rfc2544_back2back() - def start_rfc2544_back2back(self, traffic=None, trials=1, duration=20, + def start_rfc2544_back2back(self, traffic=None, tests=1, duration=2, lossrate=0.0): """Start transmission. """ @@ -399,10 +407,11 @@ class IxNet(trafficgen.ITrafficGenerator): self._params['config'] = { 'binary': True, - 'trials': trials, + 'tests': tests, 'duration': duration, 'lossrate': lossrate, 'multipleStreams': traffic['multistream'], + 'streamType': traffic['stream_type'], 'rfc2544TestType': 'back2back', } self._params['traffic'] = self.traffic_defaults.copy() @@ -474,6 +483,7 @@ class IxNet(trafficgen.ITrafficGenerator): """ results = OrderedDict() results[ResultsConstants.B2B_FRAMES] = 0 + results[ResultsConstants.B2B_FRAME_LOSS_PERCENT] = 100 with open(path, 'r') as in_file: reader = csv.reader(in_file, delimiter=',') @@ -485,6 +495,7 @@ class IxNet(trafficgen.ITrafficGenerator): if int(row[12]) > \ int(results[ResultsConstants.B2B_FRAMES]): results[ResultsConstants.B2B_FRAMES] = int(row[12]) + results[ResultsConstants.B2B_FRAME_LOSS_PERCENT] = float(row[14]) return results