[llvm-commits] [zorg] r125908 - in /zorg/trunk/llvmlab/llvmlab: ci/summary.py ui/app.py ui/ci/views.py

Daniel Dunbar daniel at zuster.org
Fri Feb 18 08:43:07 PST 2011


Author: ddunbar
Date: Fri Feb 18 10:43:07 2011
New Revision: 125908

URL: http://llvm.org/viewvc/llvm-project?rev=125908&view=rev
Log:
llvmlab: Start sketching a summary object which connects the CI config with the
current status information to provide a high-level summary of the build status.

Added:
    zorg/trunk/llvmlab/llvmlab/ci/summary.py
Modified:
    zorg/trunk/llvmlab/llvmlab/ui/app.py
    zorg/trunk/llvmlab/llvmlab/ui/ci/views.py

Added: zorg/trunk/llvmlab/llvmlab/ci/summary.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/llvmlab/llvmlab/ci/summary.py?rev=125908&view=auto
==============================================================================
--- zorg/trunk/llvmlab/llvmlab/ci/summary.py (added)
+++ zorg/trunk/llvmlab/llvmlab/ci/summary.py Fri Feb 18 10:43:07 2011
@@ -0,0 +1,62 @@
+"""
+Summary information for the dashboard.
+
+Connects the active CI configuration with the status information to track the
+current high-level status.
+"""
+
+import sys
+
+class Summary(object):
+    def __init__(self, config, status):
+        self.config = config
+        self.status = status
+
+    def get_current_status(self):
+        """
+        get_current_status() -> ...
+
+        Compute information on the current status.
+        """
+
+        # For each configured builder, compute the:
+        #   a. current build(s),
+        #   b. last passing build,
+        #   c. last failing build,
+        #   d. last completed build
+        info = {}
+        for builder in self.config.builders:
+            builds = self.status.builders.get(builder.name)
+
+            current = []
+            passing = failing = completed = None
+            if builds is None:
+                # FIXME: Logging!
+                print >>sys.stderr, "warning: no status for '%s'" % (
+                    builder.name)
+                info[builder.name] = None
+            else:
+                for build in builds[::-1]:
+                    # Check if this is an active build.
+                    if build.start_time is not None and build.end_time is None:
+                        current.append(build)
+                        continue
+
+                    # Otherwise, check the status.
+                    if completed is None:
+                        completed = build
+
+                    if build.result == 0:
+                        if passing is None:
+                            passing = build
+                    else:
+                        if failing is None:
+                            failing = build
+
+            info[builder.name] = {
+                'current' : current,
+                'passing' : passing,
+                'failing' : failing,
+                'completed' : completed }
+
+        return info

Modified: zorg/trunk/llvmlab/llvmlab/ui/app.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/llvmlab/llvmlab/ui/app.py?rev=125908&r1=125907&r2=125908&view=diff
==============================================================================
--- zorg/trunk/llvmlab/llvmlab/ui/app.py (original)
+++ zorg/trunk/llvmlab/llvmlab/ui/app.py Fri Feb 18 10:43:07 2011
@@ -5,9 +5,10 @@
 
 import llvmlab.data
 import llvmlab.user
+import llvmlab.ci.summary
 import llvmlab.ci.status
-from llvmlab.ui.ci.views import ci as ci_views
-from llvmlab.ui.frontend.views import frontend as frontend_views
+import llvmlab.ui.ci.views
+import llvmlab.ui.frontend.views
 
 class App(flask.Flask):
     @staticmethod
@@ -29,12 +30,16 @@
         app.load_status(status)
 
         # Load the application routes.
-        app.register_module(ci_views)
-        app.register_module(frontend_views)
+        app.register_module(llvmlab.ui.ci.views.ci)
+        app.register_module(llvmlab.ui.frontend.views.frontend)
 
         # Spawn the status monitor thread.
         app.monitor = app.config.status.start_monitor(app)
 
+        # Construct the dashboard summary object.
+        app.config.summary = llvmlab.ci.summary.Summary(
+            llvmlab.ui.ci.views.g_config, app.config.status)
+
         return app
 
     @staticmethod

Modified: zorg/trunk/llvmlab/llvmlab/ui/ci/views.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/llvmlab/llvmlab/ui/ci/views.py?rev=125908&r1=125907&r2=125908&view=diff
==============================================================================
--- zorg/trunk/llvmlab/llvmlab/ui/ci/views.py (original)
+++ zorg/trunk/llvmlab/llvmlab/ui/ci/views.py Fri Feb 18 10:43:07 2011
@@ -32,10 +32,8 @@
                   "nightly_clang-x86_64-osx10-RA-flto",
                   "nightly_clang-x86_64-osx10-RA-g"]),
     config.Phase("Validation", 4, "phase4 - validation",
-                 ["clang-x86_64-osx10-RA-stage3",
+                 ["nightly_clang-i386-osx10-RA",
                   "gccTestSuite-clang-x86_64-osx10-RA",
-                  "nightly_clang-x86_64-osx10-RA-stage3-g",
-                  "libcxx-clang-x86_64-osx10-RA",
                   "boost-trunk-clang-x86_64-osx10-RA"])]
 builders = [
     config.Builder("Validated Build"),
@@ -54,10 +52,7 @@
     config.Builder("nightly_clang-x86_64-osx10-RA-O3"),
     config.Builder("nightly_clang-x86_64-osx10-RA-flto"),
     config.Builder("nightly_clang-x86_64-osx10-RA-g"),
-    config.Builder("clang-x86_64-osx10-RA-stage3"),
     config.Builder("gccTestSuite-clang-x86_64-osx10-RA"),
-    config.Builder("nightly_clang-x86_64-osx10-RA-stage3-g"),
-    config.Builder("libcxx-clang-x86_64-osx10-RA"),
     config.Builder("boost-trunk-clang-x86_64-osx10-RA")]
 published_builds = [
     config.PublishedBuild("LLVM", "Linux", "i386", "llvm-linux-i386.tgz"),





More information about the llvm-commits mailing list