def testBatchPutGet(self): self.node.shutdown() size = 50 batch1 = ['1' * 20, '2' * 20] batch2 = ['3' * 20, '4' * 20] self.node = Node(self.dir_, size) self.assertEqual(self.node.put(batch1), batch1) self.assertEqual(self.node.put(batch2), batch2) self.assertEqual(len(self.node.map_files), 2) gets = sorted([self.node.get() for _ in range(4)]) res = batch1 res.extend(batch2) self.assertEqual(gets, res) self.node.put('5' * 20) self.assertEqual(self.node.get(), '5' * 20) self.node.put('6' * 20) self.node.merge() self.assertEqual(len(self.node.map_files), 1) self.assertEqual(self.node.get(), '6' * 20) self.assertEqual(self.node.get(), None) self.assertRaises(NodeNoSpaceForPut, lambda: self.node.put('7' * 100))
def setUp(self): self.dir_ = tempfile.mkdtemp() self.node_dir = os.path.join(self.dir_, 'node') os.mkdir(self.node_dir) bloom_filter_hook = FileBloomFilter( os.path.join(self.dir_, 'bloomfilter'), 10) self.node = Node(self.node_dir, verify_exists_hook=bloom_filter_hook)
def init_store(self, local_store_path, backup_stores_path, verify_exists_hook=None): self.local_store = Node(local_store_path, verify_exists_hook=verify_exists_hook) self.backup_stores_path = backup_stores_path backup_nodes = self.nodes[:] backup_nodes.remove(self.local_node) self.backup_stores = {} for backup_node in backup_nodes: backup_node_dir = backup_node.replace(':', '_') backup_path = os.path.join(backup_stores_path, backup_node_dir) if not os.path.exists(backup_path): os.makedirs(backup_path) self.backup_stores[backup_node] = Node(backup_path, size=512 * 1024) self._register_rpc()
def add_node(self, node, backup_store=None): self.nodes.append(node) self.hash_ring = HashRing(self.nodes) if backup_store is not None: self.backup_stores[node] = backup_store else: backup_stores_path = getattr(self, 'backup_stores_path') if backup_stores_path is not None: path = os.path.join(backup_stores_path, node.replace(':', '_')) if not os.path.exists(path): os.makedirs(path) self.backup_stores[node] = Node(path, size=512 * 1024)
def testPutGet(self): num = str(12345) self.assertEqual(self.node.put(num), num) self.assertEqual(self.node.put(num), '') num2 = str(67890) nums = [num, num2] self.assertEqual(self.node.put(nums), [num2]) self.node.shutdown() self.assertGreater( os.path.getsize(os.path.join(self.dir_, 'bloomfilter')), 0) bloom_filter_hook = FileBloomFilter( os.path.join(self.dir_, 'bloomfilter'), 5) self.node = Node(self.node_dir, verify_exists_hook=bloom_filter_hook) num3 = str(13579) nums = [num, num2, num3] self.assertEqual(self.node.put(nums), [num3])
def setUp(self): self.dir_ = tempfile.mkdtemp() self.node = Node(self.dir_)