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 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_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
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.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