[LNT] r307993 - Simplify deletion code; NFC
Matthias Braun via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 13 19:05:04 PDT 2017
Author: matze
Date: Thu Jul 13 19:05:03 2017
New Revision: 307993
URL: http://llvm.org/viewvc/llvm-project?rev=307993&view=rev
Log:
Simplify deletion code; NFC
With the cascading specifications in place, deletion is trivial...
Modified:
lnt/trunk/lnt/lnttool/updatedb.py
lnt/trunk/lnt/server/db/testsuitedb.py
lnt/trunk/lnt/server/ui/api.py
lnt/trunk/tests/lnttool/PostgresDB.shtest
lnt/trunk/tests/lnttool/UpdateDB.py
lnt/trunk/tests/server/ui/change_processing.py
Modified: lnt/trunk/lnt/lnttool/updatedb.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/lnttool/updatedb.py?rev=307993&r1=307992&r2=307993&view=diff
==============================================================================
--- lnt/trunk/lnt/lnttool/updatedb.py (original)
+++ lnt/trunk/lnt/lnttool/updatedb.py Thu Jul 13 19:05:03 2017
@@ -36,56 +36,18 @@ def action_updatedb(instance_path, datab
order = None
# Compute a list of all the runs to delete.
if delete_order:
- order = ts.query(ts.Order) \
- .filter(ts.Order.id == delete_order).one()
- runs_to_delete = ts.query(ts.Run.id) \
- .filter(ts.Run.order_id == order.id).all()
- runs_to_delete = [r[0] for r in runs_to_delete]
+ runs = ts.query(ts.Run).join(ts.Order) \
+ .filter(ts.Order.id == delete_order).all()
else:
- runs_to_delete = list(delete_runs)
+ runs = ts.query(ts.Run).filter(ts.Run.id.in_(delete_runs)).all()
+ for run in runs:
+ ts.delete(run)
if delete_machines:
- runs_to_delete.extend(
- id
- for id, in (ts.query(ts.Run.id)
- .join(ts.Machine)
- .filter(ts.Machine.name.in_(delete_machines))))
-
- # Delete all samples associated with those runs.
- ts.query(ts.Sample).\
- filter(ts.Sample.run_id.in_(runs_to_delete)).\
- delete(synchronize_session=False)
-
- # Delete all FieldChanges and RegressionIndicators
- for r in runs_to_delete:
- fcs = ts.query(ts.FieldChange). \
- filter(ts.FieldChange.run_id == r).all()
- for f in fcs:
- ris = ts.query(ts.RegressionIndicator) \
- .filter(ts.RegressionIndicator.field_change_id == f.id) \
- .all()
- for r in ris:
- ts.delete(r)
- ts.delete(f)
- # Delete all those runs.
- ts.query(ts.Run).\
- filter(ts.Run.id.in_(runs_to_delete)).\
- delete(synchronize_session=False)
-
- # Delete the machines.
- for name in delete_machines:
- # Delete all FieldChanges associated with this machine.
- ids = ts.query(ts.FieldChange.id).\
- join(ts.Machine).filter(ts.Machine.name == name).all()
- for i in ids:
- ts.query(ts.FieldChange).filter(ts.FieldChange.id == i[0]).\
- delete()
-
- num_deletes = ts.query(ts.Machine).filter_by(name=name).delete()
- if num_deletes == 0:
- logger.warning("unable to find machine named: %r" % name)
- if order:
- ts.delete(order)
+ machines = ts.query(ts.Machine) \
+ .filter(ts.Machine.name.in_(delete_machines)).all()
+ for machine in machines:
+ ts.delete(machine)
if commit:
db.commit()
Modified: lnt/trunk/lnt/server/db/testsuitedb.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/db/testsuitedb.py?rev=307993&r1=307992&r2=307993&view=diff
==============================================================================
--- lnt/trunk/lnt/server/db/testsuitedb.py (original)
+++ lnt/trunk/lnt/server/db/testsuitedb.py Thu Jul 13 19:05:03 2017
@@ -1034,40 +1034,6 @@ class TestSuiteDB(object):
def get_next_runs_on_machine(self, run, N):
return self.get_adjacent_runs_on_machine(run, N, direction=1)
- def delete_runs(self, run_ids, commit=False):
- # type: (object, List[int], bool) -> None
- """Delete the following Runs, their Samples, Field Changes and
- Regression Indicators.
-
- :param run_ids: list of the run ids to delete.
- :param commit: commit now?
- """
-
- # Delete all samples associated with those runs.
- self.query(self.Sample). \
- filter(self.Sample.run_id.in_(run_ids)). \
- delete(synchronize_session=False)
-
- # Delete all FieldChanges and RegressionIndicators
- for r in run_ids:
- fcs = self.query(self.FieldChange). \
- filter(self.FieldChange.run_id == r).all()
- for f in fcs:
- ris = self.query(self.RegressionIndicator) \
- .filter(self.RegressionIndicator.field_change_id == f.id) \
- .all()
- for ri in ris:
- self.delete(ri)
- self.delete(f)
-
- # Delete all those runs.
- self.query(self.Run). \
- filter(self.Run.id.in_(run_ids)). \
- delete(synchronize_session=False)
-
- if commit:
- self.commit()
-
def __repr__(self):
return "{} (on {})".format(self.name, self.v4db.path)
Modified: lnt/trunk/lnt/server/ui/api.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/api.py?rev=307993&r1=307992&r2=307993&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/api.py (original)
+++ lnt/trunk/lnt/server/ui/api.py Thu Jul 13 19:05:03 2017
@@ -184,17 +184,11 @@ class Runs(Resource):
@requires_auth_token
def delete(run_id):
ts = request.get_testsuite()
-
- try:
- run = ts.query(ts.Run) \
- .join(ts.Machine) \
- .join(ts.Order) \
- .filter(ts.Run.id == run_id) \
- .options(joinedload('order')) \
- .one()
- except sqlalchemy.orm.exc.NoResultFound:
+ run = ts.query(ts.Run).filter(ts.Run.id == run_id).first()
+ if run is None:
return abort(404, msg="Did not find run " + str(run_id))
- ts.delete_runs([run_id], commit=True)
+ ts.delete(run)
+ ts.commit()
return
Modified: lnt/trunk/tests/lnttool/PostgresDB.shtest
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/lnttool/PostgresDB.shtest?rev=307993&r1=307992&r2=307993&view=diff
==============================================================================
--- lnt/trunk/tests/lnttool/PostgresDB.shtest (original)
+++ lnt/trunk/tests/lnttool/PostgresDB.shtest Thu Jul 13 19:05:03 2017
@@ -21,14 +21,17 @@ lnt import "${TESTDIR}/instance" "${SHAR
# default.
#
lnt updatedb "${TESTDIR}/instance" --testsuite nts --delete-run 1 \
- --show-sql > "${TESTDIR}/runrm.out"
+ --commit=1 --show-sql > "${TESTDIR}/runrm.out"
# RUN: FileCheck --check-prefix CHECK-RUNRM %s < "%t.install/runrm.out"
-# CHECK-RUNRM: DELETE FROM "NT_Sample" WHERE "NT_Sample"."RunID" IN (%(RunID_1)s)
-# CHECK-RUNRM-NEXT: {'RunID_1': 1}
-# CHECK-RUNRM: DELETE FROM "NT_Run" WHERE "NT_Run"."ID" IN (%(ID_1)s)
-# CHECK-RUNRM-NEXT: {'ID_1': 1}
-# CHECK-RUNRM: ROLLBACK
+# CHECK-RUNRM: DELETE FROM "NT_Sample" WHERE "NT_Sample"."ID" = %(ID)s
+# CHECK-RUNRM-NEXT: ({'ID': 1}, {'ID': 2})
+# CHECK-RUNRM: DELETE FROM "NT_Run" WHERE "NT_Run"."ID" = %(ID)s
+# CHECK-RUNRM-NEXT: {'ID': 1}
+# CHECK-RUNRM: COMMIT
+
+# Import a test set.
+lnt import "${TESTDIR}/instance" "${SHARED_INPUTS}/sample-a-small.plist" --commit=1 --show-sample-count
# Check that we remove runs when we remove a machine.
#
@@ -37,10 +40,10 @@ lnt updatedb "${TESTDIR}/instance" --tes
--show-sql > "${TESTDIR}/machinerm.out"
# RUN: FileCheck --check-prefix CHECK-MACHINERM %s < "%t.install/machinerm.out"
-# CHECK-MACHINERM: DELETE FROM "NT_Sample" WHERE "NT_Sample"."RunID" IN (%(RunID_1)s)
-# CHECK-MACHINERM-NEXT: {'RunID_1': 1}
-# CHECK-MACHINERM: DELETE FROM "NT_Run" WHERE "NT_Run"."ID" IN (%(ID_1)s)
-# CHECK-MACHINERM-NEXT: {'ID_1': 1}
-# CHECK-MACHINERM: DELETE FROM "NT_Machine" WHERE "NT_Machine"."Name" = %(Name_1)s
-# CHECK-MACHINERM-NEXT: {'Name_1': 'LNT SAMPLE MACHINE'}
+# CHECK-MACHINERM: DELETE FROM "NT_Sample" WHERE "NT_Sample"."ID" = %(ID)s
+# CHECK-MACHINERM-NEXT: ({'ID': 3}, {'ID': 4})
+# CHECK-MACHINERM: DELETE FROM "NT_Run" WHERE "NT_Run"."ID" = %(ID)s
+# CHECK-MACHINERM-NEXT: {'ID': 2}
+# CHECK-MACHINERM: DELETE FROM "NT_Machine" WHERE "NT_Machine"."ID" = %(ID)s
+# CHECK-MACHINERM-NEXT: {'ID': 1}
# CHECK-MACHINERM: COMMIT
Modified: lnt/trunk/tests/lnttool/UpdateDB.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/lnttool/UpdateDB.py?rev=307993&r1=307992&r2=307993&view=diff
==============================================================================
--- lnt/trunk/tests/lnttool/UpdateDB.py (original)
+++ lnt/trunk/tests/lnttool/UpdateDB.py Thu Jul 13 19:05:03 2017
@@ -9,25 +9,29 @@
# default.
#
# RUN: lnt updatedb %t.install --testsuite nts \
-# RUN: --delete-run 1 --show-sql > %t.out
+# RUN: --commit=1 --delete-run 1 --show-sql > %t.out
# RUN: FileCheck --check-prefix CHECK-RUNRM %s < %t.out
-# CHECK-RUNRM: DELETE FROM "NT_Sample" WHERE "NT_Sample"."RunID" IN (?)
+# CHECK-RUNRM: DELETE FROM "NT_Sample" WHERE "NT_Sample"."ID" = ?
+# CHECK-RUNRM-NEXT: ((1,), (2,))
+# CHECK-RUNRM: DELETE FROM "NT_Run" WHERE "NT_Run"."ID" = ?
# CHECK-RUNRM-NEXT: (1,)
-# CHECK-RUNRM: DELETE FROM "NT_Run" WHERE "NT_Run"."ID" IN (?)
-# CHECK-RUNRM-NEXT: (1,)
-# CHECK-RUNRM: ROLLBACK
+# CHECK-RUNRM: COMMIT
# Check that we remove runs when we remove a machine.
#
+# RUN: rm -rf %t.install
+# RUN: lnt create %t.install
+# RUN: lnt import %t.install %{shared_inputs}/sample-a-small.plist \
+# RUN: --commit=1 --show-sample-count
# RUN: lnt updatedb %t.install --testsuite nts \
# RUN: --delete-machine "LNT SAMPLE MACHINE" --commit=1 --show-sql > %t.out
# RUN: FileCheck --check-prefix CHECK-MACHINERM %s < %t.out
-# CHECK-MACHINERM: DELETE FROM "NT_Sample" WHERE "NT_Sample"."RunID" IN (?)
+# CHECK-MACHINERM: DELETE FROM "NT_Sample" WHERE "NT_Sample"."ID" = ?
+# CHECK-MACHINERM-NEXT: ((1,), (2,))
+# CHECK-MACHINERM: DELETE FROM "NT_Run" WHERE "NT_Run"."ID" = ?
# CHECK-MACHINERM-NEXT: (1,)
-# CHECK-MACHINERM: DELETE FROM "NT_Run" WHERE "NT_Run"."ID" IN (?)
+# CHECK-MACHINERM: DELETE FROM "NT_Machine" WHERE "NT_Machine"."ID" = ?
# CHECK-MACHINERM-NEXT: (1,)
-# CHECK-MACHINERM: DELETE FROM "NT_Machine" WHERE "NT_Machine"."Name" = ?
-# CHECK-MACHINERM-NEXT: ('LNT SAMPLE MACHINE',)
# CHECK-MACHINERM: COMMIT
Modified: lnt/trunk/tests/server/ui/change_processing.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/server/ui/change_processing.py?rev=307993&r1=307992&r2=307993&view=diff
==============================================================================
--- lnt/trunk/tests/server/ui/change_processing.py (original)
+++ lnt/trunk/tests/server/ui/change_processing.py Thu Jul 13 19:05:03 2017
@@ -199,16 +199,20 @@ class ChangeProcessingTests(unittest.Tes
def test_run_deletion(self):
"""Do the FC and RIs get cleaned up when runs are deleted?"""
ts_db = self.ts_db
- run_ids = ts_db.query(ts_db.Run.id).all()
+ run_idsq = ts_db.query(ts_db.Run.id).all()
fc_ids = ts_db.query(ts_db.FieldChange.id).all()
ri_ids = ts_db.query(ts_db.RegressionIndicator.id).all()
- ts_db.delete_runs([r[0] for r in run_ids])
+ run_ids = [row[0] for row in run_idsq]
+ runs = ts_db.query(ts_db.Run).filter(ts_db.Run.id.in_(run_ids)).all()
+ for run in runs:
+ ts_db.delete(run)
+
run_ids_new = ts_db.query(ts_db.Run.id).all()
fc_ids_new = ts_db.query(ts_db.FieldChange.id).all()
ri_ids_new = ts_db.query(ts_db.RegressionIndicator.id).all()
# Make sure there was some runs.
- self.assertNotEqual(len(run_ids), 0)
+ self.assertNotEqual(len(run_idsq), 0)
self.assertNotEqual(len(fc_ids), 0)
self.assertNotEqual(len(ri_ids), 0)
More information about the llvm-commits
mailing list