Ejemplo n.º 1
0
def test_store_pre_commit_state_in_end_block(b, alice):
    from bigchaindb import App
    from bigchaindb.backend import query
    from bigchaindb.models import Transaction
    from bigchaindb.backend.query import PRE_COMMIT_ID

    tx = Transaction.create([alice.public_key],
                            [([alice.public_key], 1)],
                            asset={'msg': 'live long and prosper'})\
                    .sign([alice.private_key])

    app = App(b)
    app.init_chain(['ignore'])

    begin_block = RequestBeginBlock()
    app.begin_block(begin_block)
    app.deliver_tx(encode_tx_to_bytes(tx))
    app.end_block(RequestEndBlock(height=99))

    resp = query.get_pre_commit_state(b.connection, PRE_COMMIT_ID)
    assert resp['commit_id'] == PRE_COMMIT_ID
    assert resp['height'] == 99
    assert resp['transactions'] == [tx.id]

    app.begin_block(begin_block)
    app.deliver_tx(encode_tx_to_bytes(tx))
    app.end_block(RequestEndBlock(height=100))
    resp = query.get_pre_commit_state(b.connection, PRE_COMMIT_ID)
    assert resp['commit_id'] == PRE_COMMIT_ID
    assert resp['height'] == 100
    assert resp['transactions'] == [tx.id]
Ejemplo n.º 2
0
def test_get_pre_commit_state(db_context):
    from bigchaindb.backend import query

    state = dict(height=3, transactions=[])
    db_context.conn.db.pre_commit.insert_one(state)
    resp = query.get_pre_commit_state(db_context.conn)
    assert resp == state
Ejemplo n.º 3
0
def test_get_pre_commit_state(db_context):
    from bigchaindb.backend import query

    state = dict(height=3, transactions=[])
    db_context.conn.db.pre_commit.insert_one(state)
    resp = query.get_pre_commit_state(db_context.conn)
    assert resp == state
Ejemplo n.º 4
0
def test_get_pre_commit_state(db_context):
    from bigchaindb.backend import query
    from bigchaindb.lib import PreCommitState

    state = PreCommitState(commit_id='test2', height=3, transactions=[])

    db_context.conn.db.pre_commit.insert(state._asdict())
    resp = query.get_pre_commit_state(db_context.conn, 'test2')
    assert resp == state._asdict()
Ejemplo n.º 5
0
def run_recover(b):
    pre_commit = query.get_pre_commit_state(b.connection, PRE_COMMIT_ID)

    # Initially the pre-commit collection would be empty
    if pre_commit:
        latest_block = query.get_latest_block(b.connection)

        # NOTE: the pre-commit state can only be ahead of the commited state
        # by 1 block
        if latest_block and (latest_block['height'] < pre_commit['height']):
            query.delete_transactions(b.connection, pre_commit['transactions'])
Ejemplo n.º 6
0
def run_recover(b):
    pre_commit = query.get_pre_commit_state(b.connection, PRE_COMMIT_ID)

    # Initially the pre-commit collection would be empty
    if pre_commit:
        latest_block = query.get_latest_block(b.connection)

        # NOTE: the pre-commit state can only be ahead of the commited state
        # by 1 block
        if latest_block and (latest_block['height'] < pre_commit['height']):
            query.delete_transactions(b.connection, pre_commit['transactions'])
Ejemplo n.º 7
0
def test_get_pre_commit_state(db_context):
    from bigchaindb.backend import query
    from bigchaindb.lib import PreCommitState

    state = PreCommitState(commit_id='test2',
                           height=3,
                           transactions=[])

    db_context.conn.db.pre_commit.insert(state._asdict())
    resp = query.get_pre_commit_state(db_context.conn, 'test2')
    assert resp == state._asdict()