예제 #1
0
    def _create_single_stream(self,
                              current_port,
                              imix_data,
                              imix_sum,
                              isg=0.0):
        streams = []
        for size, weight in ((int(size), float(weight))
                             for (size, weight) in imix_data.items()
                             if float(weight) > 0):
            if current_port == 1:
                isg += 10.0
            if self.max_rate > 100:
                mode = trex_stl_streams.STLTXCont(pps=int(weight * imix_sum /
                                                          100))
                mode_lat = mode
            else:
                mode = trex_stl_streams.STLTXCont(percentage=weight *
                                                  self.max_rate / 100)
                mode_lat = trex_stl_streams.STLTXCont(pps=9000)

            packet, packet_lat = self._create_single_packet(size)
            streams.append(
                trex_stl_client.STLStream(isg=isg, packet=packet, mode=mode))
            if self.enable_latency:
                pg_id = self.port_pg_id.increase_pg_id(current_port)
                stl_flow = trex_stl_streams.STLFlowLatencyStats(pg_id=pg_id)
                stream_lat = trex_stl_client.STLStream(isg=isg,
                                                       packet=packet_lat,
                                                       mode=mode_lat,
                                                       flow_stats=stl_flow)
                streams.append(stream_lat)
        return streams
예제 #2
0
    def _create_streams(self, imix_data, rate, port_pg_id, enable_latency):
        """Create a list of streams per packet size

        The STL TX mode speed of the generated streams will depend on the frame
        weight and the frame rate. Both the frame weight and the total frame
        rate are normalized to 100. The STL TX mode speed, defined in
        percentage, is the combitation of both percentages. E.g.:
          frame weight = 100
          rate = 90
            --> STLTXmode percentage = 10 (%)

          frame weight = 80
          rate = 50
            --> STLTXmode percentage = 40 (%)

        :param imix_data: (dict) IMIX size and weight
        :param rate: (float) normalized [0..100] total weight
        :param pg_id: (PortPgIDMap) port / pg_id (list) map
        """
        streams = []
        for size, weight in ((int(size), float(weight))
                             for (size, weight) in imix_data.items()
                             if float(weight) > 0):
            packet = self._create_single_packet(size)
            pg_id = port_pg_id.increase_pg_id()
            stl_flow = (trex_stl_streams.STLFlowLatencyStats(
                pg_id=pg_id) if enable_latency else None)
            mode = trex_stl_streams.STLTXCont(percentage=weight * rate / 100)
            streams.append(
                trex_stl_client.STLStream(packet=packet,
                                          flow_stats=stl_flow,
                                          mode=mode))
        return streams