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
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)