def delete(self, key, cas=0, quiet=None, persist_to=0, replicate_to=0):
     if key not in self.data:
         raise NotFoundError("not found")
     if key in self.locks:
         if cas != self.locks[key]:
             raise KeyExistsError("Key exits")
     del self.data[key]
     self.update_views(key, None)
Beispiel #2
0
 def test_get_ttl(self):
     key = self.gen_key('get_ttl')
     self.cb.remove(key, quiet=True)
     self.cb.upsert(key, "a_value")
     rv = self.cb.get(key, ttl=1)
     self.assertEqual(rv.value, "a_value")
     sleep(2)
     rv = self.cb.get(key, quiet=True)
     self.assertFalse(rv.success)
     self.assertTrue(NotFoundError._can_derive(rv.rc))
Beispiel #3
0
 def test_get_ttl(self):
     key = self.gen_key('get_ttl')
     self.cb.remove(key, quiet=True)
     self.cb.upsert(key, "a_value")
     rv = self.cb.get(key, ttl=1)
     self.assertEqual(rv.value, "a_value")
     sleep(2)
     rv = self.cb.get(key, quiet=True)
     self.assertFalse(rv.success)
     self.assertTrue(NotFoundError._can_derive(rv.rc))
 def replace(self,
             key,
             value,
             cas=0,
             ttl=0,
             format=None,
             persist_to=0,
             replicate_to=0):
     if key not in self.data:
         raise NotFoundError("not found")
     self.data[key] = value
     self.update_views(key, value)
Beispiel #5
0
    def test_multi_mixed(self):
        kv_missing = self.gen_kv_dict(amount=3, prefix='multi_missing_mixed')
        kv_existing = self.gen_kv_dict(amount=3, prefix='multi_existing_mixed')

        self.cb.remove_multi(list(kv_missing.keys()) +
                             list(kv_existing.keys()),
                             quiet=True)

        self.cb.upsert_multi(kv_existing)

        rvs = self.cb.get_multi(list(kv_existing.keys()) +
                                list(kv_missing.keys()),
                                quiet=True)

        self.assertFalse(rvs.all_ok)

        for k, v in kv_missing.items():
            self.assertTrue(k in rvs)
            self.assertFalse(rvs[k].success)
            self.assertTrue(rvs[k].value is None)
            self.assertTrue(NotFoundError._can_derive(rvs[k].rc))

        for k, v in kv_existing.items():
            self.assertTrue(k in rvs)
            self.assertTrue(rvs[k].success)
            self.assertEqual(rvs[k].value, kv_existing[k])
            self.assertEqual(rvs[k].rc, 0)

        # Try this again, but without quiet
        cb_exc = None
        try:
            self.cb.get_multi(
                list(kv_existing.keys()) + list(kv_missing.keys()))
        except NotFoundError as e:
            cb_exc = e

        self.assertTrue(cb_exc)
        all_res = cb_exc.all_results
        self.assertTrue(all_res)
        self.assertFalse(all_res.all_ok)

        for k, v in kv_existing.items():
            self.assertTrue(k in all_res)
            self.assertTrue(all_res[k].success)
            self.assertEqual(all_res[k].value, v)
            self.assertEqual(all_res[k].rc, 0)

        for k, v in kv_missing.items():
            self.assertTrue(k in all_res)
            self.assertFalse(all_res[k].success)
            self.assertTrue(all_res[k].value is None)

        del cb_exc
Beispiel #6
0
    def test_multi_mixed(self):
        kv_missing = self.gen_kv_dict(amount=3, prefix='multi_missing_mixed')
        kv_existing = self.gen_kv_dict(amount=3, prefix='multi_existing_mixed')

        self.cb.remove_multi(list(kv_missing.keys()) + list(kv_existing.keys()),
                             quiet=True)

        self.cb.upsert_multi(kv_existing)

        rvs = self.cb.get_multi(
            list(kv_existing.keys()) + list(kv_missing.keys()),
            quiet=True)


        self.assertFalse(rvs.all_ok)

        for k, v in kv_missing.items():
            self.assertTrue(k in rvs)
            self.assertFalse(rvs[k].success)
            self.assertTrue(rvs[k].value is None)
            self.assertTrue(NotFoundError._can_derive(rvs[k].rc))

        for k, v in kv_existing.items():
            self.assertTrue(k in rvs)
            self.assertTrue(rvs[k].success)
            self.assertEqual(rvs[k].value, kv_existing[k])
            self.assertEqual(rvs[k].rc, 0)

        # Try this again, but without quiet
        cb_exc = None
        try:
            self.cb.get_multi(list(kv_existing.keys()) + list(kv_missing.keys()))
        except NotFoundError as e:
            cb_exc = e

        self.assertTrue(cb_exc)
        all_res = cb_exc.all_results
        self.assertTrue(all_res)
        self.assertFalse(all_res.all_ok)

        for k, v in kv_existing.items():
            self.assertTrue(k in all_res)
            self.assertTrue(all_res[k].success)
            self.assertEqual(all_res[k].value, v)
            self.assertEqual(all_res[k].rc, 0)

        for k, v in kv_missing.items():
            self.assertTrue(k in all_res)
            self.assertFalse(all_res[k].success)
            self.assertTrue(all_res[k].value is None)

        del cb_exc
    def test_tracing_result_context(self):
        super(TracingTest, self).setUp(trace_all=True,
                                       enable_logging=True,
                                       use_parent_tracer=False,
                                       flushcount=0)

        kv_missing = self.gen_kv_dict(amount=3, prefix='multi_missing_mixed')
        kv_existing = self.gen_kv_dict(amount=3, prefix='multi_existing_mixed')

        logging.getLogger().setLevel(logging.DEBUG)

        self.cb.remove_multi(list(kv_missing.keys()) +
                             list(kv_existing.keys()),
                             quiet=True)

        self.cb.tracing_threshold_kv = 0.00000000001
        self.cb.timeout = 0.000001
        self.cb.upsert_multi(kv_existing)

        rvs = self.cb.get_multi(list(kv_existing.keys()) +
                                list(kv_missing.keys()),
                                quiet=True)

        self.assertFalse(rvs.all_ok)

        for k, v in kv_missing.items():
            self.assertTrue(k in rvs)
            self.assertFalse(rvs[k].success)
            self.assertTrue(rvs[k].value is None)
            self.assertTrue(NotFoundError._can_derive(rvs[k].rc))
        self.verify_tracing_output(kv_existing, rvs, True)
        # Try this again, but without quiet
        cb_exc = None
        try:
            self.cb.get_multi(
                list(kv_existing.keys()) + list(kv_missing.keys()))
        except NotFoundError as e:
            cb_exc = e

        self.assertTrue(cb_exc)
        all_res = cb_exc.all_results
        self.assertTrue(all_res)
        self.assertFalse(all_res.all_ok)

        self.verify_exception_string(cb_exc, kv_missing, rvs)
        logging.error(cb_exc)
        self.verify_tracing_output(kv_existing, all_res, True)

        self.verify_tracing_output(kv_missing, all_res, False)

        del cb_exc
