[llvm-commits] [LNT] r161706 - /lnt/trunk/lnt/server/db/testsuitedb.py
Michael Gottesman
mgottesman at apple.com
Fri Aug 10 15:04:05 PDT 2012
Author: mgottesman
Date: Fri Aug 10 17:04:05 2012
New Revision: 161706
URL: http://llvm.org/viewvc/llvm-project?rev=161706&view=rev
Log:
[LNT] Added a get_baseline_run method to Machine in lnt.server.db.testsuitedb.py.
This will allow someone with a machine to find the closest order to a
specific baseline order for which this machine also reported.
Modified:
lnt/trunk/lnt/server/db/testsuitedb.py
Modified: lnt/trunk/lnt/server/db/testsuitedb.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/db/testsuitedb.py?rev=161706&r1=161705&r2=161706&view=diff
==============================================================================
--- lnt/trunk/lnt/server/db/testsuitedb.py (original)
+++ lnt/trunk/lnt/server/db/testsuitedb.py Fri Aug 10 17:04:05 2012
@@ -60,6 +60,8 @@
class Machine(self.base, ParameterizedMixin):
__tablename__ = db_key_name + '_Machine'
+ DEFAULT_BASELINE_REVISION = 144168
+
fields = self.machine_fields
id = Column("ID", Integer, primary_key=True)
name = Column("Name", String(256), index=True)
@@ -96,6 +98,50 @@
def parameters(self, data):
self.parameters_data = json.dumps(sorted(data.items()))
+ def get_baseline_run(self, revision=None):
+ """
+ Find the closest order to the requested baseline
+ order, for which this machine also reported.
+ """
+
+ # FIXME: Scalability! Pretty fast in practice, but
+ # still pretty lame.
+
+ ts = Machine.testsuite
+
+ # We don't use Machine.DEFAULT_BASELINE_REVISION as a
+ # default argument so that the user can input a None
+ # argument and get the same effect as not using a
+ # second argument at all.
+ if revision is None:
+ revision = Machine.DEFAULT_BASELINE_REVISION
+
+ # If we have an int, convert it to a proper string.
+ if isinstance(revision, int):
+ revision = '% 7d' % revision
+
+ # Grab order for revision.
+ order_to_find = ts.Order(llvm_project_revision = revision)
+
+ # Search for best run.
+ baseline = None
+ best = None
+ for order in ts.query(ts.Order).\
+ join(ts.Run).\
+ filter(ts.Run.machine_id == self.id).distinct():
+ if order >= order_to_find and (best is None or order < best):
+ best = order
+
+ # Find the most recent run on this machine that used
+ # that order.
+ if best:
+ baseline = ts.query(ts.Run)\
+ .filter(ts.Run.machine_id == self.id)\
+ .filter(ts.Run.order_id == best.id)\
+ .order_by(ts.Run.start_time.desc()).first()
+
+ return baseline
+
class Order(self.base, ParameterizedMixin):
__tablename__ = db_key_name + '_Order'
More information about the llvm-commits
mailing list