def test_pop_extracts_packets_in_correct_order(): sim = Mock() sim.stime = 0 data_size = [123, 412] packets = [NetworkPacket(data=AppData(0, sz, 0, 0)) for sz in data_size] queue = Queue(sim, capacity=2) queue.push(packets[0]) queue.push(packets[1]) assert queue.pop() == packets[0] assert not queue.empty() assert not queue.full() assert len(queue) == 1 assert queue.size() == 1 assert queue.bitsize() == data_size[1] assert tuple(qp.packet for qp in queue.as_tuple()) == (packets[1], ) assert queue.pop() == packets[1] assert queue.empty() assert not queue.full() assert len(queue) == 0 assert queue.size() == 0 assert queue.bitsize() == 0 assert queue.as_tuple() == ()
def test_new_finite_queue_is_empty(): sim = Mock() sim.stime = 0 queue = Queue(sim, capacity=2) assert queue.empty() assert not queue.full() assert len(queue) == 0 assert queue.size() == 0 assert queue.bitsize() == 0 assert queue.as_tuple() == ()
def test_push_to_empty_queue_without_service_correctly_updates_content(): sim = Mock() sim.stime = 0 queue = Queue(sim, capacity=2) data_size = 123 packet = NetworkPacket(data=AppData(0, data_size, 0, 0)) queue.push(packet) assert not queue.empty() assert not queue.full() assert len(queue) == 1 assert queue.size() == 1 assert queue.bitsize() == data_size assert tuple(qp.packet for qp in queue.as_tuple()) == (packet, )
def test_push_up_to_full_queue_without_service_correctly_updates_content(): sim = Mock() sim.stime = 0 data_size = [123, 412] packets = [NetworkPacket(data=AppData(0, sz, 0, 0)) for sz in data_size] queue = Queue(sim, capacity=2) queue.push(packets[0]) queue.push(packets[1]) assert not queue.empty() assert queue.full() assert len(queue) == 2 assert queue.size() == 2 assert queue.bitsize() == sum(data_size) assert tuple(qp.packet for qp in queue.as_tuple()) == tuple(packets)
def test_push_to_full_queue_without_service_drops_last_packet(): sim = Mock() sim.stime = 0 data_size = [123, 412] packets = [NetworkPacket(data=AppData(0, sz, 0, 0)) for sz in data_size] queue = Queue(sim, capacity=1) queue.push(packets[0]) # Check that num_dropped counter is 0 before overflow: assert queue.num_dropped == 0 # Pushing a packet that will overflow the queue: queue.push(packets[1]) assert queue.num_dropped == 1 # Now check that only first packet is in the queue: assert not queue.empty() assert queue.full() assert len(queue) == 1 assert queue.size() == 1 assert queue.bitsize() == data_size[0] assert tuple(qp.packet for qp in queue.as_tuple()) == (packets[0], )