Message ID | 20240702-stat04-v1-5-e27d9953210d@suse.com |
---|---|
State | Accepted |
Headers | show |
Series | symlink01 split | expand |
On Tue, Jul 2, 2024 at 10:15 PM Andrea Cervesato <andrea.cervesato@suse.de> wrote: > From: Andrea Cervesato <andrea.cervesato@suse.com> > > This test has been extracted from symlink01 and it verifies that > open() is working correctly on symlink() generated files. > > Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com> > --- > runtest/syscalls | 2 +- > testcases/kernel/syscalls/open/.gitignore | 1 + > testcases/kernel/syscalls/open/open15.c | 86 > +++++++++++++++++++++++++++++++ > 3 files changed, 88 insertions(+), 1 deletion(-) > > diff --git a/runtest/syscalls b/runtest/syscalls > index 928e75f9b..47efac158 100644 > --- a/runtest/syscalls > +++ b/runtest/syscalls > @@ -923,7 +923,6 @@ nice04 nice04 > nice05 nice05 > > open01 open01 > -open01A symlink01 -T open01 > open02 open02 > open03 open03 > open04 open04 > @@ -936,6 +935,7 @@ open11 open11 > open12 open12 > open13 open13 > open14 open14 > +open15 open15 > > openat01 openat01 > openat02 openat02 > diff --git a/testcases/kernel/syscalls/open/.gitignore > b/testcases/kernel/syscalls/open/.gitignore > index 001d874d6..af5997572 100644 > --- a/testcases/kernel/syscalls/open/.gitignore > +++ b/testcases/kernel/syscalls/open/.gitignore > @@ -12,3 +12,4 @@ > /open12_child > /open13 > /open14 > +/open15 > diff --git a/testcases/kernel/syscalls/open/open15.c > b/testcases/kernel/syscalls/open/open15.c > new file mode 100644 > index 000000000..cbe2d62a4 > --- /dev/null > +++ b/testcases/kernel/syscalls/open/open15.c > @@ -0,0 +1,86 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. > + * Author: David Fenner > + * Copilot: Jon Hendrickson > + * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com > + */ > + > +/*\ > + * [Description] > + * > + * This test verifies that open() is working correctly on symlink() > + * generated files. > + */ > + > +#include "tst_test.h" > + > +#define FILENAME "myfile.txt" > +#define BIG_STRING "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" > + > +static void test_open_symlink(void) > +{ > + int fd; > + int str_size; > + char buff[128]; > + char *symname = "my_symlink0"; > + > + str_size = strlen(BIG_STRING); > + > + SAFE_SYMLINK(FILENAME, symname); > + > + fd = SAFE_OPEN(symname, O_CREAT | O_RDWR, 0777); > + SAFE_WRITE(SAFE_WRITE_ALL, fd, BIG_STRING, str_size); > + SAFE_LSEEK(fd, 0, 0); > + SAFE_READ(1, fd, buff, str_size); > + SAFE_CLOSE(fd); > + > + TST_EXP_EXPR(!strncmp(buff, BIG_STRING, str_size), > + "symlink generated file can be opened to write data"); > + > + SAFE_UNLINK(symname); > + SAFE_UNLINK(FILENAME); > +} > + > +static void test_open_compare(void) +{ > + int fd_file, fd_symlink; > + int str_size; > + char buff_file[128]; > + char buff_symlink[128]; > + char *symname = "my_symlink1"; > + > + str_size = strlen(BIG_STRING); > + > + fd_file = SAFE_OPEN(FILENAME, O_CREAT | O_RDWR, 0777); > + SAFE_WRITE(SAFE_WRITE_ALL, fd_file, BIG_STRING, str_size); > + > + SAFE_SYMLINK(FILENAME, symname); > + > + SAFE_LSEEK(fd_file, 0, 0); > + SAFE_READ(1, fd_file, buff_file, str_size); > + > + fd_symlink = SAFE_OPEN(symname, O_RDWR, 0777); > + SAFE_LSEEK(fd_symlink, 0, 0); > + SAFE_READ(1, fd_symlink, buff_symlink, str_size); > Isn't this tst_open_compare already cover the open symlink test? Maybe we could remove the test_open_symlink? > + > + TST_EXP_EXPR(!strncmp(buff_file, buff_symlink, str_size), > + "file data is the equivalent to symlink generated file > data"); > + > + SAFE_CLOSE(fd_file); > + SAFE_CLOSE(fd_symlink); > + > + SAFE_UNLINK(symname); > + SAFE_UNLINK(FILENAME); > +} > + > +static void run(void) > +{ > + test_open_symlink(); > + test_open_compare(); > +} > + > +static struct tst_test test = { > + .test_all = run, > + .needs_tmpdir = 1, > +}; > > -- > 2.43.0 > > > -- > Mailing list info: https://lists.linux.it/listinfo/ltp > >
On Thu, Jul 4, 2024 at 3:18 PM Li Wang <liwang@redhat.com> wrote: > > > On Tue, Jul 2, 2024 at 10:15 PM Andrea Cervesato <andrea.cervesato@suse.de> > wrote: > >> From: Andrea Cervesato <andrea.cervesato@suse.com> >> >> This test has been extracted from symlink01 and it verifies that >> open() is working correctly on symlink() generated files. >> >> Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com> >> --- >> runtest/syscalls | 2 +- >> testcases/kernel/syscalls/open/.gitignore | 1 + >> testcases/kernel/syscalls/open/open15.c | 86 >> +++++++++++++++++++++++++++++++ >> 3 files changed, 88 insertions(+), 1 deletion(-) >> >> diff --git a/runtest/syscalls b/runtest/syscalls >> index 928e75f9b..47efac158 100644 >> --- a/runtest/syscalls >> +++ b/runtest/syscalls >> @@ -923,7 +923,6 @@ nice04 nice04 >> nice05 nice05 >> >> open01 open01 >> -open01A symlink01 -T open01 >> open02 open02 >> open03 open03 >> open04 open04 >> @@ -936,6 +935,7 @@ open11 open11 >> open12 open12 >> open13 open13 >> open14 open14 >> +open15 open15 >> >> openat01 openat01 >> openat02 openat02 >> diff --git a/testcases/kernel/syscalls/open/.gitignore >> b/testcases/kernel/syscalls/open/.gitignore >> index 001d874d6..af5997572 100644 >> --- a/testcases/kernel/syscalls/open/.gitignore >> +++ b/testcases/kernel/syscalls/open/.gitignore >> @@ -12,3 +12,4 @@ >> /open12_child >> /open13 >> /open14 >> +/open15 >> diff --git a/testcases/kernel/syscalls/open/open15.c >> b/testcases/kernel/syscalls/open/open15.c >> new file mode 100644 >> index 000000000..cbe2d62a4 >> --- /dev/null >> +++ b/testcases/kernel/syscalls/open/open15.c >> @@ -0,0 +1,86 @@ >> +// SPDX-License-Identifier: GPL-2.0-or-later >> +/* >> + * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. >> + * Author: David Fenner >> + * Copilot: Jon Hendrickson >> + * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com >> + */ >> + >> +/*\ >> + * [Description] >> + * >> + * This test verifies that open() is working correctly on symlink() >> + * generated files. >> + */ >> + >> +#include "tst_test.h" >> + >> +#define FILENAME "myfile.txt" >> +#define BIG_STRING "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" >> + >> +static void test_open_symlink(void) >> +{ >> + int fd; >> + int str_size; >> + char buff[128]; >> + char *symname = "my_symlink0"; >> + >> + str_size = strlen(BIG_STRING); >> + >> + SAFE_SYMLINK(FILENAME, symname); >> + >> + fd = SAFE_OPEN(symname, O_CREAT | O_RDWR, 0777); >> + SAFE_WRITE(SAFE_WRITE_ALL, fd, BIG_STRING, str_size); >> + SAFE_LSEEK(fd, 0, 0); >> + SAFE_READ(1, fd, buff, str_size); >> + SAFE_CLOSE(fd); >> + >> + TST_EXP_EXPR(!strncmp(buff, BIG_STRING, str_size), >> + "symlink generated file can be opened to write data"); >> + >> + SAFE_UNLINK(symname); >> + SAFE_UNLINK(FILENAME); >> +} >> + >> +static void test_open_compare(void) > > +{ >> + int fd_file, fd_symlink; >> + int str_size; >> + char buff_file[128]; >> + char buff_symlink[128]; >> + char *symname = "my_symlink1"; >> + >> + str_size = strlen(BIG_STRING); >> + >> + fd_file = SAFE_OPEN(FILENAME, O_CREAT | O_RDWR, 0777); >> + SAFE_WRITE(SAFE_WRITE_ALL, fd_file, BIG_STRING, str_size); >> + >> + SAFE_SYMLINK(FILENAME, symname); >> + >> + SAFE_LSEEK(fd_file, 0, 0); >> + SAFE_READ(1, fd_file, buff_file, str_size); >> + >> + fd_symlink = SAFE_OPEN(symname, O_RDWR, 0777); >> + SAFE_LSEEK(fd_symlink, 0, 0); >> + SAFE_READ(1, fd_symlink, buff_symlink, str_size); >> > > Isn't this tst_open_compare already cover the open symlink test? > Maybe we could remove the test_open_symlink? > But if we want to check that open() working correctly on symlink() create file, so just reversing the order of some code inside tst_open_compare should be fine? static void test_open_compare(void) { ... str_size = strlen(BIG_STRING); SAFE_SYMLINK(FILENAME, symname); fd_symlink = SAFE_OPEN(symname, O_CREAT | O_RDWR, 0777); SAFE_WRITE(SAFE_WRITE_ALL, fd_symlink, BIG_STRING, str_size); SAFE_LSEEK(fd_symlink, 0, 0); SAFE_READ(1, fd_symlink, buff_symlink, str_size); fd_file = SAFE_OPEN(FILENAME, O_RDWR, 0777); SAFE_LSEEK(fd_file, 0, 0); SAFE_READ(1, fd_file, buff_file, str_size); TST_EXP_EXPR(!strncmp(buff_file, buff_symlink, str_size), "file data is the equivalent to symlink generated file data"); ... } > > >> + >> + TST_EXP_EXPR(!strncmp(buff_file, buff_symlink, str_size), >> + "file data is the equivalent to symlink generated file >> data"); >> + >> + SAFE_CLOSE(fd_file); >> + SAFE_CLOSE(fd_symlink); >> + >> + SAFE_UNLINK(symname); >> + SAFE_UNLINK(FILENAME); >> +} >> + >> +static void run(void) >> +{ >> + test_open_symlink(); >> + test_open_compare(); >> +} >> + >> +static struct tst_test test = { >> + .test_all = run, >> + .needs_tmpdir = 1, >> +}; >> >> -- >> 2.43.0 >> >> >> -- >> Mailing list info: https://lists.linux.it/listinfo/ltp >> >> > > -- > Regards, > Li Wang >
Hi! On 7/4/24 09:32, Li Wang wrote: > > > On Thu, Jul 4, 2024 at 3:18 PM Li Wang <liwang@redhat.com> wrote: > > > > On Tue, Jul 2, 2024 at 10:15 PM Andrea Cervesato > <andrea.cervesato@suse.de> wrote: > > From: Andrea Cervesato <andrea.cervesato@suse.com> > > This test has been extracted from symlink01 and it verifies that > open() is working correctly on symlink() generated files. > > Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com> > --- > runtest/syscalls | 2 +- > testcases/kernel/syscalls/open/.gitignore | 1 + > testcases/kernel/syscalls/open/open15.c | 86 > +++++++++++++++++++++++++++++++ > 3 files changed, 88 insertions(+), 1 deletion(-) > > diff --git a/runtest/syscalls b/runtest/syscalls > index 928e75f9b..47efac158 100644 > --- a/runtest/syscalls > +++ b/runtest/syscalls > @@ -923,7 +923,6 @@ nice04 nice04 > nice05 nice05 > > open01 open01 > -open01A symlink01 -T open01 > open02 open02 > open03 open03 > open04 open04 > @@ -936,6 +935,7 @@ open11 open11 > open12 open12 > open13 open13 > open14 open14 > +open15 open15 > > openat01 openat01 > openat02 openat02 > diff --git a/testcases/kernel/syscalls/open/.gitignore > b/testcases/kernel/syscalls/open/.gitignore > index 001d874d6..af5997572 100644 > --- a/testcases/kernel/syscalls/open/.gitignore > +++ b/testcases/kernel/syscalls/open/.gitignore > @@ -12,3 +12,4 @@ > /open12_child > /open13 > /open14 > +/open15 > diff --git a/testcases/kernel/syscalls/open/open15.c > b/testcases/kernel/syscalls/open/open15.c > new file mode 100644 > index 000000000..cbe2d62a4 > --- /dev/null > +++ b/testcases/kernel/syscalls/open/open15.c > @@ -0,0 +1,86 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright (c) 2000 Silicon Graphics, Inc. All Rights > Reserved. > + * Author: David Fenner > + * Copilot: Jon Hendrickson > + * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com > + */ > + > +/*\ > + * [Description] > + * > + * This test verifies that open() is working correctly on > symlink() > + * generated files. > + */ > + > +#include "tst_test.h" > + > +#define FILENAME "myfile.txt" > +#define BIG_STRING > "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" > + > +static void test_open_symlink(void) > +{ > + int fd; > + int str_size; > + char buff[128]; > + char *symname = "my_symlink0"; > + > + str_size = strlen(BIG_STRING); > + > + SAFE_SYMLINK(FILENAME, symname); > + > + fd = SAFE_OPEN(symname, O_CREAT | O_RDWR, 0777); > + SAFE_WRITE(SAFE_WRITE_ALL, fd, BIG_STRING, str_size); > + SAFE_LSEEK(fd, 0, 0); > + SAFE_READ(1, fd, buff, str_size); > + SAFE_CLOSE(fd); > + > + TST_EXP_EXPR(!strncmp(buff, BIG_STRING, str_size), > + "symlink generated file can be opened to write > data"); > + > + SAFE_UNLINK(symname); > + SAFE_UNLINK(FILENAME); > +} > + > +static void test_open_compare(void) > > +{ > + int fd_file, fd_symlink; > + int str_size; > + char buff_file[128]; > + char buff_symlink[128]; > + char *symname = "my_symlink1"; > + > + str_size = strlen(BIG_STRING); > + > + fd_file = SAFE_OPEN(FILENAME, O_CREAT | O_RDWR, 0777); > + SAFE_WRITE(SAFE_WRITE_ALL, fd_file, BIG_STRING, str_size); > + > + SAFE_SYMLINK(FILENAME, symname); > + > + SAFE_LSEEK(fd_file, 0, 0); > + SAFE_READ(1, fd_file, buff_file, str_size); > + > + fd_symlink = SAFE_OPEN(symname, O_RDWR, 0777); > + SAFE_LSEEK(fd_symlink, 0, 0); > + SAFE_READ(1, fd_symlink, buff_symlink, str_size); > > > Isn't this tst_open_compare already cover the open symlink test? > Maybe we could remove the test_open_symlink? > > > But if we want to check that open() working correctly on symlink() > create file, > so just reversing the order of some code inside tst_open_compare > should be fine? > > static void test_open_compare(void) > { > ... > > str_size = strlen(BIG_STRING); > > SAFE_SYMLINK(FILENAME, symname); > > fd_symlink = SAFE_OPEN(symname, O_CREAT | O_RDWR, 0777); > SAFE_WRITE(SAFE_WRITE_ALL, fd_symlink, BIG_STRING, str_size); > SAFE_LSEEK(fd_symlink, 0, 0); > SAFE_READ(1, fd_symlink, buff_symlink, str_size); > > fd_file = SAFE_OPEN(FILENAME, O_RDWR, 0777); > SAFE_LSEEK(fd_file, 0, 0); > SAFE_READ(1, fd_file, buff_file, str_size); > > TST_EXP_EXPR(!strncmp(buff_file, buff_symlink, str_size), > "file data is the equivalent to symlink generated file data"); > > ... > } > > That's a good idea, i will apply it. Thanks > > + > + TST_EXP_EXPR(!strncmp(buff_file, buff_symlink, str_size), > + "file data is the equivalent to symlink > generated file data"); > + > + SAFE_CLOSE(fd_file); > + SAFE_CLOSE(fd_symlink); > + > + SAFE_UNLINK(symname); > + SAFE_UNLINK(FILENAME); > +} > + > +static void run(void) > +{ > + test_open_symlink(); > + test_open_compare(); > +} > + > +static struct tst_test test = { > + .test_all = run, > + .needs_tmpdir = 1, > +}; > > -- > 2.43.0 > > > -- > Mailing list info: https://lists.linux.it/listinfo/ltp > > > > -- > Regards, > Li Wang > > > > -- > Regards, > Li Wang Andrea
diff --git a/runtest/syscalls b/runtest/syscalls index 928e75f9b..47efac158 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -923,7 +923,6 @@ nice04 nice04 nice05 nice05 open01 open01 -open01A symlink01 -T open01 open02 open02 open03 open03 open04 open04 @@ -936,6 +935,7 @@ open11 open11 open12 open12 open13 open13 open14 open14 +open15 open15 openat01 openat01 openat02 openat02 diff --git a/testcases/kernel/syscalls/open/.gitignore b/testcases/kernel/syscalls/open/.gitignore index 001d874d6..af5997572 100644 --- a/testcases/kernel/syscalls/open/.gitignore +++ b/testcases/kernel/syscalls/open/.gitignore @@ -12,3 +12,4 @@ /open12_child /open13 /open14 +/open15 diff --git a/testcases/kernel/syscalls/open/open15.c b/testcases/kernel/syscalls/open/open15.c new file mode 100644 index 000000000..cbe2d62a4 --- /dev/null +++ b/testcases/kernel/syscalls/open/open15.c @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. + * Author: David Fenner + * Copilot: Jon Hendrickson + * Copyright (C) 2024 Andrea Cervesato andrea.cervesato@suse.com + */ + +/*\ + * [Description] + * + * This test verifies that open() is working correctly on symlink() + * generated files. + */ + +#include "tst_test.h" + +#define FILENAME "myfile.txt" +#define BIG_STRING "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" + +static void test_open_symlink(void) +{ + int fd; + int str_size; + char buff[128]; + char *symname = "my_symlink0"; + + str_size = strlen(BIG_STRING); + + SAFE_SYMLINK(FILENAME, symname); + + fd = SAFE_OPEN(symname, O_CREAT | O_RDWR, 0777); + SAFE_WRITE(SAFE_WRITE_ALL, fd, BIG_STRING, str_size); + SAFE_LSEEK(fd, 0, 0); + SAFE_READ(1, fd, buff, str_size); + SAFE_CLOSE(fd); + + TST_EXP_EXPR(!strncmp(buff, BIG_STRING, str_size), + "symlink generated file can be opened to write data"); + + SAFE_UNLINK(symname); + SAFE_UNLINK(FILENAME); +} + +static void test_open_compare(void) +{ + int fd_file, fd_symlink; + int str_size; + char buff_file[128]; + char buff_symlink[128]; + char *symname = "my_symlink1"; + + str_size = strlen(BIG_STRING); + + fd_file = SAFE_OPEN(FILENAME, O_CREAT | O_RDWR, 0777); + SAFE_WRITE(SAFE_WRITE_ALL, fd_file, BIG_STRING, str_size); + + SAFE_SYMLINK(FILENAME, symname); + + SAFE_LSEEK(fd_file, 0, 0); + SAFE_READ(1, fd_file, buff_file, str_size); + + fd_symlink = SAFE_OPEN(symname, O_RDWR, 0777); + SAFE_LSEEK(fd_symlink, 0, 0); + SAFE_READ(1, fd_symlink, buff_symlink, str_size); + + TST_EXP_EXPR(!strncmp(buff_file, buff_symlink, str_size), + "file data is the equivalent to symlink generated file data"); + + SAFE_CLOSE(fd_file); + SAFE_CLOSE(fd_symlink); + + SAFE_UNLINK(symname); + SAFE_UNLINK(FILENAME); +} + +static void run(void) +{ + test_open_symlink(); + test_open_compare(); +} + +static struct tst_test test = { + .test_all = run, + .needs_tmpdir = 1, +};