public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Fabian Groffen" <grobian@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage-utils:master commit in: /, tests/qlop/
Date: Sun, 27 Oct 2019 12:47:32 +0000 (UTC)	[thread overview]
Message-ID: <1572180366.27f35b8a59b2afcc090c5e576a69ad7f1eb14b12.grobian@gentoo> (raw)

commit:     27f35b8a59b2afcc090c5e576a69ad7f1eb14b12
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sun Oct 27 12:46:06 2019 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sun Oct 27 12:46:06 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=27f35b8a

qlop: allow forcing non-proc running mode using -rr for testing

Adapt test to use -rr to force falling back to scanning emerge.log, and
give -d to the data range in which things happen, such that the 10-day
cutoff can be calculated based on that for deterministic output.

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 qlop.c                 | 25 ++++++++++++++-----------
 tests/qlop/dotest      |  4 ++--
 tests/qlop/list10.good |  6 +++---
 3 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/qlop.c b/qlop.c
index 6cb2c04..7083ea7 100644
--- a/qlop.c
+++ b/qlop.c
@@ -344,7 +344,6 @@ New format:
 1550953125:  *** exiting successfully.
 1550953125:  *** terminating.
 
-
 Currently running merges can be found in the /proc filesystem:
 - Linux: readlink(/proc/<pid>/fd/X)
 - Solaris: readlink(/proc/<pid>/path/X)
@@ -846,16 +845,18 @@ static int do_emerge_log(
 	if (flags->do_running) {
 		time_t cutofftime;
 
+		tstart = time(NULL);
+
 		/* emerge.log can be interrupted, incorrect and hopelessly lost,
 		 * so to eliminate some unfinished crap from there, we just
 		 * ignore anything that's > cutofftime, 10 days for now. */
 		cutofftime = 10 * 24 * 60 * 60;  /* when we consider entries stale */
+		cutofftime = (tbegin > 0 ? tbegin : tstart) - cutofftime;
 
 		/* can't report endtime for non-finished operations */
 		flags->do_endtime = 0;
-		tstart = time(NULL);
 		sync_time /= sync_cnt;
-		if (sync_start >= tstart - cutofftime) {
+		if (sync_start >= cutofftime) {
 			elapsed = tstart - sync_start;
 			if (elapsed >= sync_time)
 				sync_time = 0;
@@ -878,7 +879,7 @@ static int do_emerge_log(
 			time_t maxtime = 0;
 			bool isMax = false;
 
-			if (pkgw->tbegin < tstart - cutofftime)
+			if (pkgw->tbegin < cutofftime)
 				continue;
 
 			snprintf(afmt, sizeof(afmt), "%s/%s",
@@ -925,7 +926,7 @@ static int do_emerge_log(
 			time_t maxtime = 0;
 			bool isMax = false;
 
-			if (pkgw->tbegin < tstart - cutofftime)
+			if (pkgw->tbegin < cutofftime)
 				continue;
 
 			snprintf(afmt, sizeof(afmt), "%s/%s",
@@ -1140,6 +1141,7 @@ int qlop_main(int argc, char **argv)
 	char *q;
 	depend_atom *atom;
 	DECLARE_ARRAY(atoms);
+	int runningmode = 0;
 
 	start_time = 0;
 	end_time = LONG_MAX;
@@ -1173,7 +1175,8 @@ int qlop_main(int argc, char **argv)
 					  m.show_lastmerge = 1;
 					  m.show_emerge = 1;
 					  verbose = 1;          break;
-			case 'r': m.do_running = 1;     break;
+			case 'r': m.do_running = 1;
+					  runningmode++;        break;
 			case 'a': m.do_average = 1;     break;
 			case 'c': m.do_summary = 1;     break;
 			case 'H': m.do_human = 1;       break;
@@ -1312,14 +1315,14 @@ int qlop_main(int argc, char **argv)
 	if (m.do_running) {
 		array_t *new_atoms = probe_proc(atoms);
 
-		if (new_atoms != NULL && array_cnt(new_atoms) == 0) {
-			/* proc supported, found nothing running */
-			start_time = LONG_MAX;
-		} else {
+		if (runningmode > 1 || new_atoms == NULL) {
 			warn("/proc not available, deducing running "
 					"merges from emerge.log");
+		} else if (array_cnt(new_atoms) == 0) {
+			/* proc supported, found nothing running */
+			start_time = LONG_MAX;
 		}
-
+		/* NOTE: new_atoms == atoms when new_atoms != NULL */
 	}
 
 	if (start_time < LONG_MAX)

diff --git a/tests/qlop/dotest b/tests/qlop/dotest
index bf5edc0..321f7d2 100755
--- a/tests/qlop/dotest
+++ b/tests/qlop/dotest
@@ -10,7 +10,7 @@ test() {
 	local num=$1 exp=$2 ret=0
 	shift 2
 	eval "$@" > list || ret=$?
-	if ! diff -u list ${as}/list${num}.good ; then
+	if ! diff -u ${as}/list${num}.good list ; then
 		tfail "output does not match"
 	fi
 	if [[ ${exp} -ne ${ret} ]] ; then
@@ -48,7 +48,7 @@ test 09 0 "qlop -Hacv automake -f ${as}/aborts.log"
 
 # https://bugs.gentoo.org/697068: a parallel emerge finishing should
 # wipe the outstanding emerges from other emerges
-test 10 0 "qlop -r -f ${as}/parallel.log"
+test 10 0 "qlop -Mrr -f ${as}/parallel.log" -d 1568976528
 
 cleantmpdir
 

diff --git a/tests/qlop/list10.good b/tests/qlop/list10.good
index 845573f..348992a 100644
--- a/tests/qlop/list10.good
+++ b/tests/qlop/list10.good
@@ -1,3 +1,3 @@
-2019-09-20T12:27:40 >>> dev-qt/qtmultimedia... (96 of 129) ETA: unknown
-2019-09-20T16:17:50 >>> kde-frameworks/kxmlgui... (98 of 129) ETA: unknown
-2019-09-20T16:18:28 >>> net-analyzer/wireshark... (99 of 129) ETA: unknown
+1568982460 >>> dev-qt/qtmultimedia... (96 of 129) ETA: unknown
+1568996270 >>> kde-frameworks/kxmlgui... (98 of 129) ETA: unknown
+1568996308 >>> net-analyzer/wireshark... (99 of 129) ETA: unknown


             reply	other threads:[~2019-10-27 12:47 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-27 12:47 Fabian Groffen [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-10-20  9:08 [gentoo-commits] proj/portage-utils:master commit in: /, tests/qlop/ Fabian Groffen
2018-03-31 18:31 Fabian Groffen
2016-02-17  7:13 Mike Frysinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1572180366.27f35b8a59b2afcc090c5e576a69ad7f1eb14b12.grobian@gentoo \
    --to=grobian@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox