class TestGCMultiple2(TestGCBase): def setUp(self): self._clear_dir() self._init_dir() self.backend1 = BeansdbInstance(self.data_base_path, 57901, accesslog=False, max_data_size=10, db_depth=2) # buffer size is 4m, max_data_size set to 10m for data file better reach above 6m # turn off accesslog to speed up write # only generate keys in sector0 def _gen_data(self, data, prefix='', loop_num=10 * 1024, sector=(0, 0)): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num, sector=sector): if not store.set(key, data): return self.fail("fail to set %s" % (key)) def _delete_data(self, prefix='', loop_num=10 * 1024, sector=(0, 0)): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num, sector=sector): if not store.delete(key): return self.fail("fail to delete %s" % (key)) def _check_data(self, data, prefix='', loop_num=10 * 1024, sector=(0, 0)): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num, sector=sector): try: self.assertEqual(store.get(key), data) except Exception, e: return self.fail("fail to check key %s: %s" % (key, str(e)))
class TestBrokenBase(TestGCBase): proxy_addr = 'localhost:7905' backend1_addr = 'localhost:57901' # def setUp(self): self._clear_dir() self._init_dir() self.backend1 = BeansdbInstance(self.data_base_path, 57901, db_depth=1) # only generate keys in sector0 def _gen_data(self, data, prefix='', loop_num=10 * 1024, sector=0): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num, sector=sector): if not store.set(key, data): return self.fail("fail to set %s" % (key)) store.close() def _check_data(self, data, prefix='', loop_num=10 * 1024, sector=0): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num, sector=sector): try: self.assertEqual(store.get(key), data) except Exception, e: return self.fail("fail to check key %s: %s" % (key, str(e))) store.close()
class TestGCMultiple2(TestGCBase): def setUp(self): self._clear_dir() self._init_dir() self.backend1 = BeansdbInstance(self.data_base_path, 57901, accesslog=False, max_data_size=10, db_depth=2) # buffer size is 4m, max_data_size set to 10m for data file better reach above 6m # turn off accesslog to speed up write # only generate keys in sector0 def _gen_data(self, data, prefix="", loop_num=10 * 1024, sector=(0, 0)): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num, sector=sector): if not store.set(key, data): return self.fail("fail to set %s" % (key)) def _delete_data(self, prefix="", loop_num=10 * 1024, sector=(0, 0)): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num, sector=sector): if not store.delete(key): return self.fail("fail to delete %s" % (key)) def _check_data(self, data, prefix="", loop_num=10 * 1024, sector=(0, 0)): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num, sector=sector): try: self.assertEqual(store.get(key), data) except Exception, e: return self.fail("fail to check key %s: %s" % (key, str(e)))
class TestGCBase(TestBeansdbBase): proxy_addr = 'localhost:7905' backend1_addr = 'localhost:57901' def setUp(self): self._clear_dir() self._init_dir() self.backend1 = BeansdbInstance(self.data_base_path, 57901) def _start_gc(self, ignore_recent=0, bucket=None): """ bucket must be in 0 or 00 string """ if bucket is not None: assert isinstance(bucket, basestring) and len(bucket) <= 2 t = telnetlib.Telnet("127.0.0.1", self.backend1.port) if bucket is None: t.write('flush_all {}\n'.format(ignore_recent)) else: t.write('flush_all %s @%s\n' % (ignore_recent, bucket)) t.read_until('OK') t.write('quit\n') t.close() def _gc_status(self): t = telnetlib.Telnet("127.0.0.1", self.backend1.port) t.write('optimize_stat\n') out = t.read_until('\n') t.write('quit\n') t.close() return out.strip("\r\n") def _gen_data(self, data, prefix='', loop_num=10 * 1024): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num): if not store.set(key, data): return self.fail("fail to set %s" % (key)) def _delete_data(self, prefix='', loop_num=10 * 1024): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num): if not store.delete(key): return self.fail("fail to delete %s" % (key)) def _check_data(self, data, prefix='', loop_num=10 * 1024): store = MCStore(self.backend1_addr) for key in self.backend1.generate_key(prefix=prefix, count=loop_num): try: self.assertEqual(store.get(key), data) except Exception, e: return self.fail("fail to check key %s: %s" % (key, str(e)))