def test_jitter_collision(self):
        capacity_kbps = 2000.0
        payload_size_bytes = 1200.0
        travel_time_ms = (8 * payload_size_bytes) / capacity_kbps
        # Packets are sent close one to another, but they should not be reordered.
        packet_gap_ms = travel_time_ms
        for jitter_intensity in range(3):
            link_simulator = LinkSimulator(capacity_kbps, jitter_intensity)
            last_arrival_time_ms = 0.0
            jitter_sample_ms = []
            for i in range(100000):
                send_time_ms = i * packet_gap_ms
                packet = Packet(i, send_time_ms, payload_size_bytes)
                link_simulator.send_packet(packet)
                self.assertTrue(packet.arrival_time_ms >= last_arrival_time_ms)
                last_arrival_time_ms = packet.arrival_time_ms
                jitter_ms = packet.arrival_time_ms - send_time_ms \
                          - travel_time_ms - link_simulator.ONE_WAY_PATH_DELAY_MS
                self.assertBetween(jitter_ms, 0.0, link_simulator.MAX_JITTER_MS, 0.001)
                jitter_sample_ms.append(jitter_ms)

            if TestLinkSimulator.PLOT:
                plot.hist(jitter_sample_ms, bins=30, normed=1)
                plot.title("Jitter intensity " + str(jitter_intensity) + ", sample 2 - collision")
                plot.xlabel("ms", fontsize=14)
                plot.ylabel("Probability density", fontsize=14)
                plot.show()
示例#2
0
    def test_jitter_collision(self):
        capacity_kbps = 2000.0
        payload_size_bytes = 1200.0
        travel_time_ms = (8 * payload_size_bytes) / capacity_kbps
        # Packets are sent close one to another, but they should not be reordered.
        packet_gap_ms = travel_time_ms
        for jitter_intensity in range(3):
            link_simulator = LinkSimulator(capacity_kbps, jitter_intensity)
            last_arrival_time_ms = 0.0
            jitter_sample_ms = []
            for i in range(100000):
                send_time_ms = i * packet_gap_ms
                packet = Packet(i, send_time_ms, payload_size_bytes)
                link_simulator.send_packet(packet)
                self.assertTrue(packet.arrival_time_ms >= last_arrival_time_ms)
                last_arrival_time_ms = packet.arrival_time_ms
                jitter_ms = packet.arrival_time_ms - send_time_ms \
                          - travel_time_ms - link_simulator.ONE_WAY_PATH_DELAY_MS
                self.assertBetween(jitter_ms, 0.0,
                                   link_simulator.MAX_JITTER_MS, 0.001)
                jitter_sample_ms.append(jitter_ms)

            if TestLinkSimulator.PLOT:
                plot.hist(jitter_sample_ms, bins=30, normed=1)
                plot.title("Jitter intensity " + str(jitter_intensity) +
                           ", sample 2 - collision")
                plot.xlabel("ms", fontsize=14)
                plot.ylabel("Probability density", fontsize=14)
                plot.show()
示例#3
0
    def test_jitter(self):
        capacity_kbps = 1500.0
        payload_size_bytes = 1200.0
        travel_time_ms = (8 * payload_size_bytes) / capacity_kbps
        # Send packets sparsely to maintain an empty queue.
        packet_gap_ms = 5 * travel_time_ms
        for jitter_intensity in range(3):
            link_simulator = LinkSimulator(capacity_kbps, jitter_intensity)
            jitter_sample_ms = []
            for i in range(100000):
                send_time_ms = i * packet_gap_ms
                packet = Packet(i, send_time_ms, payload_size_bytes)
                link_simulator.send_packet(packet)
                jitter_ms = packet.arrival_time_ms - send_time_ms \
                          - travel_time_ms - link_simulator.ONE_WAY_PATH_DELAY_MS
                self.assertBetween(jitter_ms, 0.0,
                                   link_simulator.MAX_JITTER_MS, 0.001)
                jitter_sample_ms.append(jitter_ms)

            if TestLinkSimulator.PLOT:
                plot.hist(jitter_sample_ms, bins=30, normed=1)
                plot.title("Jitter intensity " + str(jitter_intensity) +
                           ", sample")
                plot.xlabel("ms", fontsize=14)
                plot.ylabel("Probability density", fontsize=14)
                plot.show()
 def test_bottleneck_queue_limit(self):
     for i in range(10):
         capacity_kbps = random.uniform(150.0, 2500.0)
         link_simulator = LinkSimulator(capacity_kbps, 0)
         # Package larger than bottleneck queue limit, should be lost.
         payload_size_bytes = (1.1 * link_simulator.BOTTLENECK_QUEUE_SIZE_MS * capacity_kbps) / 8
         packet = Packet(1, 0.0, payload_size_bytes)
         link_simulator.send_packet(packet)
         self.assertIs(packet.arrival_time_ms, None)
