示例#1
0
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)))
示例#2
0
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()
示例#3
0
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()
示例#4
0
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)))
示例#5
0
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)))
示例#6
0
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)))