async def test_dil_process_result_abort(): # initialize t = Transfer() t.status = TransferStatus.RESPONDED t.payload = {'id': '001', 'data': '0xdummy_data'} t.payload['nonce'] = str(uuid4().int) t.result = {'status': False} init = MockInitiator([]) resp = MockResponder() state_manager = LocalILStateManger() dil = DecentralizedInterledger(init, resp, state_manager) dil.state_manager.local_transfers = {'001': deepcopy(t)} dil.state_manager.transfers_responded = [t] async def foo(): return 42 t.confirm_task = asyncio.ensure_future(foo()) dil.transfers = [t] # start task = asyncio.ensure_future(dil.process_result()) assert task.done() == False await task # check local transfers updated assert dil.state_manager.local_transfers assert len(dil.state_manager.local_transfers) == 1 local_transfer = dil.state_manager.local_transfers['001'] assert local_transfer.status == TransferStatus.CONFIRMING assert local_transfer.result['status'] == False # check for transfer confirming assert len(dil.results_aborting) == 1 result_confirming = dil.results_aborting[0] assert result_confirming.status == TransferStatus.CONFIRMING assert result_confirming.result['status'] == False assert asyncio.isfuture(result_confirming.confirm_task) assert len(dil.results_commit) == 0 assert len(dil.results_abort) == 0 await result_confirming.confirm_task assert result_confirming.confirm_task.done() == True assert len(dil.state_manager.transfers_responded) == 0
async def test_dil_send_transfer(): # initialize t = Transfer() t.payload = {'id': '001', 'data': '0xdummy_data'} t.payload['nonce'] = str(uuid4().int) t.send_accepted = True init = MockInitiator([t]) resp = MockResponder() state_manager = LocalILStateManger() dil = DecentralizedInterledger(init, resp, state_manager) dil.transfers = [t] dil.state_manager.local_transfers = {'001': deepcopy(t)} dil.state_manager.transfers_ready = [t] assert len(dil.transfers_sent) == 0 # start task = asyncio.ensure_future(dil.send_transfer()) assert task.done() == False await task # check local transfers updated assert dil.state_manager.local_transfers assert len(dil.state_manager.local_transfers) == 1 local_transfer = dil.state_manager.local_transfers['001'] assert local_transfer.payload['id'] assert local_transfer.payload['nonce'] assert local_transfer.payload['data'] == '0xdummy_data' assert local_transfer.status == TransferStatus.SENT # check for transfer sent assert len(dil.transfers_sent) == 1 transfer_sent = dil.transfers[0] assert transfer_sent.status == TransferStatus.SENT assert asyncio.isfuture(transfer_sent.send_task) await transfer_sent.send_task assert transfer_sent.send_task.done() == True
async def test_dil_transfer_result(): # initialize t = Transfer() t.status = TransferStatus.SENT t.payload = {'id': '001', 'data': '0xdummy_data'} t.payload['nonce'] = str(uuid4().int) init = MockInitiator([]) resp = MockResponder() state_manager = LocalILStateManger() dil = DecentralizedInterledger(init, resp, state_manager) dil.state_manager.local_transfers = {'001': deepcopy(t)} async def foo(): return 42 t.send_task = asyncio.ensure_future(foo()) dil.transfers = [t] dil.transfers_sent = [t] # start task = asyncio.ensure_future(dil.transfer_result()) assert task.done() == False await task # check local transfers updated assert dil.state_manager.local_transfers assert len(dil.state_manager.local_transfers) == 1 local_transfer = dil.state_manager.local_transfers['001'] assert local_transfer.status == TransferStatus.RESPONDED assert local_transfer.result == 42 # check for transfer responded assert len(dil.state_manager.transfers_responded) == 1 transfer_responded = dil.transfers[0] assert transfer_responded.status == TransferStatus.RESPONDED assert transfer_responded.result == 42 assert not dil.transfers_sent