Beispiel #8
0
    def test_get_multi_ttl(self):
        kvs = self.gen_kv_dict(amount=2, prefix='get_multi_ttl')

        self.cb.upsert_multi(kvs)
        rvs = self.cb.get_multi(list(kvs.keys()), ttl=1)
        for k, v in rvs.items():
            self.assertEqual(v.value, kvs[k])

        sleep(2)
        rvs = self.cb.get_multi(list(kvs.keys()), quiet=True)
        for k, v in rvs.items():
            self.assertFalse(v.success)
            self.assertTrue(k in kvs)
            self.assertTrue(NotFoundError._can_derive(v.rc))
Beispiel #9
0
    def test_get_multi_ttl(self):
        kvs = self.gen_kv_dict(amount=2, prefix='get_multi_ttl')

        self.cb.upsert_multi(kvs)
        rvs = self.cb.get_multi(list(kvs.keys()), ttl=1)
        for k, v in rvs.items():
            self.assertEqual(v.value, kvs[k])

        sleep(2)
        rvs = self.cb.get_multi(list(kvs.keys()), quiet=True)
        for k, v in rvs.items():
            self.assertFalse(v.success)
            self.assertTrue(k in kvs)
            self.assertTrue(NotFoundError._can_derive(v.rc))
        def t(err):
            self.assertIsInstance(err.value, NotFoundError)
            all_results = err.value.all_results
            for k, v in kv.items():
                self.assertTrue(k in all_results)
                res = all_results[k]
                self.assertEqual(res.key, k)
                if k != rmkey:
                    self.assertTrue(res.success)
                    self.assertEqual(res.value, v)

            res_fail = err.value.result
            self.assertFalse(res_fail.success)
            self.assertEqual(NotFoundError.rc_to_exctype(res.rc), NotFoundError)
Beispiel #11
0
        def t(err):
            self.assertIsInstance(err.value, NotFoundError)
            all_results = err.value.all_results
            for k, v in kv.items():
                self.assertTrue(k in all_results)
                res = all_results[k]
                self.assertEqual(res.key, k)
                if k != rmkey:
                    self.assertTrue(res.success)
                    self.assertEqual(res.value, v)

            res_fail = err.value.result
            self.assertFalse(res_fail.success)
            self.assertTrue(NotFoundError._can_derive(res_fail.rc))
    def test_tracing_result_context(self):
        super(TracingTest, self).setUp(trace_all=True, enable_logging=True, use_parent_tracer=False, flushcount=0)

        kv_missing = self.gen_kv_dict(amount=3, prefix='multi_missing_mixed')
        kv_existing = self.gen_kv_dict(amount=3, prefix='multi_existing_mixed')

        logging.getLogger().setLevel(logging.DEBUG)

        self.cb.remove_multi(list(kv_missing.keys()) + list(kv_existing.keys()),
                             quiet=True)

        self.cb.tracing_threshold_kv = 0.00000000001
        self.cb.timeout = 0.000001
        self.cb.upsert_multi(kv_existing)

        rvs = self.cb.get_multi(
            list(kv_existing.keys()) + list(kv_missing.keys()),
            quiet=True)

        self.assertFalse(rvs.all_ok)

        for k, v in kv_missing.items():
            self.assertTrue(k in rvs)
            self.assertFalse(rvs[k].success)
            self.assertTrue(rvs[k].value is None)
            self.assertTrue(NotFoundError._can_derive(rvs[k].rc))
        self.verify_tracing_output(kv_existing, rvs, True)
        # Try this again, but without quiet
        cb_exc = None
        try:
            self.cb.get_multi(list(kv_existing.keys()) + list(kv_missing.keys()))
        except NotFoundError as e:
            cb_exc = e

        self.assertTrue(cb_exc)
        all_res = cb_exc.all_results
        self.assertTrue(all_res)
        self.assertFalse(all_res.all_ok)

        self.verify_exception_string(cb_exc, kv_missing, rvs)
        logging.error(cb_exc)
        self.verify_tracing_output(kv_existing, all_res, True)

        self.verify_tracing_output(kv_missing, all_res, False)

        del cb_exc
 def get(self, key, ttl=0, quiet=None, replica=False, no_format=False):
     if key not in self.data:
         raise NotFoundError("not found")
     return ValueResult(key, self.data[key])