Example #1
0
    def testBatchPutGet(self):
        self.node.shutdown()

        size = 60
        # '1'*20 will spend 30 bytes in `mq store`
        batch1 = ['1' * 20, '2' * 20]
        batch2 = ['3' * 20, '4' * 20]

        self.node = Store(self.dir_, size)

        self.assertEqual(self.node.put(batch1), batch1)
        self.assertEqual(self.node.put(batch2), batch2)

        self.assertEqual(len(self.node.legal_files), 2)

        gets = sorted([self.node.get() for _ in range(4)])
        res = list(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.assertEqual(len(self.node.legal_files), 1)

        self.assertEqual(self.node.get(), '6' * 20)
        self.assertEqual(self.node.get(), None)

        self.assertRaises(StoreNoSpaceForPut, lambda: self.node.put('7' * 100))
Example #2
0
File: node.py Project: ll2088/cola
 def add_node(self, addr):
     if addr in self.addrs: return
     
     self.addrs.append(addr)
     
     backup_store_dir = os.path.join(self.dir_, BACKUP_STORE_FN)
     backup_node_dir = addr.replace(':', '_')
     backup_path = os.path.join(backup_store_dir, backup_node_dir)
     self.backup_stores[addr] = Store(backup_path, 
                                      size=512*1024, mkdirs=True)
Example #3
0
 def add_node(self, addr):
     """
     When a new message queue node is in, firstly will add the address
     to the known queue nodes, then a backup for this node will be created.
     """
     if addr in self.addrs: return
     
     self.addrs.append(addr)
     
     backup_store_dir = os.path.join(self.dir_, BACKUP_STORE_FN)
     backup_node_dir = addr.replace(':', '_')
     backup_path = os.path.join(backup_store_dir, backup_node_dir)
     self.backup_stores[addr] = Store(backup_path, 
                                      size=512*1024, mkdirs=True)
Example #4
0
File: node.py Project: ll2088/cola
 def init(self):
     with self._lock:
         if self.inited: return
         
         get_priority_store_dir = lambda priority: os.path.join(self.dir_, 
                                     PRIORITY_STORE_FN, str(priority))
         self.priority_stores = [Store(get_priority_store_dir(i), 
                                       deduper=self.deduper,
                                       mkdirs=True) \
                                 for i in range(self.n_priorities)]
         
 
         backup_store_dir = os.path.join(self.dir_, BACKUP_STORE_FN)
         self.backup_stores = {}
         for backup_addr in self.other_addrs:
             backup_node_dir = backup_addr.replace(':', '_')
             backup_path = os.path.join(backup_store_dir, backup_node_dir)
             self.backup_stores[backup_addr] = Store(backup_path, 
                                                    size=512*1024, mkdirs=True)
             
         inc_store_dir = os.path.join(self.dir_, INCR_STORE_FN)
         self.inc_store = Store(inc_store_dir, mkdirs=True)
                 
         self.inited = True
Example #5
0
    def testPutGet(self):
        num = str(12345)

        self.assertEqual(self.store.put(num), num)
        self.assertEqual(self.store.put(num), None)

        num2 = str(67890)
        nums = [num, num2]
        self.assertEqual(self.store.put(nums), [num2])

        self.store.shutdown()
        self.store.deduper.shutdown()
        self.assertGreater(
            os.path.getsize(os.path.join(self.dir_, 'bloomfilter')), 0)

        bloom_filter_deduper = FileBloomFilterDeduper(
            os.path.join(self.dir_, 'bloomfilter'), 5)
        self.store = Store(self.node_dir, deduper=bloom_filter_deduper)

        num3 = str(13579)
        nums = [num, num2, num3]
        self.assertEqual(self.store.put(nums), [num3])
Example #6
0
 def testPutCloseGet(self):
     self.node.put('1' * 10)
     self.node.shutdown()
     self.node = Store(self.dir_)
     self.assertEqual(self.node.get(), '1' * 10)
Example #7
0
 def setUp(self):
     self.dir_ = tempfile.mkdtemp()
     self.node = Store(self.dir_)
Example #8
0
 def setUp(self):
     self.dir_ = tempfile.mkdtemp()
     self.node_dir = os.path.join(self.dir_, 'node')
     deduper = FileBloomFilterDeduper(
         os.path.join(self.dir_, 'bloomfilter'), 10)
     self.store = Store(self.node_dir, deduper=deduper, mkdirs=True)