def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000, max_block_interval_s=0)
        )

        self.node_connection = Mock()
        self.node_connection.is_active = MagicMock(return_value=True)
        self.node.set_known_total_difficulty = MagicMock()

        self.node.node_conn = self.node_connection

        self.block_queuing_service = OntBlockQueuingService(self.node)

        self.block_hashes = []
        self.block_msg = self._get_sample_block()
        self.block_queuing_service.store_block_data(self.block_msg.block_hash(), self.block_msg)
class OntBlockQueuingServiceTest(AbstractTestCase):
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000, max_block_interval=0))

        self.node_connection = Mock()
        self.node_connection.is_active = MagicMock(return_value=True)
        self.node.set_known_total_difficulty = MagicMock()

        self.node.node_conn = self.node_connection

        self.block_queuing_service = OntBlockQueuingService(self.node)

        self.block_hashes = []
        self.block_msg = self._get_sample_block()
        self.block_queuing_service.store_block_data(
            self.block_msg.block_hash(), self.block_msg)

    def test_get_recent_blocks(self):
        recent_blocks = list(
            self.block_queuing_service.iterate_recent_block_hashes(10))
        self.assertEqual(len(recent_blocks), 1)
        self.assertEqual(recent_blocks[0], self.block_msg.block_hash())

    def _get_sample_block(self, file_path=__file__):
        root_dir = os.path.dirname(
            os.path.dirname(os.path.dirname(os.path.abspath(file_path))))
        with open(os.path.join(root_dir,
                               "ont_sample_block.txt")) as sample_file:
            ont_block = sample_file.read().strip("\n")
        buf = bytearray(convert.hex_to_bytes(ont_block))
        parsed_block = BlockOntMessage(buf=buf)
        return parsed_block

    def test_tracked_block_cleanup(self):
        self.node.block_queuing_service = self.block_queuing_service
        tx_service = self.node.get_tx_service()
        for block_hash in self.block_queuing_service.iterate_recent_block_hashes(
                10):
            tx_service.track_seen_short_ids(block_hash, [])
        self.node._tracked_block_cleanup()
示例#3
0
    def __init__(self, opts, node_ssl_service: Optional[NodeSSLService] = None):
        if opts.use_extensions:
            helpers.set_extensions_parallelism()
        if node_ssl_service is None:
            node_ssl_service = MockNodeSSLService(self.NODE_TYPE, MagicMock())
        super(MockOntGatewayNode, self).__init__(opts, node_ssl_service)
        self.requester = MagicMock()

        self.broadcast_messages = []
        self.broadcast_to_nodes_messages = []
        self._tx_service = TransactionService(self, 0)
        self.block_cleanup_service = self._get_cleanup_service()
        self.block_queuing_service = OntBlockQueuingService(self)
        self.message_converter = MockMessageConverter()
        if opts.use_extensions:
            from bxcommon.services.extension_transaction_service import ExtensionTransactionService
            self._tx_service = ExtensionTransactionService(self, self.network_num)
        else:
            self._tx_service = TransactionService(self, self.network_num)
        self.opts.has_fully_updated_tx_service = True
        self.has_active_blockchain_peer = MagicMock(return_value=True)
 def build_block_queuing_service(
     self,
     connection: AbstractGatewayBlockchainConnection
 ) -> AbstractBlockQueuingService:
     return OntBlockQueuingService(self, connection)
示例#5
0
 def build_block_queuing_service(self) -> AbstractBlockQueuingService:
     return OntBlockQueuingService(self)