def cacheTestSummaries(project): gm = DatazillaModel(project) dataIter = gm.getAllSummaryCache() mc = memcache.Client([settings.DATAZILLA_MEMCACHED], debug=0) for d in dataIter: for data in d: key = utils.get_cache_key( project, data['item_id'], data['item_data'], ) rv = mc.set(key, zlib.compress( data['value'] )) if not rv: sys.stderr.write("ERROR: Failed to store object in memcache: %s, %s\n" % ( str(data['item_id']), data['item_data'] ) ) gm.disconnect()
def _getTestRunSummary(project, method, request, dm): productIds = [] testIds = [] platformIds = [] ##### #Calling get_id_list() insures that we have only numbers in the #lists, this gaurds against SQL injection ##### if 'product_ids' in request.GET: productIds = utils.get_id_list(request.GET['product_ids']) if 'test_ids' in request.GET: testIds = utils.get_id_list(request.GET['test_ids']) if 'platform_ids' in request.GET: platformIds = utils.get_id_list(request.GET['platform_ids']) timeKey = 'days_30' timeRanges = utils.get_time_ranges() if 'tkey' in request.GET: timeKey = request.GET['tkey'] if not productIds: ##Set default productId## productIds = [12] jsonData = '{}' mc = memcache.Client([settings.DATAZILLA_MEMCACHED], debug=0) if productIds and (not testIds) and (not platformIds): if len(productIds) > 1: extendList = { 'data':[], 'columns':[] } for id in productIds: key = utils.get_cache_key(project, str(id), timeKey) compressedJsonData = mc.get(key) if compressedJsonData: jsonData = zlib.decompress( compressedJsonData ) data = json.loads( jsonData ) extendList['data'].extend( data['data'] ) extendList['columns'] = data['columns'] jsonData = json.dumps(extendList) else: key = utils.get_cache_key( project, str(productIds[0]), timeKey, ) compressedJsonData = mc.get(key) if compressedJsonData: jsonData = zlib.decompress( compressedJsonData ) else: table = dm.getTestRunSummary(timeRanges[timeKey]['start'], timeRanges[timeKey]['stop'], productIds, platformIds, testIds) jsonData = json.dumps( table ) return jsonData