def test_get_receipts(self): """Tests that the TransactionReceiptGetRequestHandler will return a response with the receipt for the transaction requested. """ receipt_store = TransactionReceiptStore(DictDatabase()) receipt = TransactionReceipt( data=["beef".encode()]) receipt_store.put("deadbeef", receipt) handler = ClientReceiptGetRequestHandler(receipt_store) request = ClientReceiptGetRequest( transaction_ids=['deadbeef']).SerializeToString() response = handler.handle('test_conn_id', request) self.assertEqual(HandlerStatus.RETURN, response.status) self.assertEqual(ClientReceiptGetResponse.OK, response.message_out.status) self.assertEqual([receipt], [r for r in response.message_out.receipts]) request = ClientReceiptGetRequest( transaction_ids=['unknown']).SerializeToString() response = handler.handle('test_conn_id', request) self.assertEqual(HandlerStatus.RETURN, response.status) self.assertEqual(ClientReceiptGetResponse.NO_RESOURCE, response.message_out.status)
def test_get_receipts(self): """Tests that the TransactionReceiptGetRequestHandler will return a response with the receipt for the transaction requested. """ receipt_store = TransactionReceiptStore(DictDatabase()) receipt = TransactionReceipt( data=[TransactionReceipt.Data( data_type="dead", data="beef".encode())]) receipt_store.put("deadbeef", receipt) handler = ClientReceiptGetRequestHandler(receipt_store) request = ClientReceiptGetRequest( transaction_ids=['deadbeef']).SerializeToString() response = handler.handle('test_conn_id', request) self.assertEqual(HandlerStatus.RETURN, response.status) self.assertEqual(ClientReceiptGetResponse.OK, response.message_out.status) self.assertEqual([receipt], [r for r in response.message_out.receipts]) request = ClientReceiptGetRequest( transaction_ids=['unknown']).SerializeToString() response = handler.handle('test_conn_id', request) self.assertEqual(HandlerStatus.RETURN, response.status) self.assertEqual(ClientReceiptGetResponse.NO_RESOURCE, response.message_out.status)
class ClientEventsGetRequestHandlerTest(unittest.TestCase): def setUp(self): self.block_store = BlockStore(DictDatabase()) self.receipt_store = TransactionReceiptStore(DictDatabase()) self._txn_ids_by_block_id = {} for block_id, blk_w, txn_ids in create_chain(): self.block_store[block_id] = blk_w self._txn_ids_by_block_id[block_id] = txn_ids for txn_id in txn_ids: receipt = create_receipt(txn_id=txn_id, key_values=[("address", block_id)]) self.receipt_store.put( txn_id=txn_id, txn_receipt=receipt) def test_get_events_by_block_id(self): """Tests that the correct events are returned by the ClientEventsGetRequest handler for each block id. """ event_broadcaster = EventBroadcaster( Mock(), block_store=self.block_store, receipt_store=self.receipt_store) for block_id, _ in self._txn_ids_by_block_id.items(): request = client_event_pb2.ClientEventsGetRequest() request.block_ids.extend([block_id]) subscription = request.subscriptions.add() subscription.event_type = "sawtooth/block-commit" event_filter = subscription.filters.add() event_filter.key = "address" event_filter.match_string = block_id event_filter.filter_type = event_filter.SIMPLE_ALL event_filter2 = subscription.filters.add() event_filter2.key = "block_id" event_filter2.match_string = block_id event_filter2.filter_type = event_filter2.SIMPLE_ALL handler = ClientEventsGetRequestHandler(event_broadcaster) handler_output = handler.handle( "dummy_conn_id", request.SerializeToString()) self.assertEqual(handler_output.message_type, validator_pb2.Message.CLIENT_EVENTS_GET_RESPONSE) self.assertEqual(handler_output.status, HandlerStatus.RETURN) self.assertTrue( all(any(a.value == block_id for a in e.attributes) for e in handler_output.message_out.events), "Each Event has at least one attribute value that is the" " block id for the block.") self.assertEqual(handler_output.message_out.status, client_event_pb2.ClientEventsGetResponse.OK) self.assertTrue(len(handler_output.message_out.events) > 0)
class ClientEventsGetRequestHandlerTest(unittest.TestCase): def setUp(self): self.block_store = BlockStore(DictDatabase()) self.receipt_store = TransactionReceiptStore(DictDatabase()) self._txn_ids_by_block_id = {} for block_id, blk_w, txn_ids in create_chain(): self.block_store[block_id] = blk_w self._txn_ids_by_block_id[block_id] = txn_ids for txn_id in txn_ids: receipt = create_receipt(txn_id=txn_id, key_values=[("address", block_id)]) self.receipt_store.put( txn_id=txn_id, txn_receipt=receipt) def test_get_events_by_block_id(self): """Tests that the correct events are returned by the ClientEventsGetRequest handler for each block id. """ event_broadcaster = EventBroadcaster( Mock(), block_store=self.block_store, receipt_store=self.receipt_store) for block_id, _ in self._txn_ids_by_block_id.items(): request = client_event_pb2.ClientEventsGetRequest() request.block_ids.extend([block_id]) subscription = request.subscriptions.add() subscription.event_type = "sawtooth/block-commit" event_filter = subscription.filters.add() event_filter.key = "address" event_filter.match_string = block_id event_filter.filter_type = event_filter.SIMPLE_ALL event_filter2 = subscription.filters.add() event_filter2.key = "block_id" event_filter2.match_string = block_id event_filter2.filter_type = event_filter2.SIMPLE_ALL handler = ClientEventsGetRequestHandler(event_broadcaster) handler_output = handler.handle( "dummy_conn_id", request.SerializeToString()) self.assertEqual(handler_output.message_type, validator_pb2.Message.CLIENT_EVENTS_GET_RESPONSE) self.assertEqual(handler_output.status, HandlerStatus.RETURN) self.assertTrue( all(any(a.value == block_id for a in e.attributes) for e in handler_output.message_out.events), "Each Event has at least one attribute value that is the" " block id for the block.") self.assertEqual(handler_output.message_out.status, client_event_pb2.ClientEventsGetResponse.OK) self.assertTrue(len(handler_output.message_out.events) > 0)
def test_receipt_store_get_and_set(self): """Tests that we correctly get and set state changes to a ReceiptStore. This test sets a list of receipts and then gets them back, ensuring that the data is the same. """ receipt_store = TransactionReceiptStore(DictDatabase()) receipts = [] for i in range(10): state_changes = [] events = [] data = [] for j in range(10): string = str(j) byte = string.encode() state_changes.append( StateChange(address='a100000' + string, value=byte, type=StateChange.SET)) events.append( Event( event_type="test", data=byte, attributes=[Event.Attribute(key=string, value=string)])) data.append( TransactionReceipt.Data(data_type="test", data=byte)) receipts.append( TransactionReceipt(state_changes=state_changes, events=events, data=data)) for i in range(len(receipts)): receipt_store.put(str(i), receipts[i]) for i in range(len(receipts)): stored_receipt = receipt_store.get(str(i)) self.assertEqual(stored_receipt.state_changes, receipts[i].state_changes) self.assertEqual(stored_receipt.events, receipts[i].events) self.assertEqual(stored_receipt.data, receipts[i].data)
def test_receipt_store_get_and_set(self): """Tests that we correctly get and set state changes to a ReceiptStore. This test sets a list of receipts and then gets them back, ensuring that the data is the same. """ receipt_store = TransactionReceiptStore(DictDatabase()) receipts = [] for i in range(10): state_changes = [] events = [] data = [] for j in range(10): string = str(j) byte = string.encode() state_changes.append( StateChange( address='a100000' + string, value=byte, type=StateChange.SET)) events.append( Event( event_type="test", data=byte, attributes=[Event.Attribute(key=string, value=string)])) data.append(byte) receipts.append( TransactionReceipt( state_changes=state_changes, events=events, data=data)) for i, receipt in enumerate(receipts): receipt_store.put(str(i), receipt) for i, receipt in enumerate(receipts): stored_receipt = receipt_store.get(str(i)) self.assertEqual(stored_receipt.state_changes, receipt.state_changes) self.assertEqual(stored_receipt.events, receipt.events) self.assertEqual(stored_receipt.data, receipt.data)
def do_get_receipts(): receipt_store = TransactionReceiptStore(DictDatabase()) receipt = TransactionReceipt( data=["beef".encode()]) receipt_store.put("deadbeef", receipt) handler = ClientReceiptGetRequestHandler(receipt_store) request = ClientReceiptGetRequest( transaction_ids=['deadbeef']).SerializeToString() response = handler.handle('test_conn_id', request) assert HandlerStatus.RETURN == response.status request = ClientReceiptGetRequest( transaction_ids=['unknown']).SerializeToString() response = handler.handle('test_conn_id', request) assert HandlerStatus.RETURN == response.status
def test_get_receipts(): """Tests that the TransactionReceiptGetRequestHandler will return a response with the receipt for the transaction requested. """ receipt_store = TransactionReceiptStore(DictDatabase()) receipt = TransactionReceipt( data=["beef".encode()]) receipt_store.put("deadbeef", receipt) handler = ClientReceiptGetRequestHandler(receipt_store) request = ClientReceiptGetRequest( transaction_ids=['deadbeef']).SerializeToString() response = handler.handle('test_conn_id', request) request = ClientReceiptGetRequest( transaction_ids=['unknown']).SerializeToString() response = handler.handle('test_conn_id', request)
def do_receipt_store_get_and_set(): receipt_store = TransactionReceiptStore(DictDatabase()) receipts = [] for i in range(10): state_changes = [] events = [] data = [] for j in range(10): string = str(j) byte = string.encode() state_changes.append( StateChange( address='a100000' + string, value=byte, type=StateChange.SET)) events.append( Event( event_type="test", data=byte, attributes=[Event.Attribute(key=string, value=string)])) data.append(byte) receipts.append( TransactionReceipt( state_changes=state_changes, events=events, data=data)) for i, receipt in enumerate(receipts): receipt_store.put(str(i), receipt) for i, receipt in enumerate(receipts): stored_receipt = receipt_store.get(str(i)) assert stored_receipt.state_changes == receipt.state_changes