Re: [rietveld] push by maruel@chromium.org - Convert the old build_results member of PatchSet to TryJobResults... on 2011-12-16 16:27 GMT

7 views
Skip to first unread message

anatoly techtonik

unread,
Dec 16, 2011, 3:07:58 PM12/16/11
to coderevie...@googlegroups.com, Marc-Antoine Ruel
Do you know that mapreduce will be removed in next SDK?
"WARNING: Starting with the 1.6.2 release of the experimental Python 2.7 runtime, the mapreduce and datastore_admin builtins will not be supported." (c) http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes
--
anatoly t.


On Fri, Dec 16, 2011 at 7:27 PM, <riet...@googlecode.com> wrote:
Revision: 34e360745c66
Author:   Marc-Antoine Ruel <mar...@chromium.org>
Date:     Fri Dec 16 08:27:08 2011
Log:      Convert the old build_results member of PatchSet to TryJobResults

Patch contributed by rogerta@chromium

Review: http://codereview.appspot.com/5496050/
http://code.google.com/p/rietveld/source/detail?r=34e360745c66

Modified:
 /codereview/urls.py
 /codereview/views_chromium.py
 /fix_issue.py
 /mapreduce.yaml

=======================================
--- /codereview/urls.py Tue Dec  6 11:08:41 2011
+++ /codereview/urls.py Fri Dec 16 08:27:08 2011
@@ -102,7 +102,6 @@
 urlpatterns += patterns(
    'codereview.views_chromium',
    (r'^(\d+)/edit_flags$', 'edit_flags'),
-    (r'^(\d+)/upload_build_result/(\d+)$', 'upload_build_result'),
    (r'^conversions$', 'conversions'),
    (r'^lint/issue(\d+)_(\d+)', 'lint'),
    (r'^lint_patch/issue(\d+)_(\d+)_(\d+)', 'lint_patch'),
=======================================
--- /codereview/views_chromium.py       Tue Dec  6 13:50:20 2011
+++ /codereview/views_chromium.py       Fri Dec 16 08:27:08 2011
@@ -347,46 +347,6 @@
  return HttpResponse('OK', content_type='text/plain')


-@key_required
-@patchset_required
-def upload_build_result(request):
-  """/<issue>/upload_build_result/<patchset> - Set build result for a patchset.
-
-  Used to upload results from a build made with the patchset on a given
-  platform.
-  """
-  form = views.UploadBuildResult(request.POST, request.FILES)
-  if not form.is_valid():
-    return HttpResponse('ERROR: Upload build result errors:\n%s' %
-                        repr(form.errors), content_type='text/plain')
-  # Do we already have build results for this patchset on this platform?
-  platform_id = strip_tags(form.cleaned_data['platform_id'])
-  patchset = request.patchset
-  existing = False
-  index = None
-  for index, build_result in enumerate(patchset.build_results):
-    if (build_result.split(views.UploadBuildResult.SEPARATOR, 2)[0] ==
-        platform_id):
-      existing = True
-      break
-  if existing:
-    if form.cleaned_data['status']:
-      patchset.build_results[index] = str(form)
-      message = 'Updated existing result.'
-    else:
-      # An empty status means remove this build result.
-      patchset.build_results.pop(index)
-      message = 'Removed existing result.'
-  elif form.cleaned_data['status']:
-    patchset.build_results.append(str(form))
-    message = 'Adding new status result.'
-  else:
-    message = 'Not adding empty status result.'
-
-  patchset.put()
-  return HttpResponse(message, content_type='text/plain')
-
-
 @login_required
 @xsrf_required
 def conversions(request):
=======================================
--- /fix_issue.py       Tue Dec  6 10:44:22 2011
+++ /fix_issue.py       Fri Dec 16 08:27:08 2011
@@ -1,7 +1,7 @@
 import datetime
 import logging
 from google.appengine.ext.mapreduce import operation as op
-from codereview.models import Account, Issue
+from codereview.models import Account, Issue, TryJobResult


 def FixIssue(issue):
@@ -33,3 +33,49 @@
    return
  logging.warn('Deleting %s' % email)
  yield op.db.Delete(account)
+
+
+def UpgradeBuildResults(patchset):
+  """Convert the old build_results member of PatchSet to TryJobResults.
+
+  For each entry in the build_results field in patchset, create an instance
+  of TryJobResult with the corresponding information.  The build_results field
+  is then removed from the patchset.
+
+  Args:
+    patchset: An entity of the model PatchSet.
+  """
+  SEPARATOR = '|'
+  objects_to_save = []
+
+  if patchset.build_results:
+    for build_result in patchset.build_results:
+      try:
+        (platform_id, status, details_url) = build_result.split(SEPARATOR, 2)
+        if status == 'success':
+          result = TryJobResult.SUCCESS
+        elif status == 'failure':
+          result = TryJobResult.FAILURE
+        else:
+          result = -1
+        job = TryJobResult(parent=patchset,
+                           url=details_url,
+                           result=result,
+                           builder=platform_id,
+                           timestamp=patchset.modified)
+        objects_to_save.append(job)
+      except ValueError:
+        logging.warn('Invalid build_result %s for patchset %d/%d',
+                     build_result,
+                     patchset.issue.key().id(),
+                     patchset.key().id())
+
+    patchset.build_results = []
+    objects_to_save.append(patchset)
+
+  class Put(op.base.Operation):
+    def __call__(self, context):
+      for obj in objects_to_save:
+        context.mutation_pool.put(obj)
+
+  yield Put()
=======================================
--- /mapreduce.yaml     Tue Dec  6 10:53:34 2011
+++ /mapreduce.yaml     Fri Dec 16 08:27:08 2011
@@ -13,3 +13,10 @@
    params:
    - name: entity_kind
      default: codereview.models.Account
+- name: Convert the old build_results member of PatchSet to TryJobResults
+  mapper:
+    input_reader: google.appengine.ext.mapreduce.input_readers.DatastoreInputReader
+    handler: fix_issue.UpgradeBuildResults
+    params:
+    - name: entity_kind
+      default: codereview.models.PatchSet

--
You received this message because you are subscribed to the Google Groups "codereview-list" group.
To post to this group, send an email to codereview-list@googlegroups.com.
To unsubscribe from this group, send email to codereview-list+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/codereview-list?hl=en-GB.


Marc-Antoine Ruel

unread,
Dec 16, 2011, 3:12:48 PM12/16/11
to anatoly techtonik, coderevie...@googlegroups.com
Argh.

Thanks.

M-A
Reply all
Reply to author
Forward
0 new messages