def test_transfered_ongoing_concurrent_ops(): ticket = Ticket(testutil.create_ticket(ops=["read"])) # Start 2 ongoing operations: # ongoing: 0-0, 100-100 # completed: op1 = Operation(0, 100) ticket._add_operation(op1) assert ticket.transferred() == 0 assert ticket.active() op2 = Operation(100, 100) ticket._add_operation(op2) assert ticket.transferred() == 0 assert ticket.active() # Consume op1 data: # ongoing: 0-100, 100-100 # completed: op1.run() ticket._remove_operation(op1) assert ticket.transferred() == 100 assert ticket.active() # Consume op2 data: # ongoing: 0-100, 100-200 # completed: op2.run() ticket._remove_operation(op2) assert ticket.transferred() == 200 assert not ticket.active()
def test_transfered_ongoing_overlapping_ops(): ticket = Ticket(testutil.create_ticket(ops=["read"])) # Start 2 ongoing operations. # ongoing: 0-0, 80-80 # completed: op1 = Operation(0, 120) op2 = Operation(80, 120) ticket._add_operation(op1) ticket._add_operation(op2) assert ticket.transferred() == 0 assert ticket.active() # Consume op1 data: # ongoing: 0-120, 80-80 # completed: op1.run() ticket._remove_operation(op1) assert ticket.transferred() == 120 assert ticket.active() # Consume op2 data: # ongoing: 0-120, 80-200 # completed: op2.run() ticket._remove_operation(op2) assert ticket.transferred() == 200 assert not ticket.active()
def test_transfered_ongoing_non_continues_ops(cfg): ticket = Ticket(testutil.create_ticket(ops=["read"]), cfg) # Start 2 ongoing operations. # ongoing: 0-0, 200-200 # completed: op1 = Operation(0, 100) op2 = Operation(200, 100) ticket._add_operation(op1) ticket._add_operation(op2) assert ticket.transferred() == 0 assert ticket.active() # Consume op1 data: # ongoing: 0-100, 200-200 # completed: op1.run() ticket._remove_operation(op1) assert ticket.transferred() == 100 # Consume op2 data: # ongoing: 0-100, 200-300 # completed: op2.run() ticket._remove_operation(op2) assert ticket.transferred() == 200