def _test_spawn_and_join(self): pair = self.make_cat_pair() requester = partial(self.requester_with_join, pair) fetcher = DataFetcher() result = fetcher.spawn_and_run(requester) self.check_cat_pair_fetched(pair, result, fetcher) self.assert_stats(2, 2, 2)
def _test_inner_spawn(self): cat, friend = pair = self.make_cat_pair() def requester(fetcher): fetch_inner = partial(self.request_cat_and_friend, cat) fetcher.spawn(fetch_inner) yield cat1 = fetcher.get_obj(Cat, cat.key().id()) self.assert_cat_equals(cat, cat1) # Verify that after the first pass, we shouldn't have gotten the # friend's data self.assertRaises(KeyError, fetcher.get_obj, Cat, friend.key().id()) def ondone(): # after the second pass, we should have the friend's data friend1 = fetcher.get_obj(Cat, friend.key().id()) self.assert_cat_equals(friend, friend1) return (cat1, friend1) yield ondone fetcher = DataFetcher() result = fetcher.spawn_and_run(requester) self.check_cat_pair_fetched(pair, result, fetcher) self.assert_stats(2, 2, 2)
def do_fetch(): requester_funcs = get_requester_funcs(cat_pairs) fetcher = DataFetcher() if type(requester_funcs) is list: results = fetcher.spawn_and_run_multi(requester_funcs) else: results = fetcher.spawn_and_run(requester_funcs) return (fetcher, results)
def test_spawn_with_ondone_func(self): pair = cat, friend = self.make_cat_pair() def requester(fetcher): requester1 = partial(self.request_cat_and_friend, cat) ref = fetcher.spawn(requester1) yield ref.get fetcher = DataFetcher() res = fetcher.spawn_and_run(requester) self.check_cat_pair_fetched(pair, res, fetcher)
def _test_obj_single_query(self): cat = self.make_cat() id = cat.key().id() def requester(fetcher): ref = fetcher.request_obj(Cat, id) yield ref.get fetcher = DataFetcher() cat2 = fetcher.spawn_and_run(requester) cat3 = fetcher.get_obj(Cat, id) self.assert_cat_equals(cat, cat3) self.assert_cat_equals(cat, cat2) self.assert_stats(1, 1, 1)
def _test_multi_query(self): num = 3 cats = [self.make_cat() for i in xrange(num)] mkey = "cats_test" memcache.delete(mkey) def requester(fetcher): query = db.GqlQuery("select * from Cat order by __key__ desc") ref = fetcher.request(mkey, query, num) yield ref.get fetcher = DataFetcher() cats1 = fetcher.spawn_and_run(requester) cats2 = fetcher.get(mkey) self.assert_obj_list_equals(cats, cats1) self.assert_obj_list_equals(cats, cats2) self.assert_stats(1, 1, 1)
def do_fetch(): requester = partial(self.request_cat, cat) fetcher = DataFetcher() result = fetcher.spawn_and_run(requester) return (fetcher, result)