* [PATCH v7 0/2] selftests: tmpfs: Add kselftest support
@ 2025-01-02 10:04 Shivam Chaudhary
2025-01-02 10:04 ` [PATCH v7 1/2] selftests: tmpfs: Add Test-skip if not run as root Shivam Chaudhary
2025-01-02 10:04 ` [PATCH v7 2/2] selftests: tmpfs: Add kselftest support to tmpfs Shivam Chaudhary
0 siblings, 2 replies; 7+ messages in thread
From: Shivam Chaudhary @ 2025-01-02 10:04 UTC (permalink / raw)
To: shuah; +Cc: linux-kselftest, linux-kernel, Shivam Chaudhary
This version 7 patch series replace direct error handling methods with ksft
macros, which provide better reporting.Currently, when the tmpfs test runs,
it does not display any output if it passes,and if it fails
(particularly when not run as root),it simply exits without any warning or
message.
This series of patch adds:
1. Add 'ksft_print_header()' and 'ksft_set_plan()'
to structure test outputs more effectively.
2. skip if not run as root.
3. Replace direct error handling with 'ksft_test_result_*',
macros for better reporting.
v6->v7:
- Improve the handling of failure macros.
v6 v1: https://lore.kernel.org/all/20241219152929.4005003-2-cvam0000@gmail.com/
v6 v2: https://lore.kernel.org/all/20241219152929.4005003-3-cvam0000@gmail.com/
v5->v6:
- Skip if not run as root.
v5 v1: https://lore.kernel.org/all/20241112143056.565122-2-cvam0000@gmail.com/
v5 v2: https://lore.kernel.org/all/20241112143056.565122-3-cvam0000@gmail.com/
v4->v5:
- Remove unnecessary pass messages.
- Remove unnecessary use of KSFT_SKIP.
- Add appropriate use of ksft_exit_fail_msg.
v4 v1: https://lore.kernel.org/all/8db9feab-0600-440b-b4b2-042695a100b5@linuxfoundation.org/
v4 v2: https://lore.kernel.org/all/63d5e3bb-9817-4a34-98fe-823a9cac7c16@linuxfoundation.org/
v3->v4:
- Start a patchset
- Split patch into smaller patches to make it easy to review.
Patch1 Replace 'ksft_test_result_skip' with 'KSFT_SKIP' during root run check.
Patch2 Replace 'ksft_test_result_fail' with 'KSFT_SKIP' where fail does not make sense,
or failure could be due to not unsupported APIs with appropriate warnings.
v3: https://lore.kernel.org/all/20241028185756.111832-1-cvam0000@gmail.com/
v2->v3:
- Remove extra ksft_set_plan()
- Remove function for unshare()
- Fix the comment style
v2: https://lore.kernel.org/all/20241026191621.2860376-1-cvam0000@gmail.com/
v1->v2:
- Make the commit message more clear.
v1: https://lore.kernel.org/all/20241024200228.1075840-1-cvam0000@gmail.com/T/#u
thanks
Shivam
Shivam Chaudhary (2):
selftests: tmpfs: Add Test-skip if not run as root
selftests: tmpfs: Add kselftest support to tmpfs
.../selftests/tmpfs/bug-link-o-tmpfile.c | 40 ++++++++++++-------
1 file changed, 26 insertions(+), 14 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v7 1/2] selftests: tmpfs: Add Test-skip if not run as root
2025-01-02 10:04 [PATCH v7 0/2] selftests: tmpfs: Add kselftest support Shivam Chaudhary
@ 2025-01-02 10:04 ` Shivam Chaudhary
2025-01-02 21:54 ` Shuah Khan
2025-01-02 10:04 ` [PATCH v7 2/2] selftests: tmpfs: Add kselftest support to tmpfs Shivam Chaudhary
1 sibling, 1 reply; 7+ messages in thread
From: Shivam Chaudhary @ 2025-01-02 10:04 UTC (permalink / raw)
To: shuah; +Cc: linux-kselftest, linux-kernel, Shivam Chaudhary
Add 'ksft_exit_skip()', if not run as root, with an appropriate
Warning.
Add 'ksft_print_header()' and 'ksft_set_plan()' to structure test
outputs more effectively.
Test logs:
Before Change:
- Without root
error: unshare, errno 1
- With root
No, output
After change:
- Without root
TAP version 13
1..1
ok 2 # SKIP This test needs root to run!
Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0
- With root
TAP version 13
1..1
Signed-off-by: Shivam Chaudhary <cvam0000@gmail.com>
---
tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c b/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
index b5c3ddb90942..657b64857e82 100644
--- a/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
+++ b/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
@@ -23,10 +23,22 @@
#include <sys/mount.h>
#include <unistd.h>
+#include "../kselftest.h"
+
int main(void)
{
int fd;
+ // Setting up kselftest framework
+ ksft_print_header();
+ ksft_set_plan(1);
+
+ // Check if test is run as root
+ if (geteuid()) {
+ ksft_exit_skip("This test needs root to run!\n");
+ return 1;
+ }
+
if (unshare(CLONE_NEWNS) == -1) {
if (errno == ENOSYS || errno == EPERM) {
fprintf(stderr, "error: unshare, errno %d\n", errno);
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v7 2/2] selftests: tmpfs: Add kselftest support to tmpfs
2025-01-02 10:04 [PATCH v7 0/2] selftests: tmpfs: Add kselftest support Shivam Chaudhary
2025-01-02 10:04 ` [PATCH v7 1/2] selftests: tmpfs: Add Test-skip if not run as root Shivam Chaudhary
@ 2025-01-02 10:04 ` Shivam Chaudhary
2025-01-02 21:10 ` Shuah Khan
1 sibling, 1 reply; 7+ messages in thread
From: Shivam Chaudhary @ 2025-01-02 10:04 UTC (permalink / raw)
To: shuah; +Cc: linux-kselftest, linux-kernel, Shivam Chaudhary
Replace direct error handling with 'ksft_test_result_*'
macros for better reporting.
Test logs:
Before change:
- Without root
error: unshare, errno 1
- With root
No, output
After change:
- Without root
TAP version 13
1..1
ok 2 # SKIP This test needs root to run!
Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0
- With root
TAP version 13
1..1
ok 1 Test : Success
Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
Signed-off-by: Shivam Chaudhary <cvam0000@gmail.com>
---
.../selftests/tmpfs/bug-link-o-tmpfile.c | 28 +++++++++----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c b/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
index 657b64857e82..290f11a81d2b 100644
--- a/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
+++ b/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
@@ -41,39 +41,39 @@ int main(void)
if (unshare(CLONE_NEWNS) == -1) {
if (errno == ENOSYS || errno == EPERM) {
- fprintf(stderr, "error: unshare, errno %d\n", errno);
- return 4;
+ ksft_exit_skip("unshare() error: unshare, errno %d\n", errno);
+ } else {
+ ksft_exit_fail_msg("unshare() error: unshare, errno %d\n", errno);
}
- fprintf(stderr, "error: unshare, errno %d\n", errno);
- return 1;
}
+
if (mount(NULL, "/", NULL, MS_PRIVATE|MS_REC, NULL) == -1) {
- fprintf(stderr, "error: mount '/', errno %d\n", errno);
- return 1;
+ ksft_exit_fail_msg("mount() error: Root filesystem private mount: Fail %d\n", errno);
}
/* Our heroes: 1 root inode, 1 O_TMPFILE inode, 1 permanent inode. */
if (mount(NULL, "/tmp", "tmpfs", 0, "nr_inodes=3") == -1) {
- fprintf(stderr, "error: mount tmpfs, errno %d\n", errno);
- return 1;
+ ksft_exit_fail_msg("mount() error: Mounting tmpfs on /tmp: Fail %d\n", errno);
}
fd = openat(AT_FDCWD, "/tmp", O_WRONLY|O_TMPFILE, 0600);
if (fd == -1) {
- fprintf(stderr, "error: open 1, errno %d\n", errno);
- return 1;
+ ksft_exit_fail_msg("openat() error: Open first temporary file: Fail %d\n", errno);
}
+
if (linkat(fd, "", AT_FDCWD, "/tmp/1", AT_EMPTY_PATH) == -1) {
- fprintf(stderr, "error: linkat, errno %d\n", errno);
- return 1;
+ ksft_exit_fail_msg("linkat() error: Linking the temporary file: Fail %d\n", errno);
+ /* Ensure fd is closed on failure */
+ close(fd);
}
close(fd);
fd = openat(AT_FDCWD, "/tmp", O_WRONLY|O_TMPFILE, 0600);
if (fd == -1) {
- fprintf(stderr, "error: open 2, errno %d\n", errno);
- return 1;
+ ksft_exit_fail_msg("openat() error: Opening the second temporary file: Fail %d\n", errno);
}
+ ksft_test_result_pass("Test : Success\n");
+ ksft_exit_pass();
return 0;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v7 2/2] selftests: tmpfs: Add kselftest support to tmpfs
2025-01-02 10:04 ` [PATCH v7 2/2] selftests: tmpfs: Add kselftest support to tmpfs Shivam Chaudhary
@ 2025-01-02 21:10 ` Shuah Khan
0 siblings, 0 replies; 7+ messages in thread
From: Shuah Khan @ 2025-01-02 21:10 UTC (permalink / raw)
To: Shivam Chaudhary, shuah; +Cc: linux-kselftest, linux-kernel, Shuah Khan
On 1/2/25 03:04, Shivam Chaudhary wrote:
> Replace direct error handling with 'ksft_test_result_*'
> macros for better reporting.
>
> Test logs:
>
> Before change:
> - Without root
> error: unshare, errno 1
>
> - With root
> No, output
>
> After change:
> - Without root
> TAP version 13
> 1..1
> ok 2 # SKIP This test needs root to run!
> Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0
>
> - With root
> TAP version 13
> 1..1
> ok 1 Test : Success
> Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
>
> Signed-off-by: Shivam Chaudhary <cvam0000@gmail.com>
> ---
> .../selftests/tmpfs/bug-link-o-tmpfile.c | 28 +++++++++----------
> 1 file changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c b/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
> index 657b64857e82..290f11a81d2b 100644
> --- a/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
> +++ b/tools/testing/selftests/tmpfs/bug-link-o-tmpfile.c
> @@ -41,39 +41,39 @@ int main(void)
>
> if (unshare(CLONE_NEWNS) == -1) {
> if (errno == ENOSYS || errno == EPERM) {
> - fprintf(stderr, "error: unshare, errno %d\n", errno);
> - return 4;
> + ksft_exit_skip("unshare() error: unshare, errno %d\n", errno);
> + } else {
> + ksft_exit_fail_msg("unshare() error: unshare, errno %d\n", errno);
> }
> - fprintf(stderr, "error: unshare, errno %d\n", errno);
> - return 1;
> }
> +
> if (mount(NULL, "/", NULL, MS_PRIVATE|MS_REC, NULL) == -1) {
> - fprintf(stderr, "error: mount '/', errno %d\n", errno);
> - return 1;
> + ksft_exit_fail_msg("mount() error: Root filesystem private mount: Fail %d\n", errno);
> }
>
> /* Our heroes: 1 root inode, 1 O_TMPFILE inode, 1 permanent inode. */
> if (mount(NULL, "/tmp", "tmpfs", 0, "nr_inodes=3") == -1) {
> - fprintf(stderr, "error: mount tmpfs, errno %d\n", errno);
> - return 1;
> + ksft_exit_fail_msg("mount() error: Mounting tmpfs on /tmp: Fail %d\n", errno);
> }
>
> fd = openat(AT_FDCWD, "/tmp", O_WRONLY|O_TMPFILE, 0600);
> if (fd == -1) {
> - fprintf(stderr, "error: open 1, errno %d\n", errno);
> - return 1;
> + ksft_exit_fail_msg("openat() error: Open first temporary file: Fail %d\n", errno);
> }
> +
> if (linkat(fd, "", AT_FDCWD, "/tmp/1", AT_EMPTY_PATH) == -1) {
> - fprintf(stderr, "error: linkat, errno %d\n", errno);
> - return 1;
> + ksft_exit_fail_msg("linkat() error: Linking the temporary file: Fail %d\n", errno);
> + /* Ensure fd is closed on failure */
> + close(fd);
> }
> close(fd);
>
> fd = openat(AT_FDCWD, "/tmp", O_WRONLY|O_TMPFILE, 0600);
> if (fd == -1) {
> - fprintf(stderr, "error: open 2, errno %d\n", errno);
> - return 1;
> + ksft_exit_fail_msg("openat() error: Opening the second temporary file: Fail %d\n", errno);
> }
>
> + ksft_test_result_pass("Test : Success\n");
There is no need to print success here.
> + ksft_exit_pass();
> return 0;
> }
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 1/2] selftests: tmpfs: Add Test-skip if not run as root
2025-01-02 10:04 ` [PATCH v7 1/2] selftests: tmpfs: Add Test-skip if not run as root Shivam Chaudhary
@ 2025-01-02 21:54 ` Shuah Khan
2025-01-03 16:36 ` Shivam Chaudhary
0 siblings, 1 reply; 7+ messages in thread
From: Shuah Khan @ 2025-01-02 21:54 UTC (permalink / raw)
To: Shivam Chaudhary, shuah; +Cc: linux-kselftest, linux-kernel, Shuah Khan
On 1/2/25 03:04, Shivam Chaudhary wrote:
> Add 'ksft_exit_skip()', if not run as root, with an appropriate
> Warning.
>
> Add 'ksft_print_header()' and 'ksft_set_plan()' to structure test
> outputs more effectively.
>
> Test logs:
>
> Before Change:
> - Without root
> error: unshare, errno 1
>
> - With root
> No, output
>
> After change:
>
> - Without root
> TAP version 13
> 1..1
> ok 2 # SKIP This test needs root to run!
> Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0
>
> - With root
> TAP version 13
> 1..1
How are you running this test to see the before ad after
results?
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 1/2] selftests: tmpfs: Add Test-skip if not run as root
2025-01-02 21:54 ` Shuah Khan
@ 2025-01-03 16:36 ` Shivam Chaudhary
2025-01-03 16:52 ` Shuah Khan
0 siblings, 1 reply; 7+ messages in thread
From: Shivam Chaudhary @ 2025-01-03 16:36 UTC (permalink / raw)
To: Shuah Khan, shuah; +Cc: linux-kselftest, linux-kernel
On 03/01/25 3:24 AM, Shuah Khan wrote:
> On 1/2/25 03:04, Shivam Chaudhary wrote:
>> Add 'ksft_exit_skip()', if not run as root, with an appropriate
>> Warning.
>>
>> Add 'ksft_print_header()' and 'ksft_set_plan()' to structure test
>> outputs more effectively.
>>
>> Test logs:
>>
>> Before Change:
>> - Without root
>> error: unshare, errno 1
>>
>> - With root
>> No, output
>>
>> After change:
>>
>> - Without root
>> TAP version 13
>> 1..1
>> ok 2 # SKIP This test needs root to run!
>> Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0
>>
>> - With root
>> TAP version 13
>> 1..1
>
> How are you running this test to see the before ad after
> results?
I'm doing the unit test, meaning, I'm building the test separatley and
running it
to ensure the the code works as expected.
thanks
--Shivam
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 1/2] selftests: tmpfs: Add Test-skip if not run as root
2025-01-03 16:36 ` Shivam Chaudhary
@ 2025-01-03 16:52 ` Shuah Khan
0 siblings, 0 replies; 7+ messages in thread
From: Shuah Khan @ 2025-01-03 16:52 UTC (permalink / raw)
To: Shivam Chaudhary, shuah; +Cc: linux-kselftest, linux-kernel, Shuah Khan
On 1/3/25 09:36, Shivam Chaudhary wrote:
>
> On 03/01/25 3:24 AM, Shuah Khan wrote:
>> On 1/2/25 03:04, Shivam Chaudhary wrote:
>>> Add 'ksft_exit_skip()', if not run as root, with an appropriate
>>> Warning.
>>>
>>> Add 'ksft_print_header()' and 'ksft_set_plan()' to structure test
>>> outputs more effectively.
>>>
>>> Test logs:
>>>
>>> Before Change:
>>> - Without root
>>> error: unshare, errno 1
>>>
>>> - With root
>>> No, output
>>>
>>> After change:
>>>
>>> - Without root
>>> TAP version 13
>>> 1..1
>>> ok 2 # SKIP This test needs root to run!
>>> Totals: pass:0 fail:0 xfail:0 xpass:0 skip:1 error:0
>>>
>>> - With root
>>> TAP version 13
>>> 1..1
>>
>> How are you running this test to see the before ad after
>> results?
>
> I'm doing the unit test, meaning, I'm building the test separatley and running it
>
> to ensure the the code works as expected.
>
When you run "make kselftest TARGETS=tmpfs", do you see duplicate
ktap output?
Rum the command and send me the output.
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-01-03 16:52 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-02 10:04 [PATCH v7 0/2] selftests: tmpfs: Add kselftest support Shivam Chaudhary
2025-01-02 10:04 ` [PATCH v7 1/2] selftests: tmpfs: Add Test-skip if not run as root Shivam Chaudhary
2025-01-02 21:54 ` Shuah Khan
2025-01-03 16:36 ` Shivam Chaudhary
2025-01-03 16:52 ` Shuah Khan
2025-01-02 10:04 ` [PATCH v7 2/2] selftests: tmpfs: Add kselftest support to tmpfs Shivam Chaudhary
2025-01-02 21:10 ` Shuah Khan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox