import sys
from nfvbench.log import LOG
-import traffic_utils
+from . import traffic_utils
+
class Latency(object):
"""A class to hold latency data."""
latency_list: aggregate all latency values from list if not None
"""
- self.min_usec = sys.maxint
+ self.min_usec = sys.maxsize
self.max_usec = 0
self.avg_usec = 0
+ self.hdrh = None
if latency_list:
for lat in latency_list:
if lat.available():
def available(self):
"""Return True if latency information is available."""
- return self.min_usec != sys.maxint
+ return self.min_usec != sys.maxsize
class TrafficGeneratorException(Exception):
"""Exception for traffic generator."""
- pass
-
-
class AbstractTrafficGenerator(object):
+
def __init__(self, traffic_client):
self.traffic_client = traffic_client
self.generator_config = traffic_client.generator_config
self.config = traffic_client.config
- self.imix_l2_sizes = [64, 594, 1518]
- self.imix_ratios = [7, 4, 1]
- self.imix_avg_l2_size = 0
- self.adjust_imix_min_size(64)
@abc.abstractmethod
def get_version(self):
return None
@abc.abstractmethod
- def create_traffic(self, l2frame_size, rates, bidirectional, latency=True):
+ def create_traffic(self, l2frame_size, rates, bidirectional, latency=True, e2e=False):
# Must be implemented by sub classes
return None
def clear_streamblock(self):
"""Clear all streams from the traffic generator."""
- pass
@abc.abstractmethod
def resolve_arp(self):
"""Resolve all configured remote IP addresses.
- return: True if ARP resolved successfully
+ return: None if ARP failed to resolve for all IP addresses
+ else a dict of list of dest macs indexed by port#
+ the dest macs in the list are indexed by the chain id
"""
- pass
@abc.abstractmethod
def get_macs(self):
return: a list of MAC addresses indexed by the port#
"""
- pass
@abc.abstractmethod
def get_port_speed_gbps(self):
return: a list of speed in Gbps indexed by the port#
"""
- pass
-
- def adjust_imix_min_size(self, min_size):
- # assume the min size is always the first entry
- self.imix_l2_sizes[0] = min_size
- self.imix_avg_l2_size = sum(
- [1.0 * imix[0] * imix[1] for imix in zip(self.imix_l2_sizes, self.imix_ratios)]) / sum(
- self.imix_ratios)
- traffic_utils.imix_avg_l2_size = self.imix_avg_l2_size