NFVBENCH-153 Add support for python3
[nfvbench.git] / nfvbench / traffic_gen / dummy.py
index 2a1064f..7fd3fdb 100644 (file)
@@ -13,8 +13,8 @@
 #    under the License.
 
 from nfvbench.log import LOG
-from traffic_base import AbstractTrafficGenerator
-import traffic_utils as utils
+from .traffic_base import AbstractTrafficGenerator
+from . import traffic_utils as utils
 
 
 class DummyTG(AbstractTrafficGenerator):
@@ -32,13 +32,7 @@ class DummyTG(AbstractTrafficGenerator):
         self.duration_sec = traffic_client.config.duration_sec
         self.intf_speed = traffic_client.generator_config.intf_speed
         self.set_response_curve()
-        # for packet capture, generate 2*scc random packets
-        # normally we should generate packets coming from the right dest macs
-        scc = traffic_client.config.service_chain_count
-        self.packet_list = [self._get_packet_capture(mac_id) for mac_id in range(scc * 2)]
-
-    def _get_packet_capture(self, mac_id):
-        return {'binary': 'SSSSSS01234' + str(mac_id)}
+        self.packet_list = None
 
     def get_version(self):
         return "0.1"
@@ -101,7 +95,7 @@ class DummyTG(AbstractTrafficGenerator):
         ports = list(self.traffic_client.generator_config.ports)
         self.port_handle = ports
 
-    def create_traffic(self, l2frame_size, rates, bidirectional, latency=True):
+    def create_traffic(self, l2frame_size, rates, bidirectional, latency=True, e2e=False):
         self.rates = [utils.to_rate_str(rate) for rate in rates]
         self.l2_frame_size = l2frame_size
 
@@ -164,7 +158,7 @@ class DummyTG(AbstractTrafficGenerator):
             latencies[port].avg_usec = 50
 
     def get_macs(self):
-        return ['00.00.00.00.00.01', '00.00.00.00.00.02']
+        return ['00:00:00:00:00:01', '00:00:00:00:00:02']
 
     def get_port_speed_gbps(self):
         """Return the local port speeds.
@@ -180,7 +174,17 @@ class DummyTG(AbstractTrafficGenerator):
         pass
 
     def fetch_capture_packets(self):
-        pass
+        def _get_packet_capture(mac):
+            # convert text to binary
+            src_mac = bytearray.fromhex(mac.replace(':', '')).decode()
+            return {'binary': bytes('SSSSSS' + src_mac, 'ascii')}
+
+        # for packet capture, generate 2*scc random packets
+        # normally we should generate packets coming from the right dest macs
+        self.packet_list = []
+        for dest_macs in self.traffic_client.generator_config.get_dest_macs():
+            for mac in dest_macs:
+                self.packet_list.append(_get_packet_capture(mac))
 
     def stop_traffic(self):
         pass
@@ -197,7 +201,14 @@ class DummyTG(AbstractTrafficGenerator):
     def set_mode(self):
         pass
 
+    def set_service_mode(self, enabled=True):
+        pass
+
     def resolve_arp(self):
         """Resolve ARP sucessfully."""
-        LOG.info('Dummy TG ARP OK')
-        return True
+        def get_macs(port, scc):
+            return ['00:00:00:00:%02x:%02x' % (port, chain) for chain in range(scc)]
+        scc = self.traffic_client.generator_config.service_chain_count
+        res = [get_macs(port, scc) for port in range(2)]
+        LOG.info('Dummy TG ARP: %s', str(res))
+        return res