def get_new_blocks_feed(conn, start_block_id): namespace = conn.dbname + '.bigchain' match = {'o.id': start_block_id, 'op': 'i', 'ns': namespace} # Neccesary to find in descending order since tests may write same block id several times query = conn.query().local.oplog.rs.find(match).sort('$natural', -1).next()['ts'] last_ts = conn.run(query) feed = run_changefeed(conn, 'bigchain', last_ts) return (evt['o'] for evt in feed if evt['op'] == 'i')
def test_connection_failure(): from bigchaindb.backend.exceptions import ConnectionError from bigchaindb.backend.mongodb.changefeed import run_changefeed conn = mock.MagicMock() conn.run.side_effect = [ConnectionError(), RuntimeError()] changefeed = run_changefeed(conn, 'backlog', -1) with pytest.raises(RuntimeError): for record in changefeed: assert False, 'Shouldn\'t get here'