changes to reviews
authorkrishnatejaperannagari <krishnatejaperannagari@gmail.com>
Tue, 1 Jul 2014 10:43:53 +0000 (16:13 +0530)
committerkrishnatejaperannagari <krishnatejaperannagari@gmail.com>
Thu, 17 Jul 2014 17:42:30 +0000 (23:12 +0530)
Signed-off-by: krishnatejaperannagari <krishnatejaperannagari@gmail.com>
buildfarm/__init__.py
buildfarm/build.py
buildfarm/web/__init__.py

index cf7f92e3aca2b63b7daa1be7cf767bc20858bde8..ec0556ab19538f2f2b1305aa432b8f6345076532 100644 (file)
@@ -144,8 +144,17 @@ class BuildFarm(object):
         return distinct_builds(result.order_by(Desc(StormBuild.upload_time)))
 
     def get_summary_builds(self):
+        """returns tree and status to the ViewSummaryPage class"""
         store = self._get_store()
-        return store.execute("SELECT tree,status FROM build GROUP BY tree,host,compiler having max(age);")
+        return store.execute("""
+SELECT obd.tree, obd.status AS status_str 
+FROM build obd
+INNER JOIN(
+       SELECT MAX(age) age, tree, host, compiler
+       FROM build
+       GROUP BY tree, host, compiler
+) ibd ON obd.age = ibd.age AND obd.tree = ibd.tree AND  obd.host = ibd.host AND obd.compiler = ibd.compiler;
+""")
 
     def get_tree_builds(self, tree):
         result = self._get_store().find(StormBuild,
index eb8e4423fe99908da53e8cba81dbde69469fa4d0..a064bfaf6984eeb600087bc889e371547dc3a231 100644 (file)
@@ -566,7 +566,8 @@ class BuildResultStore(object):
         os.link(build.basename+".log", new_basename+".log")
         if os.path.exists(build.basename+".err"):
             os.link(build.basename+".err", new_basename+".err")
-        #they are supposed to be in unicode only but since comparision for sumary page depends on them the unicode conversion is done to avoid duplicates when running query in summary_builds
+        # They are supposed to be in unicode only but since comparision for sumary page depends on them 
+        # the unicode conversion is done to avoid duplicates when running query in summary_builds
         new_build = StormBuild(new_basename, unicode(build.tree), unicode(build.host), unicode(build.compiler), rev)
         new_build.checksum = build.log_checksum()
         new_build.upload_time = build.upload_time
index ffaeb60507f13ecf8e40313f64a55c740aa3e32e..ead25730a7599cbe5d5be9a1dc19db37707999d5 100755 (executable)
@@ -731,14 +731,14 @@ class ViewSummaryPage(BuildFarmPage):
 
         builds = self.buildfarm.get_summary_builds()
 
-        for build in builds:
-            host_count[build[0]]+=1
-            status = BuildStatus.__deserialize__(build[1])
+        for tree, status_str in builds:
+            host_count[tree]+=1
+            status = BuildStatus.__deserialize__(status_str)
 
             if status.failed:
-                broken_count[build[0]]+=1
+                broken_count[tree]+=1
                 if "panic" in status.other_failures:
-                    panic_count[build[0]]+=1
+                    panic_count[tree]+=1
         return (host_count, broken_count, panic_count)
 
     def render_text(self, myself):