From: Cyril Hrubis <chrubis@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v3 2/3] lib/tst_test.c: Update result counters when calling tst_brk()
Date: Mon, 7 Jan 2019 19:29:25 +0100 [thread overview]
Message-ID: <20190107182925.GE15221@rei.lan> (raw)
In-Reply-To: <1383176395.93706380.1546882774990.JavaMail.zimbra@redhat.com>
Hi!
> > Looking at the codebase we do have a few usages of tst_brk(TFAIL, "...")
> > to exit the child process, which sort of works but it's incorrect. The
> > tst_brk() always meant "unrecoverable failure have happened, exit the
> > current process as fast as possible". Looking over our codebase most of
> > the tst_brk(TFAIL, "...") should not actually cause the main test
> > process to exit, these were only meant to exit the child and report the
> > result in one call. It will for instance break the test with -i option
> > on the first failure, which is incorrect.
>
> Nice example, would you care to add that to docs?
Good idea.
> > So if we ever want to have a function to exit child process with a result we
> > should implement tst_ret() that would be equivalent to tst_res() followed by
> > exit(0).
> >
> > It could be even implemented as:
> >
> > #define tst_ret(ttype, fmt, ...) \
> > do { \
> > tst_res_(__FILE__, __LINE__, (ttype), (fmt), ##__VA_ARGS__); \
> > exit(0); \
> > } while (0)
> >
> > This function has one big advantage, it increments the results counters
> > before the child process exits.
>
> If all call-sites switch to tst_ret(), we could add TFAIL to tst_brk
> compile time check.
Actually I've started to work on that and all call sites can either be
converted to tst_ret(TFAIL, ...) or tst_brk(TBROK, ...). So it really
looks like we should go this way.
Also I guess that this may be even safe enough to go in before the
release. I will try to finish and post it tomorrow.
--
Cyril Hrubis
chrubis@suse.cz
next prev parent reply other threads:[~2019-01-07 18:29 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-08 12:55 [LTP] [PATCH 1/2] lib: Introduce tst_strttype() Xiao Yang
2018-11-08 12:55 ` [LTP] [PATCH 2/2] lib/tst_test.c: Restrict that tst_brk() only works with TBROK/TCONF Xiao Yang
2018-11-08 17:53 ` Jan Stancek
2018-11-09 2:46 ` Xiao Yang
2018-11-09 3:12 ` Xiao Yang
2018-11-09 7:54 ` Jan Stancek
2018-11-09 8:17 ` Xiao Yang
2018-11-09 17:52 ` Jan Stancek
2018-11-12 2:29 ` Xiao Yang
2018-12-11 15:17 ` Cyril Hrubis
2018-12-12 7:14 ` Xiao Yang
2019-01-07 13:30 ` Cyril Hrubis
2018-12-13 8:35 ` [LTP] [PATCH v3 1/3] lib: Introduce tst_strttype() Xiao Yang
2018-12-13 8:35 ` [LTP] [PATCH v3 2/3] lib/tst_test.c: Update result counters when calling tst_brk() Xiao Yang
2019-01-07 15:06 ` Cyril Hrubis
2019-01-07 17:39 ` Jan Stancek
2019-01-07 18:29 ` Cyril Hrubis [this message]
2019-01-08 13:11 ` Cyril Hrubis
2019-01-08 9:08 ` Xiao Yang
2018-12-13 8:36 ` [LTP] [PATCH v3 3/3] lib/tst_test.c: Convert TFAIL to TWARN in test cleanup Xiao Yang
2019-01-07 13:34 ` Cyril Hrubis
2019-01-07 14:28 ` Jan Stancek
2018-11-09 7:06 ` [LTP] [PATCH v2 1/2] lib: Introduce tst_strttype() Xiao Yang
2018-11-09 7:06 ` [LTP] [PATCH v2 2/2] lib/tst_test.c: Update result counters when calling tst_brk() Xiao Yang
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=20190107182925.GE15221@rei.lan \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.