Ejemplo n.º 1
0
    def calculateExpectedTraffic(self, tgDutLinks):
        """
        Verifies that the whole transmitted traffic was received and no packet loss occurred nor errors
        :param tgDutLinks: BastTest.TGDutLinks dict
        """
        funcname = GetFunctionName(self.calculateExpectedTraffic)
        self.logger.debug(funcname +
                          'Verify received traffic on ports is as expected')
        rxPortsExpectedCounters = {
            v: 0
            for v in set(chain(*self._rxInterfaces.values()))
        }
        acceptablePrecentLoss = 0.045
        for txNum, txDits in self._txInterfaces.items():
            for vlanTested in txDits['vlan_tested']:
                try:
                    for rxPort in self._rxInterfaces[str(vlanTested)]:
                        rxDutPort = tgDutLinks[int(rxPort)].DutDevPort
                        rxPvid = Bridge1QConfig.getPVID(rxDutPort)
                        isTagged = Bridge1QConfig.isTagged(
                            rxDutPort, vlanTested)

                        if rxPvid and rxPvid == vlanTested and isTagged and 'X' in txDits[
                                'packet_vids']:
                            rxPortsExpectedCounters[rxPort] += (txDits['vlan_tested'][vlanTested] - 1) \
                                                               * self.numOfPackets + \
                                                               self.numOfPackets * (1 - acceptablePrecentLoss)
                        else:
                            rxPortsExpectedCounters[rxPort] += txDits[
                                'vlan_tested'][vlanTested] * self.numOfPackets
                except KeyError:
                    continue

        return rxPortsExpectedCounters
Ejemplo n.º 2
0
 def addTriggers(self, tgDutLinks, srcMac='AA:AA:AA:AA:AA:00', mask=None):
     super(TrunkModeMultiBroadCastAPI, self).addTriggers(tgDutLinks, srcMac, mask)
     for rxPort in list(self._rxInterfaces.values())[-1]:
         vlanTested = list(self._rxInterfaces.keys())[-1]
         GenericVlanAPI._addTriggers(tgDutLinks[rxPort].TGPort, srcMac, mask)
         isTagged = Bridge1QConfig.isTagged(tgDutLinks[rxPort].DutDevPort.name, str(vlanTested))
         if isTagged:
             self._addVlanTagging(tgDutLinks[rxPort], toHex(vlanTested), vlanMask='0F')
Ejemplo n.º 3
0
    def addTriggers(self, tgDutLinks, srcMac='AA:AA:AA:AA:AA:00', mask=None):
        super(TrunkModeUnicastAPI, self).addTriggers(tgDutLinks, srcMac, mask)
        vlanTested = list(self._rxInterfaces.keys())[-1]
        GenericVlanAPI._addTriggers(tgDutLinks[self._rxInterfaces[vlanTested][-1]].TGPort, srcMac, srcMask=mask)
        isTagged = Bridge1QConfig.isTagged(tgDutLinks[self._rxInterfaces[vlanTested][-1]].DutDevPort, str(vlanTested))
        if isTagged:
            self._addVlanTagging(tgDutLinks[self._rxInterfaces[vlanTested][-1]], toHex(vlanTested), vlanMask='0F')

        for port in self._nonRxPorts:
            GenericVlanAPI._addTriggers(port.TGPort, srcMac, '00 00 00 00 00 FF')
Ejemplo n.º 4
0
 def addTriggers(self, tgDutLinks, srcMac='AA:AA:AA:AA:AA:00', mask=None):
     for txPort, txDits in self._txInterfaces.items():
         for vlanTested in txDits['vlan_tested']:
             try:
                 for rxPort in self._rxInterfaces[vlanTested]:
                     rxDutPort = tgDutLinks[rxPort].DutDevPort.name
                     isTagged = Bridge1QConfig.isTagged(rxDutPort, str(vlanTested))
                     if isTagged and not len(
                             [x for x in Bridge1QConfig.getVIDs(rxDutPort).values() if x != 'tagged']):
                         self._addVlanTagging(tgDutLinks[rxPort], toHex(vlanTested), txPort=tgDutLinks[int(txPort)])
             except KeyError as e:
                 if e.args[0] in txDits['vlan_tested'] or e.args[0] == 'X':
                     continue
                 raise KeyError
Ejemplo n.º 5
0
    def setupStream(self,
                    tgDutLinks,
                    srcMac='AA:AA:AA:AA:AA:00',
                    dstMac='ff:ff:ff:ff:ff:ff'):
        """
        :param tgDutLinks: BastTest.TGDutLinks dict
        :param srcMac: the source MAC of the packet
        :param dstMac: the destination MAC of the packet
        """
        super(GenericVlanUnicastAPI, self).setupStream(tgDutLinks, srcMac,
                                                       dstMac)
        for vlan, learningPortNum in self._rxInterfaces.items():
            learningPort = tgDutLinks[learningPortNum[-1]].TGPort
            if f'learningPacket#{vlan}' not in learningPort.streams:
                learningPort.add_stream(f'learningPacket#{vlan}')
                stream = learningPort.streams[f'learningPacket#{vlan}']
                stream.packet.mac.da.value = dstMac
                stream.packet.mac.sa.value = '00' + MAC.MacManager(
                ).GenerateRandomMac()[2:]
                stream.control.packets_per_burst = 1
                stream.control.mode = TGEnums.STREAM_TRANSMIT_MODE.ADVANCE_TO_NEXT_STREAM
                if Bridge1QConfig.isTagged(
                        tgDutLinks[learningPortNum[-1]].DutDevPort, vlan):
                    stream.packet.add_vlan(f'VID#{vlan}')
                    stream.packet.vlans[f'VID#{vlan}'].vid.value = vlan
                    stream.packet.size = self._packetSize + 4

        def setMacDest(vlanTested):
            stream.packet.mac.da.value = \
                tgDutLinks[self._rxInterfaces[vlanTested][-1]].TGPort.streams[
                    f'learningPacket#{vlanTested}'].packet.mac.sa.value

        for txPort, txDits in self._txInterfaces.items():
            for vlanTested in txDits['packet_vids']:
                stream = tgDutLinks[int(
                    txPort)].TGPort.streams[f'testPacketVID#{vlanTested}']
                try:
                    setMacDest(str(vlanTested))
                except KeyError as e:
                    if e.args[0] in ('X', '0'):
                        vlanTested = Bridge1QConfig.getPVID(
                            tgDutLinks[int(txPort)].DutDevPort)
                        setMacDest(vlanTested)