Add a little bit of support to grab info for making graphs
authorNathan Binkert <binkertn@umich.edu>
Mon, 19 Dec 2005 07:02:58 +0000 (02:02 -0500)
committerNathan Binkert <binkertn@umich.edu>
Mon, 19 Dec 2005 07:02:58 +0000 (02:02 -0500)
without using the jobfile.

util/stats/db.py:
util/stats/profile.py:
    Make it possible to send job as a string and to set the system
    separately from the job.

--HG--
extra : convert_revision : 08aaebd3f9a1643bd41953b43f3b80dc97e6592f

util/stats/db.py
util/stats/profile.py

index 8e57f904362accc9866270e0160e3531d43496ac..d9b78c7d17258f2b99dd3ab3431e6a92b88e82da 100644 (file)
@@ -152,17 +152,24 @@ class Database(object):
         self.method = 'sum'
         self._method = type(self).sum
 
-    def get(self, job, stat):
-        run = self.allRunNames.get(job.name, None)
+    def get(self, job, stat, system=None):
+        run = self.allRunNames.get(str(job), None)
         if run is None:
             return None
 
-        from info import scalar, vector, value, values, total, len
-        stat.system = self[job.system]
-        if scalar(stat):
-            return value(stat, run.run)
-        if vector(stat):
-            return values(stat, run.run)
+        from info import ProxyError, scalar, vector, value, values, total, len
+        if system is None and hasattr('system', job):
+            system = job.system
+
+        if system is not None:
+            stat.system = self[system]
+        try:
+            if scalar(stat):
+                return value(stat, run.run)
+            if vector(stat):
+                return values(stat, run.run)
+        except ProxyError:
+            return None
 
         return None
 
index 1511702803bf74d5360189c225aa92213d810057..f28c5867c6e73781b3166f87000f6cfee0879a8d 100644 (file)
@@ -283,13 +283,16 @@ class Profile(object):
             for cpu,data in cpus.iteritems():
                 yield run,cpu,data
 
-    def get(self, job, stat):
-        if job.system is None:
+    def get(self, job, stat, system=None):
+        if system is None and hasattr('system', job):
+            system = job.system
+
+        if system is None:
             raise AttributeError, 'The job must have a system set'
 
-        run = job.name
-        cpu = '%s.run%d' % (job.system, self.cpu)
-        data = self.getdata(run, cpu)
+        cpu = '%s.run%d' % (system, self.cpu)
+
+        data = self.getdata(str(job), cpu)
         if not data:
             return None