[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