Add transaction stop watch points.
authorjbj <devnull@localhost>
Tue, 25 Mar 2003 23:51:24 +0000 (23:51 +0000)
committerjbj <devnull@localhost>
Tue, 25 Mar 2003 23:51:24 +0000 (23:51 +0000)
CVS patchset: 6718
CVS date: 2003/03/25 23:51:24

lib/depends.c
lib/rpmts.c
lib/rpmts.h
lib/transaction.c

index f656c70..cf80ef4 100644 (file)
@@ -1177,6 +1177,8 @@ int rpmtsOrder(rpmts ts)
     rpmalMakeIndex(ts->addedPackages);
 #endif
 
+    (void) rpmswNow(&ts->begin);
+
     /* T1. Initialize. */
     if (oType == 0)
        numOrderList = ts->orderCount;
@@ -1578,6 +1580,8 @@ assert(newOrderCount == ts->orderCount);
 #endif
     freeBadDeps();
 
+    ts->ms_order += rpmswDiff(rpmswNow(&ts->end), &ts->begin)/1000;
+
     return 0;
 }
 /*@=bounds@*/
@@ -1591,6 +1595,8 @@ int rpmtsCheck(rpmts ts)
     int xx;
     int rc;
 
+    (void) rpmswNow(&ts->begin);
+
     /* Do lazy, readonly, open of rpm database. */
     if (rpmtsGetRdb(ts) == NULL && ts->dbmode != -1) {
        if ((rc = rpmtsOpenDB(ts, ts->dbmode)) != 0)
@@ -1715,6 +1721,9 @@ int rpmtsCheck(rpmts ts)
 exit:
     mi = rpmdbFreeIterator(mi);
     pi = rpmtsiFree(pi);
+
+    ts->ms_check += rpmswDiff(rpmswNow(&ts->end), &ts->begin)/1000;
+
     /*@-branchstate@*/
     if (closeatexit)
        xx = rpmtsCloseDB(ts);
index 13710a5..070a62c 100644 (file)
@@ -1270,6 +1270,8 @@ rpmts rpmtsCreate(void)
     memset(ts->pksignid, 0, sizeof(ts->pksignid));
     ts->dig = NULL;
 
+    (void) rpmswNow(&ts->create);
+
     ts->nrefs = 0;
 
     return rpmtsLink(ts, "tsCreate");
index fb40a5c..f06aee4 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "rpmps.h"
+#include "rpmsw.h"
 
 /*@-exportlocal@*/
 /*@unchecked@*/
@@ -192,6 +193,16 @@ struct rpmts_s {
     size_t pkpktlen;           /*!< Current pubkey packet length. */
     unsigned char pksignid[8]; /*!< Current pubkey fingerprint. */
 
+    struct rpmsw_s create;     /*!< Creation time stamp. */
+    struct rpmsw_s begin;      /*!< Begin operation time stamp. */
+    struct rpmsw_s end;                /*!< End operation time stamp. */
+    rpmtime_t ms_check;
+    rpmtime_t ms_order;
+    rpmtime_t ms_fingerprint;
+    rpmtime_t ms_repackage;
+    rpmtime_t ms_install;
+    rpmtime_t ms_erase;
+
 /*@null@*/
     pgpDig dig;                        /*!< Current signature/pubkey parameters. */
 
index c4a21b1..0c8129d 100644 (file)
@@ -1151,6 +1151,9 @@ rpmMessage(RPMMESS_DEBUG, _("sanity checking %d elements\n"), rpmtsNElements(ts)
      * worth the trouble though.
      */
 rpmMessage(RPMMESS_DEBUG, _("computing %d file fingerprints\n"), totalFileCount);
+
+(void) rpmswNow(&ts->begin);
+
     numAdded = numRemoved = 0;
     pi = rpmtsiInit(ts);
     while ((p = rpmtsiNext(pi, 0)) != NULL) {
@@ -1362,6 +1365,8 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
     NOTIFY(ts, (NULL, RPMCALLBACK_TRANS_STOP, 6, ts->orderCount,
        NULL, ts->notifyData));
 
+ts->ms_fingerprint += rpmswDiff(rpmswNow(&ts->end), &ts->begin)/1000;
+
     /* ===============================================
      * Free unused memory as soon as possible.
      */
@@ -1394,6 +1399,7 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
      */
     if (rpmtsFlags(ts) & (RPMTRANS_FLAG_DIRSTASH | RPMTRANS_FLAG_REPACKAGE)) {
        int progress;
+
        progress = 0;
        pi = rpmtsiInit(ts);
        while ((p = rpmtsiNext(pi, 0)) != NULL) {
@@ -1416,6 +1422,8 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
                        numRemoved, NULL, ts->notifyData));
                progress++;
 
+(void) rpmswNow(&ts->begin);
+
        /* XXX TR_REMOVED needs CPIO_MAP_{ABSOLUTE,ADDDOT} CPIO_ALL_HARDLINKS */
                fi->mapflags |= CPIO_MAP_ABSOLUTE;
                fi->mapflags |= CPIO_MAP_ADDDOT;
@@ -1427,6 +1435,8 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
                fi->mapflags &= ~CPIO_MAP_ADDDOT;
                fi->mapflags &= ~CPIO_ALL_HARDLINKS;
 
+ts->ms_repackage += rpmswDiff(rpmswNow(&ts->end), &ts->begin)/1000;
+
                /*@switchbreak@*/ break;
            }
        }
@@ -1459,6 +1469,7 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
 
        switch (rpmteType(p)) {
        case TR_ADDED:
+(void) rpmswNow(&ts->begin);
 
            pkgKey = rpmteAddedKey(p);
 
@@ -1553,8 +1564,13 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
 
            p->h = headerFree(p->h);
 
+ts->ms_install += rpmswDiff(rpmswNow(&ts->end), &ts->begin)/1000;
+
            /*@switchbreak@*/ break;
+
        case TR_REMOVED:
+(void) rpmswNow(&ts->begin);
+
            rpmMessage(RPMMESS_DEBUG, "========== --- %s\n", rpmteNEVR(p));
            /*
             * XXX This has always been a hack, now mostly broken.
@@ -1564,6 +1580,9 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
                if (rpmpsmStage(psm, PSM_PKGERASE))
                    ourrc++;
            }
+
+ts->ms_erase += rpmswDiff(rpmswNow(&ts->end), &ts->begin)/1000;
+
            /*@switchbreak@*/ break;
        }
        xx = rpmdbSync(rpmtsGetRdb(ts));