def setUp(self): environment.TEST = True lru_clear_all() if testbed: self.testbed = testbed.Testbed() self.testbed.setup_env(current_version_id='testbed.version') self.testbed.activate() # init stubs self.testbed.init_logservice_stub() self.testbed.init_memcache_stub() self.testbed.init_app_identity_stub() self.policy = datastore_stub_util.PseudoRandomHRConsistencyPolicy( probability=0) self.testbed.init_datastore_v3_stub(consistency_policy=self.policy) self.testbed.init_blobstore_stub() self.testbed.init_mail_stub() # get stubs self.task_queue_stub = self.testbed.get_stub( testbed.TASKQUEUE_SERVICE_NAME) self.mail_stub = self.testbed.get_stub(testbed.MAIL_SERVICE_NAME) # disable ndb cache context = ndb.get_context() context.set_cache_policy(lambda key: False) context.set_memcache_policy(lambda key: False) # api mock self.api_mock = ApiMock()
def test_email(self): self.policy.SetProbability(1) user.User.create(email="*****@*****.**", password="******") self.assertRaises( user.EmailTaken, lambda: user.User.create(email="*****@*****.**", password="******")) user.User.create(email="*****@*****.**", password="******") cache.lru_clear_all() self.assertRaises( user.EmailTaken, lambda: user.User.create(email="*****@*****.**", password="******"))
def test_lru(self): @lru_cache() def func(*args, **kwargs): return args, kwargs, uuid.uuid4() class Cls(object): @classmethod @lru_cache() def cls_method(cls, *args, **kwargs): return args, kwargs, uuid.uuid4() @lru_cache() def method(self, *args, **kwargs): return args, kwargs, uuid.uuid4() class ClsWithHash(object): def __hash__(self): return 0 class ClsWithoutHash(object): pass # test func ret = func('func_test') self.assertEqual(ret, func('func_test')) self.assertTrue(ret != func('func_test2')) self.assertEqual(func(), func()) self.assertEqual(func.lru_size(), 3) self.assertEqual(func.lru_hits(), 2) self.assertEqual(func.lru_misses(), 3) # test hash func.lru_clear_all() ret = func(ClsWithHash()) self.assertEqual(ret, func(ClsWithHash())) self.assertEqual(func.lru_size(), 1) self.assertEqual(func.lru_hits(), 1) self.assertEqual(func.lru_misses(), 1) # test list func.lru_clear_all() ret = func([1, 2, 3], test=[]) self.assertEqual(ret, func([1, 2, 3], test=[])) func([1, 2, 3], test=["test"]) func([1, 2], test=["test"]) self.assertEqual(func.lru_size(), 3) self.assertEqual(func.lru_hits(), 1) self.assertEqual(func.lru_misses(), 3) # test set func.lru_clear_all() ret = func(set([1, 2, 3]), test=set([])) self.assertEqual(ret, func(set([1, 2, 3]), test=set([]))) func(set([1, 2, 3]), test=set(["test"])) func(set([1, 2]), test=set(["test"])) self.assertEqual(func.lru_size(), 3) self.assertEqual(func.lru_hits(), 1) self.assertEqual(func.lru_misses(), 3) # test cls method ret = Cls.cls_method('cls_method_test') self.assertEqual(ret, Cls.cls_method('cls_method_test')) self.assertTrue(ret != Cls.cls_method('cls_method_test2')) self.assertEqual(Cls.cls_method(), Cls.cls_method()) # test method cls = Cls() ret = cls.method('method_test') self.assertTrue( Cls.cls_method('method_test') != cls.method('method_test')) self.assertEqual(ret, cls.method('method_test')) self.assertTrue(ret != cls.method('method_test2')) self.assertEqual(cls.method(), cls.method()) # test clear self.assertEqual(ret, cls.method('method_test')) cls.method.lru_clear_all() self.assertTrue(ret != cls.method('method_test')) ret = cls.method('method_test') self.assertEqual(ret, cls.method('method_test')) cls.method.lru_clear(args=[cls, 'method_test']) self.assertTrue(ret != cls.method('method_test')) # test set func.lru_set("123") self.assertEqual("123", func()) cls.method.lru_set("123", args=[cls, 'method_set_test']) self.assertEqual("123", cls.method('method_set_test')) cls.method.lru_set("456", args=[cls]) self.assertEqual("456", cls.method()) Cls.cls_method.lru_set("123", args=[Cls, 'cls_method_set_test']) self.assertEqual("123", Cls.cls_method('cls_method_set_test')) # test clear all lru_clear_all() self.assertTrue("123" != Cls.cls_method('cls_method_set_test'))