def test_measurement_0(self, mock_get_block): with set_qrl_dir('no_data'): with State() as state: self.assertIsNotNone( state) # to avoid warning (unused variable) chain_manager = ChainManager(state) mock_get_block.side_effect = TestStateMeasurement.get_block_example1 parent_metadata = Mock() parent_metadata.last_N_headerhashes = [] measurement = chain_manager.get_measurement( config.dev, 100, parent_headerhash=b'0', parent_metadata=parent_metadata) self.assertEqual(60, measurement) measurement = chain_manager.get_measurement( config.dev, 110, parent_headerhash=b'0', parent_metadata=parent_metadata) self.assertEqual(60, measurement) measurement = chain_manager.get_measurement( config.dev, 1000, parent_headerhash=b'0', parent_metadata=parent_metadata) self.assertEqual(60, measurement)
def test_measurement_4(self, mock_get_block): db_name = config.dev.db_name with mock.patch('qrl.core.config.dev') as devconfig: devconfig.N_measurement = 3 devconfig.db_name = db_name with set_qrl_dir('no_data'): with State() as state: self.assertIsNotNone( state) # to avoid warning (unused variable) chain_manager = ChainManager(state) mock_get_block.side_effect = TestStateMeasurement.get_block_example1 parent_metadata = Mock() parent_metadata.last_N_headerhashes = [b'0', b'1', b'2'] measurement = chain_manager.get_measurement( config.dev, 350, b'3', parent_metadata) self.assertEqual(63, measurement) measurement = chain_manager.get_measurement( config.dev, 370, b'3', parent_metadata) self.assertEqual(70, measurement)
def main(): args = parse_arguments() qrl_dir_post_fix = '' copy_files = [] if args.network_type == 'testnet': config.dev.hard_fork_heights = list( config.dev.testnet_hard_fork_heights ) # Hard Fork Block Height For Testnet qrl_dir_post_fix = '-testnet' package_directory = os.path.dirname(os.path.abspath(__file__)) copy_files.append( os.path.join(package_directory, 'network/testnet/genesis.yml')) copy_files.append( os.path.join(package_directory, 'network/testnet/config.yml')) logger.debug( "=====================================================================================" ) logger.info("QRL Path: %s", args.qrl_dir) config.user.qrl_dir = os.path.expanduser( os.path.normpath(args.qrl_dir) + qrl_dir_post_fix) config.create_path(config.user.qrl_dir, copy_files) config.user.load_yaml(config.user.config_path) if args.mining_thread_count is None: args.mining_thread_count = config.user.mining_thread_count logger.debug( "=====================================================================================" ) config.create_path(config.user.wallet_dir) mining_address = None ntp.setDrift() logger.info('Initializing chain..') persistent_state = State() if args.mocknet: args.debug = True config.user.mining_enabled = True config.user.mining_thread_count = 1 config.user.mining_pause = 500 config.dev.pbdata.block.block_timing_in_seconds = 1 config.user.genesis_difficulty = 2 # Mocknet mining address # Q01050058bb3f8cb66fd90d0347478e5bdf3a475e82cfc5fe5dc276500ca21531e6edaf3d2d0f7e # Mocknet mining hexseed # 010500dd70f898c2cb4c11ce7fd85aa04554e41dcc46569871d189a3f48d84e2fbedbe176695e291e9b81e619b3625c624cde6 args.mining_address = 'Q01050058bb3f8cb66fd90d0347478e5bdf3a475e82cfc5fe5dc276500ca21531e6edaf3d2d0f7e' if args.debug: logger.warning("FAULT HANDLER ENABLED") faulthandler.enable() if config.user.mining_enabled: mining_address = get_mining_address(args.mining_address) if not mining_address: logger.warning('Invalid Mining Credit Wallet Address') logger.warning('%s', args.mining_address) return False chain_manager = ChainManager(state=persistent_state) if args.measurement > -1: chain_manager.get_measurement = MagicMock( return_value=args.measurement) chain_manager.load(Block.deserialize(GenesisBlock().serialize())) qrlnode = QRLNode(mining_address=mining_address) qrlnode.set_chain_manager(chain_manager) set_logger.set_logger(args, qrlnode.sync_state) ####### # NOTE: Keep assigned to a variable or might get collected admin_service, grpc_service, mining_service, debug_service = start_services( qrlnode) qrlnode.start_listening() qrlnode.start_pow(args.mining_thread_count) logger.info('QRL blockchain ledger %s', config.dev.version) if config.user.mining_enabled: logger.info('Mining/staking address %s using %s threads (0 = auto)', 'Q' + bin2hstr(mining_address), args.mining_thread_count) elif args.mining_address or args.mining_thread_count: logger.warning( 'Mining is not enabled but you sent some "mining related" param via CLI' ) reactor.run()