def get_blocks_by_indexes(index_start: str = 0, index_end: str = 'max', db: Any = None) -> None: """ Get multiple blocks by index range. Args: index_start: Beginning index. index_end: End index. db: Read-only database instance. """ try: int_index_start = int(index_start) except ValueError: return 'Start index {} couldn\'t be parsed'.format(index_start), 400 if index_end == 'max': with open('./data/progress.txt', 'r') as f: index_end, _ = f.read().split('\n') try: int_index_end = int(index_end) except ValueError: return 'End index {} couldn\'t be parsed'.format(index_end), 400 if int_index_start > int_index_end: return 'Start index larger than end index.', 400 gatherer = DatabaseGatherer(db) blocks = gatherer.get_blocks_by_indexes(index_start, index_end) if blocks is None: return 'No blocks in index range {}-{} have been found'.format( index_start, index_end), 404 return blocks
def test_get_blocks_indexes(self): """Test validity of block data from a selected index range.""" db = rocksdb.DB(DB_PATH, rocksdb.Options(create_if_missing=True, max_open_files=10000), read_only=True) with open('tests/resources/block_data_indexrange.txt', 'r') as f: compare_data = json.loads(f.read()) index_start = 20 index_end = 30 gatherer = DatabaseGatherer(db) gathered_data = gatherer.get_blocks_by_indexes(index_start, index_end) self.assertEqual(compare_data, gathered_data)