示例#5
0
 def test_bottleneck_queue_limit(self):
     for i in range(10):
         capacity_kbps = random.uniform(150.0, 2500.0)
         link_simulator = LinkSimulator(capacity_kbps, 0)
         # Package larger than bottleneck queue limit, should be lost.
         payload_size_bytes = (1.1 * link_simulator.BOTTLENECK_QUEUE_SIZE_MS
                               * capacity_kbps) / 8
         packet = Packet(1, 0.0, payload_size_bytes)
         link_simulator.send_packet(packet)
         self.assertIs(packet.arrival_time_ms, None)
 def test_send_single_packet(self):
     packet_sizes = [0.0, 1200.0]  # Empty or non-empty packet
     for payload_size_bytes in packet_sizes:
         for i in range(10):
             capacity_kbps = random.uniform(150.0, 2500.0)
             link_simulator = LinkSimulator(capacity_kbps, 0)
             packet = Packet(1, 0.0, payload_size_bytes)
             link_simulator.send_packet(packet)
             travel_time_ms = link_simulator.ONE_WAY_PATH_DELAY_MS + (8 * payload_size_bytes)/capacity_kbps
             self.assertBetween(packet.arrival_time_ms, travel_time_ms,
                                travel_time_ms + link_simulator.MAX_JITTER_MS, 0.001)
示例#7
0
 def test_send_single_packet(self):
     packet_sizes = [0.0, 1200.0]  # Empty or non-empty packet
     for payload_size_bytes in packet_sizes:
         for i in range(10):
             capacity_kbps = random.uniform(150.0, 2500.0)
             link_simulator = LinkSimulator(capacity_kbps, 0)
             packet = Packet(1, 0.0, payload_size_bytes)
             link_simulator.send_packet(packet)
             travel_time_ms = link_simulator.ONE_WAY_PATH_DELAY_MS + (
                 8 * payload_size_bytes) / capacity_kbps
             self.assertBetween(
                 packet.arrival_time_ms, travel_time_ms,
                 travel_time_ms + link_simulator.MAX_JITTER_MS, 0.001)
def __test_single_flow(sender, receiver, times_ms, capacities_kbps, jitter):
    """
    Simulates a RMCAT single flow on a variable capacity link.
    """
    link_simulator = LinkSimulator(None, jitter)
    now_ms = 0.0

    for i in range(len(capacities_kbps)):
        link_simulator.capacity_kbps = capacities_kbps[i]
        end_time_ms = times_ms[i]
        while now_ms < end_time_ms:
            packet = sender.create_packet()
            link_simulator.send_packet(packet)
            if packet.arrival_time_ms is not None:
                receiver.receive_packet(packet)
            feedback = receiver.get_feedback()
            if feedback is not None:
                sender.receive_feedback(feedback)
            now_ms = packet.send_time_ms

    __print(receiver)
    __plot(receiver, times_ms, capacities_kbps)
def __test_single_flow(sender, receiver, times_ms, capacities_kbps, jitter):
    """
    Simulates a RMCAT single flow on a variable capacity link.
    """
    link_simulator = LinkSimulator(None, jitter)
    now_ms = 0.0

    for i in range(len(capacities_kbps)):
        link_simulator.capacity_kbps = capacities_kbps[i]
        end_time_ms = times_ms[i]
        while now_ms < end_time_ms:
            packet = sender.create_packet()
            link_simulator.send_packet(packet)
            if packet.arrival_time_ms is not None:
                receiver.receive_packet(packet)
            feedback = receiver.get_feedback()
            if feedback is not None:
                sender.receive_feedback(feedback)
            now_ms = packet.send_time_ms

    __print(receiver)
    __plot(receiver, times_ms, capacities_kbps)
    def test_jitter(self):
        capacity_kbps = 1500.0
        payload_size_bytes = 1200.0
        travel_time_ms = (8 * payload_size_bytes) / capacity_kbps
        # Send packets sparsely to maintain an empty queue.
        packet_gap_ms = 5 * travel_time_ms
        for jitter_intensity in range(3):
            link_simulator = LinkSimulator(capacity_kbps, jitter_intensity)
            jitter_sample_ms = []
            for i in range(100000):
                send_time_ms = i * packet_gap_ms
                packet = Packet(i, send_time_ms, payload_size_bytes)
                link_simulator.send_packet(packet)
                jitter_ms = packet.arrival_time_ms - send_time_ms \
                          - travel_time_ms - link_simulator.ONE_WAY_PATH_DELAY_MS
                self.assertBetween(jitter_ms, 0.0, link_simulator.MAX_JITTER_MS, 0.001)
                jitter_sample_ms.append(jitter_ms)

            if TestLinkSimulator.PLOT:
                plot.hist(jitter_sample_ms, bins=30, normed=1)
                plot.title("Jitter intensity " + str(jitter_intensity) + ", sample")
                plot.xlabel("ms", fontsize=14)
                plot.ylabel("Probability density", fontsize=14)
                plot.show()