[LTP] [PATCH] acct02: relax ac_btime checks
Jan Stancek
jstancek@redhat.com
Tue Nov 12 10:15:18 CET 2019
ac_btime is calculated back from current time and isn't accurate.
Problems include nanoseconds accumulation (lags behind gettimeofday),
suspend/resume isn't taken into account and any adjtime() (like DST
change) will cause ac_btime to jump as well.
Relax the condition to ~2h around gettimeofday value at start of
the test. That should be enough to cover usual DST time jumps.
Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
testcases/kernel/syscalls/acct/acct02.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/testcases/kernel/syscalls/acct/acct02.c b/testcases/kernel/syscalls/acct/acct02.c
index 890568b08774..2f1290fa287f 100644
--- a/testcases/kernel/syscalls/acct/acct02.c
+++ b/testcases/kernel/syscalls/acct/acct02.c
@@ -74,7 +74,8 @@ static int verify_acct(void *acc, int elap_time)
{
int sys_time = UNPACK(ACCT_MEMBER(ac_stime));
int user_time = UNPACK(ACCT_MEMBER(ac_stime));
- int ret = 0, tmp;
+ unsigned int btime_diff;
+ int ret = 0;
float tmp2;
if (strcmp(ACCT_MEMBER(ac_comm), COMMAND)) {
@@ -83,15 +84,13 @@ static int verify_acct(void *acc, int elap_time)
ret = 1;
}
- if (ACCT_MEMBER(ac_btime) < start_time) {
- tst_res(TINFO, "ac_btime < %d (%d)", start_time,
- ACCT_MEMBER(ac_btime));
- ret = 1;
- }
+ if (start_time > ACCT_MEMBER(ac_btime))
+ btime_diff = start_time - ACCT_MEMBER(ac_btime);
+ else
+ btime_diff = ACCT_MEMBER(ac_btime) - start_time;
- tmp = ACCT_MEMBER(ac_btime) - start_time;
- if (tmp > 1) {
- tst_res(TINFO, "ac_btime - %d > 1 (%d)", start_time, tmp);
+ if (btime_diff > 7200) {
+ tst_res(TINFO, "ac_btime_diff %u", btime_diff);
ret = 1;
}
--
1.8.3.1
More information about the ltp
mailing list