def do_test(n_data_packets, cc, add_events): """ The test has 2 hosts connected by a link, and one flow. """ em = EventManager(logging=False) host_1 = Host(em, 'H1', debug=False) host_2 = Host(em, 'H2', debug=False) sr = SeqNumberRecorder('S', host_2) l1_a = Link(em, 'L1_a', host_1, sr, DATA_PACKET_SIZE * 1000, 0.01, 5 * DATA_PACKET_SIZE, debug=False) l1_b = Link(em, 'L1_b', host_2, host_1, DATA_PACKET_SIZE * 1000, 0.01, 5 * DATA_PACKET_SIZE, debug=False) host_1.link = l1_a host_2.link = l1_b flow = Flow(em, 'F1', host_1, host_2, n_data_packets * DATA_PACKET_SIZE, 1, cc, debug=False) add_events(em, host_1, host_2, sr, l1_a, l1_b, flow) em.run() assert sr.seqs == set(range(n_data_packets + 1)) # print('Src send first unacked', flow.src.send_first_unacked, 'Src send next', flow.src.send_next, 'Dst receive next', flow.dst.receive_next) assert flow.src.last_seq_number == n_data_packets assert flow.src.send_first_unacked == n_data_packets + 1 assert flow.src.send_next == n_data_packets + 1 assert flow.dst.receive_next == n_data_packets + 1
def on_reception(self, t, p): self.packets.append(p) self.next_component.on_reception(t, p) em = EventManager(logging=False) host_1 = Host(em, 'H1', debug=True) p1 = PacketRecorder(host_1) host_2 = Host(em, 'H2', debug=True) p2 = PacketRecorder(host_2) l1_a = Link(em, 'L1_a', host_1, p2, 10485760, 0.01, 524288, debug=False) l1_b = Link(em, 'L1_b', host_2, p1, 10485760, 0.01, 524288, debug=False) host_1.link = l1_a host_2.link = l1_b flow = Flow(em, 'F1', host_1, host_2, DATA_PACKET_SIZE, 1, StopAndWait(), debug=True) em.run() # Packets sent by host 1 p2_expect = [ # SYN Packet('F11', flow, host_1, host_2, syn_flag = True, ack_flag = False, fin_flag = False, seq_number = 0, ack_number = None, size = CONTROL_PACKET_SIZE), # ACK of SYN Packet('F13', flow, host_1, host_2, syn_flag = False, ack_flag = True, fin_flag = False, seq_number = 1, ack_number = 1, size = CONTROL_PACKET_SIZE), # Data Packet('F14', flow, host_1, host_2, syn_flag = False, ack_flag = True, fin_flag = False, seq_number = 1, ack_number = 1, size = DATA_PACKET_SIZE), ] print([str(p) for p in p2.packets]) print([str(p) for p in p2_expect])
self.i = i em = EventManager(logging=False) h1 = MockHost('H1') h2 = MockHost('H2') f = MockFlow('F') # rate 1 pkt/sec, delay 10s l = Link(em, 'L', h1, h2, DATA_PACKET_SIZE, 10, DATA_PACKET_SIZE * 10, debug=False) l.on_packet_entry( 0, Packet('P1', f, h1, h2, False, False, False, 1, 0, DATA_PACKET_SIZE)) l.on_packet_entry( 0, Packet('P2', f, h1, h2, False, False, False, 2, 0, DATA_PACKET_SIZE)) l.on_packet_entry( 0, Packet('P3', f, h1, h2, False, False, False, 3, 0, DATA_PACKET_SIZE)) l.on_packet_entry( 0, Packet('P4', f, h1, h2, False, False, False, 4, 0, DATA_PACKET_SIZE)) l.on_packet_entry( 0, Packet('P5', f, h1, h2, False, False, False, 5, 0, DATA_PACKET_SIZE)) # print(l.buffer) # print(h2.packets, h2.times) em.run(stop_when_flows_done=False) assert h2.times == [11, 12, 13, 14, 15]