From: Shuah Khan <skhan@linuxfoundation.org>
To: Jeff Xu <jeffxu@chromium.org>, Mark Brown <broonie@kernel.org>
Cc: Muhammad Usama Anjum <usama.anjum@collabora.com>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
akpm@linux-foundation.org, linux-kselftest@vger.kernel.org,
linux-mm@kvack.org, linux-hardening@vger.kernel.org,
linux-kernel@vger.kernel.org, pedro.falcato@gmail.com,
willy@infradead.org, vbabka@suse.cz, Liam.Howlett@oracle.com,
rientjes@google.com, keescook@chromium.org,
Shuah Khan <skhan@linuxfoundation.org>
Subject: Re: [PATCH v3 4/5] selftests/mseal: add more tests for mmap
Date: Fri, 18 Oct 2024 14:30:09 -0600 [thread overview]
Message-ID: <59e6d89e-9b5b-4dd9-9c05-2acd0a51d3af@linuxfoundation.org> (raw)
In-Reply-To: <CABi2SkVF3OtRcq9cCgLh_hOjxRnWq0owypw++xodrEfm=dt_qA@mail.gmail.com>
On 10/18/24 13:32, Jeff Xu wrote:
> Hi Mark
>
> On Fri, Oct 18, 2024 at 11:37 AM Mark Brown <broonie@kernel.org> wrote:
>>
>> On Fri, Oct 18, 2024 at 11:06:20AM -0700, Jeff Xu wrote:
>>> On Fri, Oct 18, 2024 at 6:04 AM Mark Brown <broonie@kernel.org> wrote:
>>
>>>> The problem is that the macro name is confusing and not terribly
>>>> consistent with how the rest of the selftests work. The standard
>>>> kselftest result reporting is
>>
>>>> ksft_test_result(bool result, char *name_format, ...);
>>>>
>>>> so the result of the test is a boolean flag which is passed in. This
>>>> macro on the other hand sounds like a double negative so you have to
>>>> stop and think what the logic is, and it's not seen anywhere else so
>>>> nobody is going to be familiar with it. The main thing this is doing is
>>>> burying a return statement in there, that's a bit surprising too.
>>
>>> Thanks for explaining the problem, naming is hard. Do you have a
>>> suggestion on a better naming?
>>
>> Honestly I'd probably deal with this by refactoring such that the macro
>> isn't needed and the tests follow a pattern more like:
>>
>> if (ret != 0) {
>> ksft_print_msg("$ACTION failed with %d\n", ret);
>> return false;
>> }
>>
> So expanding the macro to actually code ?
> But this makes the meal_test quite large with lots of "if", and I
> would rather avoid that.
>
>
>> when they encouter a failure, the pattern I sketched in my earlier
>> message, or switch to kselftest_harness.h (like I say I don't know if
>> the fork()ing is an issue for these tests). If I had to have a macro
>> it'd probably be something like mseal_assert().
>>
> I can go with mseal_assert, the original macro is used by mseal_test
> itself, and only intended as such.
>
> If changing name to mseal_assert() is acceptable, this seems to be a
> minimum change and I'm happy with that.
>
>>>> I'll also note that these macros are resulting in broken kselftest
>>>> output, the name for a test has to be stable for automated systems to be
>>>> able to associate test results between runs but these print
>>
>> ....
>>
>>>> which includes the line number of the test in the name which is an
>>>> obvious problem, automated systems won't be able to tell that any two
>>>> failures are related to each other never mind the passing test. We
>>>> should report why things failed but it's better to do that with a
>>>> ksft_print_msg(), ideally one that's directly readable rather than
>>>> requiring someone to go into the source code and look it up.
>>
>>> I don't know what the issue you described is ? Are you saying that we
>>> are missing line numbers ? it is not. here is the sample of output:
>>
>> No, I'm saying that having the line numbers is a problem.
>>
>>> Failure in the second test case from last:
>>
>>> ok 105 test_munmap_free_multiple_ranges
>>> not ok 106 test_munmap_free_multiple_ranges_with_split: line:2573
>>> ok 107 test_munmap_free_multiple_ranges_with_split
>>
>> Test 106 here is called "test_munmap_free_multiple_ranges_with_split:
>> line:2573" which automated systems aren't going to be able to associate
>> with the passing "test_munmap_free_multiple_ranges_with_split", nor with
>> any failures that occur on any other lines in the function.
>>
> I see. That will happen when those tests are modified and line number
> changes. I could see reasoning for this argument, especially when
> those tests are flaky and get updated often.
>
> In practice, I hope any of those kernel self-test failures should get
> fixed immediately, or even better, run before dev submitting the patch
> that affects the mm area.
>
> Having line number does help dev to go to error directly, and I'm not
> against filling in the "action" field, but you might also agree with
> me, finding unique text for each error would require some decent
> amount of time, especially for large tests such as mseal_test.
>
>>> I would image the needs of something similar to FAIL_TEST_IF_FALSE is
>>> common in selftest writing:
>>
>>> 1> lightweight enough so dev can pick up quickly and adapt to existing
>>> tests, instead of rewriting everything from scratch.
>>> 2> assert like syntax
>>> 3> fail the current test case, but continue running the next test case
>>> 4> take care of reporting test failures.
>>
>> Honestly this just sounds and looks like kselftest_harness.h, it's
>> ASSERT_ and EXPECT_ macros sound exactly like what you're looking for
>> for asserts. The main gotchas with it are that it's not particularly
>> elegant for test cases which need to enumerate system features (which I
>> don't think is the case for mseal()?) and that it runs each test case in
>> a fork()ed child which can be inconvenient for some tests. The use of
>> fork() is because that makes the overall test program much more robust
>> against breakage in individual tests and allows things like per test
>> timeouts.
> OK, I didn't know that ASSERT_ and EXPECT_ were part of the test fixture.
>
> If I switch to test_fixture, e,g, using TEST(test_name)
>
> how do I pass the "seal" flag to it ?
Doesn't TH_LOG() work for you to pass arguments?
> e.g. how do I run the same test twice, first seal = true, and second seal=false.
>
> test_seal_mmap_shrink(false);
> test_seal_mmap_shrink(true);
>
> The example [1], isn't clear about that.
>
> https://www.kernel.org/doc/html/v4.19/dev-tools/kselftest.html#example
>
> Thanks
>
thanks,
-- Shuah
next prev parent reply other threads:[~2024-10-18 20:30 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-30 18:02 [PATCH v3 0/5] Increase mseal test coverage jeffxu
2024-08-30 18:02 ` [PATCH v3 1/5] selftests/mseal_test: Check vma_size, prot, error code jeffxu
2024-08-30 18:02 ` [PATCH v3 2/5] selftests/mseal: add sealed madvise type jeffxu
2024-08-30 18:02 ` [PATCH v3 3/5] selftests/mseal: munmap across multiple vma ranges jeffxu
2024-08-30 18:02 ` [PATCH v3 4/5] selftests/mseal: add more tests for mmap jeffxu
2024-08-30 18:43 ` Lorenzo Stoakes
2024-08-30 19:22 ` Lorenzo Stoakes
2024-08-30 23:57 ` Jeff Xu
2024-09-07 19:27 ` Lorenzo Stoakes
2024-09-08 21:35 ` Pedro Falcato
2024-09-08 21:56 ` Pedro Falcato
2024-09-13 23:00 ` Jeff Xu
2024-09-13 23:00 ` Jeff Xu
2024-09-13 22:50 ` Jeff Xu
2024-09-18 13:18 ` Mark Brown
2024-09-20 16:37 ` Jeff Xu
2024-10-17 18:14 ` Jeff Xu
2024-10-17 18:28 ` Lorenzo Stoakes
2024-10-17 18:47 ` Jeff Xu
2024-10-17 19:00 ` Lorenzo Stoakes
2024-10-17 19:49 ` Jeff Xu
2024-10-18 6:37 ` Lorenzo Stoakes
2024-10-18 18:01 ` Jeff Xu
2024-10-18 20:51 ` Lorenzo Stoakes
2024-10-18 13:04 ` Mark Brown
2024-10-18 18:06 ` Jeff Xu
2024-10-18 18:37 ` Mark Brown
2024-10-18 19:32 ` Jeff Xu
2024-10-18 19:52 ` Lorenzo Stoakes
2024-10-18 20:28 ` Shuah Khan
2024-10-18 20:30 ` Shuah Khan [this message]
2024-10-18 21:05 ` Mark Brown
2024-10-19 0:10 ` Jeff Xu
2024-10-21 14:59 ` Mark Brown
2024-08-30 18:02 ` [PATCH v3 5/5] selftests/mseal: add more tests for mremap jeffxu
2024-08-30 19:17 ` [PATCH v3 0/5] Increase mseal test coverage Lorenzo Stoakes
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=59e6d89e-9b5b-4dd9-9c05-2acd0a51d3af@linuxfoundation.org \
--to=skhan@linuxfoundation.org \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=broonie@kernel.org \
--cc=jeffxu@chromium.org \
--cc=keescook@chromium.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=pedro.falcato@gmail.com \
--cc=rientjes@google.com \
--cc=usama.anjum@collabora.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox