Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Unified Diff: tools/deep_memory_profiler/visualizer/services.py

Issue 23781012: Upload file to app engine and generate public url for dmprof visualizer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add unit test and separate business logic layer to services.py Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/deep_memory_profiler/visualizer/services.py
diff --git a/tools/deep_memory_profiler/visualizer/services.py b/tools/deep_memory_profiler/visualizer/services.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa7575e4b4fe6a50f9621f983f5c5bc8b376838d
--- /dev/null
+++ b/tools/deep_memory_profiler/visualizer/services.py
@@ -0,0 +1,70 @@
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import json
+
+from google.appengine.ext import blobstore
+from google.appengine.ext import ndb
+
+
+class Profiler(ndb.Model):
+ """Profiler entity to store json data. Use run_id as its key.
+ Json data will be stored at blobstore, but can be referred by BlobKey."""
+ blob_key = ndb.BlobKeyProperty()
+
+
+class Template(ndb.Model):
+ """Template to breakdown profiler with multiple tags.
+ Use content as its key."""
+ content = ndb.JsonProperty()
+
+
+def CreateProfiler(blob_info):
+ """Create Profiler entity in database of uploaded file. Return run_id."""
+ json_str = blob_info.open().read()
+ json_obj = json.loads(json_str)
+
+ # Check the uniqueness of data run_id and store new one.
+ run_id = json_obj['run_id']
+ prof_key = ndb.Key('Profiler', run_id)
+ if not prof_key.get():
+ # Profile for this run_id does not exist
+ profiler = Profiler(id=run_id, blob_key=blob_info.key())
+ profiler.put()
+
+ return run_id
+
+
+def GetProfiler(run_id):
+ """Get Profiler entity from database of given run_id."""
+ # Get entity key.
+ profiler = ndb.Key('Profiler', run_id).get()
+ return blobstore.BlobReader(profiler.blob_key).read()
+
+
+def CreateTemplates(blob_info):
+ """Create Template entities for all templates of uploaded file. Return ndb.Key
+ of default template"""
+ json_str = blob_info.open().read()
+ json_obj = json.loads(json_str)
+
+ # Check the uniqueness of template content and store new one.
+ for tag, content in json_obj['templates'].iteritems():
+ content_str = json.dumps(content)
+ tmpl_key = ndb.Key('Template', content_str)
+ if tag == json_obj['default_template']:
+ default_key = tmpl_key
+ if not tmpl_key.get():
+ # Template of the same content does not exist.
+ template = Template(id=content_str, content=content)
+ template.put()
+
+ return default_key
sullivan 2013/09/20 13:59:51 default_key doesn't get initialized, so won't you
junjianx 2013/09/24 05:53:53 Done.
+
+
+def GetTemplate(tmpl_id):
+ """Get Template entity of given tmpl_id generated by ndb.Key."""
+ # Get entity key.
+ template = ndb.Key(urlsafe=tmpl_id).get()
+ return json.dumps(template.content)

Powered by Google App Engine
This is Rietveld 408576698