[LTP] [PATCH 1/4] fanotify14: Print human-readable test case flags
Martin Doucha
mdoucha@suse.cz
Fri Oct 14 17:49:28 CEST 2022
On 13. 10. 22 23:36, Petr Vorel wrote:
> Hi Martin,
>
>> It's hard to tell which test case is failing from the current fanotify14
>> output. Print test case flags to make failure analysis easier.
>
>> Signed-off-by: Martin Doucha <mdoucha@suse.cz>
>> ---
>> .../kernel/syscalls/fanotify/fanotify14.c | 194 ++++++++++--------
>> 1 file changed, 108 insertions(+), 86 deletions(-)
>
>> diff --git a/testcases/kernel/syscalls/fanotify/fanotify14.c b/testcases/kernel/syscalls/fanotify/fanotify14.c
>> index 594259ccf..ee42aaf68 100644
>> --- a/testcases/kernel/syscalls/fanotify/fanotify14.c
>> +++ b/testcases/kernel/syscalls/fanotify/fanotify14.c
>> @@ -38,6 +38,8 @@
>> #define INODE_EVENTS (FAN_ATTRIB | FAN_CREATE | FAN_DELETE | FAN_MOVE | \
>> FAN_DELETE_SELF | FAN_MOVE_SELF)
>
>> +#define FLAGS_DESC(flags) (flags), (#flags)
> +1 for add ing description. But macro like this gets false positive in make
> check:
>
> fanotify14.c:41: ERROR: Macros with complex values should be enclosed in parentheses
>
> Also quite recently, in dbb9db6ec ("syscalls/fanotify09: Make test case
> definitions more readable") was single test migrated to use
> .foo = value, .bar = value struct setup. This is about source code readability,
> you aim for test output readability, IMHO both is important.
I can't use that approach here because I'm using the macro to initialize
3 different pairs of attributes in the same structure. What I could do
is change the flags/desc pairs into a nested struct of
{unsigned long, const char *} and the macro would change to
#define FLAGS_DESC(flags) {(flags), (#flags)}
>> @@ -155,8 +169,14 @@ static void do_test(unsigned int number)
>> return;
>> }
>
>> - TST_EXP_FD_OR_FAIL(fanotify_fd = fanotify_init(tc->init_flags, O_RDONLY),
>> - !tc->mask && tc->expected_errno ? tc->expected_errno : 0);
> TST_EXP_FD_OR_FAIL was added only to be used by fanotify tests.
> What's wrong with it?
I got a headache trying to figure out when this call was expected to
pass and when it was expected to fail. The more verbose version below is
far easier to understand.
>> + if (!tc->mask && tc->expected_errno) {
>> + TST_EXP_FAIL(fanotify_init(tc->init_flags, O_RDONLY),
>> + tc->expected_errno);
>> + } else {
>> + TST_EXP_FD(fanotify_init(tc->init_flags, O_RDONLY));
>> + }
>> +
>> + fanotify_fd = TST_RET;
--
Martin Doucha mdoucha@suse.cz
QA Engineer for Software Maintenance
SUSE LINUX, s.r.o.
CORSO IIa
Krizikova 148/34
186 00 Prague 8
Czech Republic
More information about the ltp
mailing list