Example #1
0
def write_manager(db_manager):
    wm = WriteRequestManager(db_manager)
    taa_handler = TxnAuthorAgreementHandler(db_manager)
    taa_aml_handler = TxnAuthorAgreementAmlHandler(db_manager)
    wm.register_req_handler(taa_handler)
    wm.register_req_handler(taa_aml_handler)
    return wm
Example #2
0
def write_req_manager(db):
    manager = WriteRequestManager(db)

    write_req_handler = NodeHandler(db, None)
    batch_req_handler = DomainBatchHandler(db)

    manager.register_req_handler(write_req_handler)
    manager.register_batch_handler(batch_req_handler)

    # We do not need to check request handler workability
    handler = manager.request_handlers[NODE][0]
    handler.static_validation = lambda request: 1
    handler.dynamic_validation = lambda request: 1
    handler.update_state = lambda txn, updated_state, request, is_committed: 1
    handler.apply_request = lambda request, batch_ts, prev_result: (1, 1, 1)
    handler.apply_forced_request = lambda request: 1
    handler.transform_txn_for_ledger = lambda txn: 1

    # Same for batches
    handler = manager.batch_handlers[DOMAIN_LEDGER_ID][0]
    handler.post_batch_applied = lambda batch, prev_handler_result: 1
    handler.commit_batch = lambda batch, prev_handler_result=None: 1
    handler.post_batch_rejected = lambda ledger_id, prev_handler_result: 1

    return manager
def test_write_request_manager_restore_state(
        write_req_manager: WriteRequestManager, three_pc_batch, db):
    txn_type = "TXN_TYPE"
    ledger_id = 1

    class MockHandler(WriteRequestHandler):
        def __init__(self):
            super().__init__(db, txn_type, ledger_id)
            self.last_update_state_call = None

        def static_validation(self, request: Request):
            pass

        def dynamic_validation(self, request: Request,
                               req_pp_time: Optional[int]):
            pass

        def update_state(self, txn, prev_result, request, is_committed=False):
            self.last_update_state_call = txn, prev_result, request, is_committed

    handler_current = MockHandler()
    handler_prev_version = MockHandler()
    version = "version1"
    txn = {
        TXN_PAYLOAD: {
            TXN_PAYLOAD_TYPE: txn_type,
            TXN_VERSION: CURRENT_TXN_PAYLOAD_VERSIONS[txn_type]
        },
        TXN_METADATA: {
            TXN_METADATA_TIME: 0
        }
    }
    write_req_manager.register_req_handler(handler_current)
    write_req_manager.register_req_handler_with_version(
        handler_prev_version, version)

    write_req_manager.restore_state(txn, ledger_id)
    assert handler_current.last_update_state_call == (txn, None, None, True)
    assert handler_prev_version.last_update_state_call is None

    handler_current.last_update_state_call = None
    db.set_txn_version_controller(
        FakeSomething(get_pool_version=lambda a: version,
                      update_version=lambda a: None))

    write_req_manager.restore_state(txn, ledger_id)
    assert handler_current.last_update_state_call is None
    assert handler_prev_version.last_update_state_call == (txn, None, None,
                                                           True)