def test_skiplist_clear(): pool_folder, conf_path, block_file = _get_common_file_paths() _clean_up() index = SkipListIndex( MemoryManager(pool_folder=pool_folder, conf_path=conf_path, block_file=block_file)) for i in range(100): index.set(random.randint(1, 100), random.randint(1, 1000)) index.clear() assert index.keys() == [] assert (len(index._heads) == 1 and not index._heads[0].right and not index._heads[0].down) _clean_up()
def test_skiplist_remove(): pool_folder, conf_path, block_file = _get_common_file_paths() _clean_up() index = SkipListIndex( MemoryManager(pool_folder=pool_folder, conf_path=conf_path, block_file=block_file)) index.set(1, 10) index.set(10, 20) assert index.remove(1) == True assert index.remove(10) == True assert index.remove(1) == False assert index.remove(10) == False assert index.remove(100) == False assert index.keys() == [] _clean_up()
def test_skiplist_compact(): pool_folder, conf_path, block_file = _get_common_file_paths() _clean_up() index = SkipListIndex( MemoryManager(pool_folder=pool_folder, conf_path=conf_path, block_file=block_file)) index.set(1, 10) index.set(100, 20) index.clear() index.compact() # all blocks are compacted for block in index._blocks: assert block.used_memory == 0 and block.free_memory == block.block_size index.set(1, 10) index.set(2, 100) free_memory_list_origin = [block.free_memory for block in index._blocks] index.remove(1) index.compact() free_memory_list_now = [block.free_memory for block in index._blocks] assert index.get(1, -1) assert index.get(2, 100) assert index.keys() == [2] assert len(free_memory_list_origin) == len(free_memory_list_now) cnt = 0 for origin, now in zip(free_memory_list_origin, free_memory_list_now): assert origin <= now if origin < now: cnt += 1 assert cnt > 0 _clean_up()
def test_skiplist_keys(): pool_folder, conf_path, block_file = _get_common_file_paths() _clean_up() index = SkipListIndex( MemoryManager(pool_folder=pool_folder, conf_path=conf_path, block_file=block_file)) keys = [] vis = set() for _ in range(100): key = random.randint(1, 10000) while key in vis: key = random.randint(1, 10000) vis.add(key) keys.append(key) keys.sort() assert len(keys) == 100 and len(set(keys)) == 100 for key in keys: index.set(key, key) assert index.keys() == keys _clean_up()