コード例 #1
0
    def applyCountermeasureOld(trace, metadata):
        [targetBursts] = metadata

        rndmIndx = random.randint(0,
                                  len(targetBursts) -
                                  1)  # pick a trace from target at random

        # burst tuple = (direction, size, number, timeDiff, burstPackets)
        # pick one trace randomly [(tuple), (tuple), ...]
        targetBurstsList = targetBursts[rndmIndx]

        sourceBurstsList = trace.getBurstsListWithPackets()

        newTrace = Trace(trace.getId())

        pointer = 0  # to loop over burst tuples in src and trgt in order until one is exhausted

        while True:
            if pointer >= len(sourceBurstsList) or pointer >= len(
                    targetBurstsList):
                break

            sourceBurstPackets = sourceBurstsList[pointer][
                4]  # list of packets for that burst
            targetBurstPackets = targetBurstsList[pointer][4]

            srcPktTimes = []
            for packet in sourceBurstPackets:
                srcPktTimes.append(packet.getTime())

            lastSrcPktTime = srcPktTimes[
                -1]  # for extra burst padding down below, before pop

            if len(sourceBurstPackets) < len(targetBurstPackets):
                for packet in targetBurstPackets:
                    if len(srcPktTimes) != 0:
                        newPktTime = srcPktTimes.pop(
                            0)  # remove first from the queue
                        # eventually last src packet time is repeated
                        # to make sure we don't exceed original burst transimission time

                    newPkt = Packet(packet.getDirection(), newPktTime,
                                    packet.getLength())
                    newTrace.addPacket(newPkt)
            else:
                for packet in sourceBurstPackets:
                    newTrace.addPacket(packet)

            pointer += 1

        while pointer < len(sourceBurstsList):
            sourceBurstPackets = sourceBurstsList[pointer][4]
            for packet in sourceBurstPackets:
                newTrace.addPacket(packet)
            pointer += 1

        # extra bursts tail
        # '''
        while pointer < len(targetBurstsList):
            targetBurstPackets = targetBurstsList[pointer][4]
            for packet in targetBurstPackets:
                lastSrcPktTime += 1
                newPkt = Packet(packet.getDirection(), lastSrcPktTime,
                                packet.getLength())
                newTrace.addPacket(newPkt)
            pointer += 1
        # '''

        print str(trace.getId())
        print str(trace.getPacketCount())
        print str(newTrace.getPacketCount())
        print "--------------"
        return newTrace