示例#1
0
        message.AssetStatus(handle=1, ids=assetReq.ids,
                            status=message.SUCCESS))

    # Send a pending read-request.
    conn.send(
        message.Read.Request(reqId=1,
                             handle=1,
                             offset=0,
                             size=1024,
                             timeout=500))
    server.expect(
        message.Read.Request(handle=assetReq.handle, offset=0, size=1024))

    # Close upstream server
    server.close()
    bithorded.wait_for("Disconnected: evilservant")
    conn.expect([
        message.Read.Response(reqId=1, status=message.NOTFOUND, offset=0),
        message.AssetStatus(handle=1, status=message.NOTFOUND),
    ])

    # Reconnect upstream server
    server = TestConnection(bithorded, name='evilservant')

    # Expect a BindRead to arrive for the stale asset
    server.expect(message.BindRead(handle=assetReq.handle, ids=assetReq.ids))
    server.send(
        message.AssetStatus(handle=assetReq.handle,
                            ids=assetReq.ids,
                            size=1024,
                            status=message.SUCCESS))
示例#2
0
    conn = TestConnection(bithorded, name='tester')
    server = TestConnection(bithorded, name='evilservant')

    # Open a valid handle
    conn.send(message.BindRead(handle=1, ids=[message.Identifier(type=message.TREE_TIGER, id='NON-EXISTANT')], timeout=500))
    assetReq = server.expect(message.BindRead)
    server.send(message.AssetStatus(handle=assetReq.handle, ids=assetReq.ids, status=message.SUCCESS, size=1024))
    conn.expect(message.AssetStatus(handle=1, ids=assetReq.ids, status=message.SUCCESS))

    # Send a pending read-request.
    conn.send(message.Read.Request(reqId=1, handle=1, offset=0, size=1024, timeout=500))
    server.expect(message.Read.Request(handle=assetReq.handle, offset=0, size=1024))

    # Close upstream server
    server.close()
    bithorded.wait_for("Disconnected: evilservant")
    conn.expect([
        message.Read.Response(reqId=1, status=message.NOTFOUND, offset=0),
        message.AssetStatus(handle=1, status=message.NOTFOUND),
    ])

    # Reconnect upstream server
    server = TestConnection(bithorded, name='evilservant')

    # Expect a BindRead to arrive for the stale asset
    server.expect(message.BindRead(handle=assetReq.handle, ids=assetReq.ids))
    server.send(message.AssetStatus(handle=assetReq.handle, ids=assetReq.ids, size=1024, status=message.SUCCESS))
    conn.expect(message.AssetStatus(handle=1, ids=assetReq.ids, status=message.SUCCESS))

    # Verify working resend of read
    conn.send(message.Read.Request(reqId=1, handle=1, offset=0, size=1024, timeout=500))
示例#3
0
from bithordetest import message, BithordeD, TestConnection

if __name__ == '__main__':
    bithorded = BithordeD(config={
        'friend.deadservant.addr': ''
    })
    server = TestConnection(bithorded, name='deadservant')
    conn = TestConnection(bithorded, name='tester')

    dummy_ids = [message.Identifier(type=message.TREE_TIGER, id='NON-EXISTANT')]

    # Send request, and wait for it to arrive at server and time out
    conn.send(message.BindRead(handle=1, ids=dummy_ids, timeout=50))
    req = server.expect(message.BindRead)
    bithorded.wait_for("Failed upstream deadservant")
    conn.expect(message.AssetStatus(handle=1, status=message.NOTFOUND))

    # BithordeD should now have closed the connection. Hold the confirmation.
    req = server.expect(message.BindRead(handle=req.handle, ids=[]))

    # Re-bind, now with responding source
    conn.send(message.BindRead(handle=1, ids=dummy_ids, timeout=5000))
    req2 = server.expect(message.BindRead(ids=dummy_ids))
    assert req.handle != req2.handle # Since we did not confirm the close before, bithorde should not yet have re-used the handle.
    server.send(message.AssetStatus(handle=req2.handle, ids=req2.ids, status=message.SUCCESS))
    conn.expect(message.AssetStatus(handle=1, status=message.SUCCESS))

    # Now close both handles and confirm the closing
    server.send(message.AssetStatus(handle=req.handle, status=message.NOTFOUND))
    conn.send(message.BindRead(handle=1)) # We have to close the client-reference first