[LTP] [PATCH] syscalls/fanotify09: Make test case definitions more readable

Matthew Bobrowski repnop@google.com
Thu Sep 8 02:06:39 CEST 2022


On Wed, Sep 07, 2022 at 02:03:26PM +0300, Amir Goldstein wrote:
> Use explicit field members to initialize test cases and omit
> fields initialized to zero to make the definitions more compact
> and more readable.

Looks fine. I guess we could adopt the same designated intializer pattern across
a bunch of other fanotify LTP tests.

Reviewed-by: Matthew Bobrowski <repnop@google.com>

> Rename the field s/close_nowrite/event_path to make its meaning
> less obscure.
>
> Suggested-by: Petr Vorel <pvorel@suse.cz>
> Signed-off-by: Amir Goldstein <amir73il@gmail.com>
> ---
> 
> Hi Petr,
> 
> Here is the cleanup you proposed.
> Please check that I did not make any mistakes...
> 
> Thanks,
> Amir.
> 
>  .../kernel/syscalls/fanotify/fanotify09.c     | 203 ++++++++----------
>  1 file changed, 94 insertions(+), 109 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/fanotify/fanotify09.c b/testcases/kernel/syscalls/fanotify/fanotify09.c
> index e40916c08..3f2db4709 100644
> --- a/testcases/kernel/syscalls/fanotify/fanotify09.c
> +++ b/testcases/kernel/syscalls/fanotify/fanotify09.c
> @@ -82,145 +82,130 @@ static struct tcase {
>  	unsigned int ignore;
>  	unsigned int ignore_flags;
>  	unsigned int report_name;
> -	const char *close_nowrite;
> +	const char *event_path;
>  	int nevents;
>  	unsigned int nonfirst_event;
>  } tcases[] = {
>  	{
> -		"Events on non-dir child with both parent and mount marks",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		0,
> -		0, 0,
> -		0,
> -		DIR_NAME,
> -		1, 0,
> +		.tname = "Events on non-dir child with both parent and mount marks",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.event_path = DIR_NAME,
> +		.nevents = 1,
>  	},
>  	{
> -		"Events on non-dir child and subdir with both parent and mount marks",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		FAN_ONDIR,
> -		0, 0,
> -		0,
> -		DIR_NAME,
> -		2, 0,
> +		.tname = "Events on non-dir child and subdir with both parent and mount marks",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ondir = FAN_ONDIR,
> +		.event_path = DIR_NAME,
> +		.nevents = 2,
>  	},
>  	{
> -		"Events on non-dir child and parent with both parent and mount marks",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		FAN_ONDIR,
> -		0, 0,
> -		0,
> -		".",
> -		2, 0
> +		.tname = "Events on non-dir child and parent with both parent and mount marks",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ondir = FAN_ONDIR,
> +		.event_path = ".",
> +		.nevents = 2,
>  	},
>  	{
> -		"Events on non-dir child and subdir with both parent and subdir marks",
> -		INIT_FANOTIFY_MARK_TYPE(INODE),
> -		FAN_ONDIR,
> -		0, 0,
> -		0,
> -		DIR_NAME,
> -		2, 0,
> +		.tname = "Events on non-dir child and subdir with both parent and subdir marks",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(INODE),
> +		.ondir = FAN_ONDIR,
> +		.event_path = DIR_NAME,
> +		.nevents = 2,
>  	},
>  	{
> -		"Events on non-dir children with both parent and mount marks",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		0,
> -		0, 0,
> -		0,
> -		FILE2_NAME,
> -		2, FAN_CLOSE_NOWRITE,
> +		.tname = "Events on non-dir children with both parent and mount marks",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.event_path = FILE2_NAME,
> +		.nevents = 2,
> +		.nonfirst_event = FAN_CLOSE_NOWRITE,
>  	},
>  	{
> -		"Events on non-dir child with both parent and mount marks and filename info",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		0,
> -		0, 0,
> -		FAN_REPORT_DFID_NAME,
> -		FILE2_NAME,
> -		2, FAN_CLOSE_NOWRITE,
> +		.tname = "Events on non-dir child with both parent and mount marks and filename info",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.report_name = FAN_REPORT_DFID_NAME,
> +		.event_path = FILE2_NAME,
> +		.nevents = 2,
> +		.nonfirst_event = FAN_CLOSE_NOWRITE,
>  	},
>  	{
> -		"Events on non-dir child with ignore mask on parent",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		0,
> -		FAN_MARK_IGNORED_MASK, 0,
> -		0,
> -		DIR_NAME,
> -		1, 0,
> +		.tname = "Events on non-dir child with ignore mask on parent",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ignore = FAN_MARK_IGNORED_MASK,
> +		.event_path = DIR_NAME,
> +		.nevents = 1,
>  	},
>  	{
> -		"Events on non-dir children with surviving ignore mask on parent",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		0,
> -		FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY, 0,
> -		0,
> -		FILE2_NAME,
> -		2, FAN_CLOSE_NOWRITE,
> +		.tname = "Events on non-dir children with surviving ignore mask on parent",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ignore = FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY,
> +		.event_path = FILE2_NAME,
> +		.nevents = 2,
> +		.nonfirst_event = FAN_CLOSE_NOWRITE,
>  	},
>  	/* FAN_MARK_IGNORE test cases: */
>  	{
> -		"Events on dir with ignore mask that does not apply to dirs",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		FAN_ONDIR,
> -		FAN_MARK_IGNORE_SURV, 0,
> -		0,
> -		".",
> -		2, FAN_CLOSE_NOWRITE,
> +		.tname = "Events on dir with ignore mask that does not apply to dirs",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ondir = FAN_ONDIR,
> +		.ignore = FAN_MARK_IGNORE_SURV,
> +		.event_path = ".",
> +		.nevents = 2,
> +		.nonfirst_event = FAN_CLOSE_NOWRITE,
>  	},
>  	{
> -		"Events on dir with ignore mask that does apply to dirs",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		FAN_ONDIR,
> -		FAN_MARK_IGNORE_SURV, FAN_ONDIR,
> -		0,
> -		".",
> -		2, 0,
> +		.tname = "Events on dir with ignore mask that does apply to dirs",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ondir = FAN_ONDIR,
> +		.ignore = FAN_MARK_IGNORE_SURV,
> +		.ignore_flags = FAN_ONDIR,
> +		.event_path = ".",
> +		.nevents = 2,
>  	},
>  	{
> -		"Events on child with ignore mask on parent that does not apply to children",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		0,
> -		FAN_MARK_IGNORE_SURV, 0,
> -		0,
> -		FILE2_NAME,
> -		2, FAN_CLOSE_NOWRITE,
> +		.tname = "Events on child with ignore mask on parent that does not apply to children",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ignore = FAN_MARK_IGNORE_SURV,
> +		.event_path = FILE2_NAME,
> +		.nevents = 2,
> +		.nonfirst_event = FAN_CLOSE_NOWRITE,
>  	},
>  	{
> -		"Events on child with ignore mask on parent that does apply to children",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		0,
> -		FAN_MARK_IGNORE_SURV, FAN_EVENT_ON_CHILD,
> -		0,
> -		FILE2_NAME,
> -		2, 0,
> +		.tname = "Events on child with ignore mask on parent that does apply to children",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ignore = FAN_MARK_IGNORE_SURV,
> +		.ignore_flags = FAN_EVENT_ON_CHILD,
> +		.event_path = FILE2_NAME,
> +		.nevents = 2,
>  	},
>  	{
> -		"Events on subdir with ignore mask on parent that does not apply to children",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		FAN_ONDIR,
> -		FAN_MARK_IGNORE_SURV, FAN_ONDIR,
> -		0,
> -		DIR_NAME,
> -		2, FAN_CLOSE_NOWRITE,
> +		.tname = "Events on subdir with ignore mask on parent that does not apply to children",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ondir = FAN_ONDIR,
> +		.ignore = FAN_MARK_IGNORE_SURV,
> +		.ignore_flags = FAN_ONDIR,
> +		.event_path = DIR_NAME,
> +		.nevents = 2,
> +		.nonfirst_event = FAN_CLOSE_NOWRITE,
>  	},
>  	{
> -		"Events on subdir with ignore mask on parent that does not apply to dirs",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		FAN_ONDIR,
> -		FAN_MARK_IGNORE_SURV, FAN_EVENT_ON_CHILD,
> -		0,
> -		DIR_NAME,
> -		2, FAN_CLOSE_NOWRITE,
> +		.tname = "Events on subdir with ignore mask on parent that does not apply to dirs",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ondir = FAN_ONDIR,
> +		.ignore = FAN_MARK_IGNORE_SURV,
> +		.ignore_flags = FAN_EVENT_ON_CHILD,
> +		.event_path = DIR_NAME,
> +		.nevents = 2,
> +		.nonfirst_event = FAN_CLOSE_NOWRITE,
>  	},
>  	{
> -		"Events on subdir with ignore mask on parent that does apply to subdirs",
> -		INIT_FANOTIFY_MARK_TYPE(MOUNT),
> -		FAN_ONDIR,
> -		FAN_MARK_IGNORE_SURV, FAN_EVENT_ON_CHILD | FAN_ONDIR,
> -		0,
> -		DIR_NAME,
> -		2, 0,
> +		.tname = "Events on subdir with ignore mask on parent that does apply to subdirs",
> +		.mark = INIT_FANOTIFY_MARK_TYPE(MOUNT),
> +		.ondir = FAN_ONDIR,
> +		.ignore = FAN_MARK_IGNORE_SURV,
> +		.ignore_flags = FAN_EVENT_ON_CHILD | FAN_ONDIR,
> +		.event_path = DIR_NAME,
> +		.nevents = 2,
>  	},
>  };
>  
> @@ -261,7 +246,7 @@ static void create_fanotify_groups(struct tcase *tc)
>  		SAFE_FANOTIFY_MARK(fd_notify[i],
>  				    FAN_MARK_ADD | mark->flag,
>  				    FAN_CLOSE_NOWRITE | mask_flags,
> -				    AT_FDCWD, tc->close_nowrite);
> +				    AT_FDCWD, tc->event_path);
>  
>  		/*
>  		 * Add inode mark on parent for each group with MODIFY event,
> @@ -415,7 +400,7 @@ static void test_fanotify(unsigned int n)
>  	/*
>  	 * generate FAN_CLOSE_NOWRITE event on a child, subdir or "."
>  	 */
> -	dirfd = SAFE_OPEN(tc->close_nowrite, O_RDONLY);
> +	dirfd = SAFE_OPEN(tc->event_path, O_RDONLY);
>  	SAFE_CLOSE(dirfd);
>  
>  	/*
> @@ -443,7 +428,7 @@ static void test_fanotify(unsigned int n)
>  	}
>  	if (tc->nevents > 1 && FAN_EVENT_OK(event, ret)) {
>  		verify_event(0, event, FAN_CLOSE_NOWRITE,
> -			     tc->report_name ? (tc->ondir ? "." : tc->close_nowrite) : "");
> +			     tc->report_name ? (tc->ondir ? "." : tc->event_path) : "");
>  		event = FAN_EVENT_NEXT(event, ret);
>  	}
>  	if (ret > 0) {
> -- 
> 2.25.1
> 
/M


More information about the ltp mailing list