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