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