Esempio n. 1
0
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
Esempio n. 2
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
Esempio n. 3
0
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