public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: John Hubbard <jhubbard@nvidia.com>
To: David Hildenbrand <david@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Xu <peterx@redhat.com>, Shuah Khan <shuah@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>, <linux-mm@kvack.org>,
	<linux-kselftest@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 05/12] selftests/mm: fix invocation of tests that are run via shell scripts
Date: Fri, 2 Jun 2023 13:38:21 -0700	[thread overview]
Message-ID: <6f845148-e180-822d-a54f-e2bb844d54f8@nvidia.com> (raw)
In-Reply-To: <ead7d0db-6104-1d62-b3d0-f9ebb767af4d@redhat.com>

On 6/2/23 03:05, David Hildenbrand wrote:
> On 02.06.23 03:33, John Hubbard wrote:
>> We cannot depend upon git to reliably retain the executable bit on shell
>> scripts, or so I was told several years ago while working on this same
>> run_vmtests.sh script. And sure enough, things such as test_hmm.sh are
>> lately failing to run, due to lacking execute permissions.
>>
>> A nice clean way to fix this would have been to use TEST_PROGS instead
>> of TEST_FILES for the .sh scripts here. That tells the selftest
>> framework to run these (and emit a warning if the files are not
>> executable, but still run them anyway).

Actually, for the record (and I'll update this in v2), the above is
inaccurate, because run_vmtests.sh aspires to be the only TEST_PROGS
item here. And I see that the framework does already work if-and-only-if
invoked via Make, as in "make run_tests".

However,

a) Many people naturally expect to run test scripts without
(unnecessarily!) involving Make, and

b) Based on some experience in building and using various test
frameworks over many years, I'd claim that it's better to use shell
scripts to collect and manage tests and test scripts, rather than
involving Make. Make is a limited, specialized language and is better at
handling builds and dependencies.

So the "make run_tests" is a convenience, but it should not be the only
way to launch a test run. So we still want to fix this up.

>>
>> Unfortunately, run_vmtests.sh has its own run_test() routine, which does
>> *not* do the right thing for shell scripts.
>>
>> Fix this by explicitly adding "bash" to each of the shell script
>> invocations. Leave fixing the overall approach to another day.
>>
>> Signed-off-by: John Hubbard <jhubbard@nvidia.com>
>> ---
>>   tools/testing/selftests/mm/run_vmtests.sh | 6 +++---
>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/tools/testing/selftests/mm/run_vmtests.sh b/tools/testing/selftests/mm/run_vmtests.sh
>> index 4893eb60d96d..8f81432e4bac 100644
>> --- a/tools/testing/selftests/mm/run_vmtests.sh
>> +++ b/tools/testing/selftests/mm/run_vmtests.sh
>> @@ -242,18 +242,18 @@ if [ $VADDR64 -ne 0 ]; then
>>       if [ "$ARCH" == "$ARCH_ARM64" ]; then
>>           echo 6 > /proc/sys/vm/nr_hugepages
>>       fi
>> -    CATEGORY="hugevm" run_test ./va_high_addr_switch.sh
>> +    CATEGORY="hugevm" run_test bash ./va_high_addr_switch.sh
>>       if [ "$ARCH" == "$ARCH_ARM64" ]; then
>>           echo $prev_nr_hugepages > /proc/sys/vm/nr_hugepages
>>       fi
>>   fi # VADDR64
>>   # vmalloc stability smoke test
>> -CATEGORY="vmalloc" run_test ./test_vmalloc.sh smoke
>> +CATEGORY="vmalloc" run_test bash ./test_vmalloc.sh smoke
>>   CATEGORY="mremap" run_test ./mremap_dontunmap
>> -CATEGORY="hmm" run_test ./test_hmm.sh smoke
>> +CATEGORY="hmm" run_test bash ./test_hmm.sh smoke
>>   # MADV_POPULATE_READ and MADV_POPULATE_WRITE tests
>>   CATEGORY="madv_populate" run_test ./madv_populate
> 
> Sounds hacky, but if it gets the job done
> 

Yes. It's also hacky that we can't just invoke shell scripts like normal
programs. This limitation hurts my sense of "things should be more
perfect!". :)

> Acked-by: David Hildenbrand <david@redhat.com>
> 

Thanks for the ack.

-- 
John Hubbard
NVIDIA


  reply	other threads:[~2023-06-02 20:38 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-02  1:33 [PATCH 00/12] A minor flurry of selftest/mm fixes John Hubbard
2023-06-02  1:33 ` [PATCH 01/12] selftests/mm: fix uffd-stress unused function warning John Hubbard
2023-06-02  9:58   ` David Hildenbrand
2023-06-02 15:25   ` Peter Xu
2023-06-02  1:33 ` [PATCH 02/12] selftests/mm: fix unused variable warning in hugetlb-madvise.c John Hubbard
2023-06-02 10:01   ` David Hildenbrand
2023-06-02 18:38     ` John Hubbard
2023-06-02  1:33 ` [PATCH 03/12] selftests/mm: fix unused variable warning in migration.c John Hubbard
2023-06-02 10:02   ` David Hildenbrand
2023-06-02 18:39     ` John Hubbard
2023-06-02  1:33 ` [PATCH 04/12] selftests/mm: fix a char* assignment in mlock2-tests.c John Hubbard
2023-06-02 10:04   ` David Hildenbrand
2023-06-02 15:24     ` Peter Xu
2023-06-02 18:52       ` John Hubbard
2023-06-05 15:38         ` Peter Xu
2023-06-05 18:45           ` John Hubbard
2023-06-02  1:33 ` [PATCH 05/12] selftests/mm: fix invocation of tests that are run via shell scripts John Hubbard
2023-06-02 10:05   ` David Hildenbrand
2023-06-02 20:38     ` John Hubbard [this message]
2023-06-02 15:34   ` Peter Xu
2023-06-02 19:19     ` John Hubbard
2023-06-02 21:36       ` Peter Xu
2023-06-02 21:46         ` John Hubbard
2023-06-02  1:33 ` [PATCH 06/12] selftests/mm: .gitignore: add mkdirty, va_high_addr_switch John Hubbard
2023-06-02 10:06   ` David Hildenbrand
2023-06-02  1:33 ` [PATCH 07/12] selftests/mm: set -Wno-format-security to avoid uffd build warnings John Hubbard
2023-06-02 10:15   ` David Hildenbrand
2023-06-02 21:22     ` John Hubbard
2023-06-02  1:33 ` [PATCH 08/12] selftests/mm: fix a "possibly uninitialized" warning in pkey-x86.h John Hubbard
2023-06-02 10:16   ` David Hildenbrand
2023-06-02  1:33 ` [PATCH 09/12] selftests/mm: move psize(), pshift() into vm_utils.c John Hubbard
2023-06-02 10:19   ` David Hildenbrand
2023-06-02 21:58     ` John Hubbard
2023-06-02  1:33 ` [PATCH 10/12] selftests/mm: move uffd* routines from vm_util.c to uffd-common.c John Hubbard
2023-06-02 15:59   ` Peter Xu
2023-06-02 22:11     ` John Hubbard
2023-06-02 22:38       ` Peter Xu
2023-06-02 22:52         ` John Hubbard
2023-06-03  0:43           ` John Hubbard
2023-06-03  1:18             ` Peter Xu
2023-06-03  1:39               ` John Hubbard
2023-06-02  1:33 ` [PATCH 11/12] selftests/mm: fix missing UFFDIO_CONTINUE_MODE_WP and similar build failures John Hubbard
2023-06-02 10:23   ` David Hildenbrand
2023-06-02 22:20     ` John Hubbard
2023-06-03  8:27       ` David Hildenbrand
2023-06-03 23:48         ` John Hubbard
2023-06-02 16:25   ` Muhammad Usama Anjum
2023-06-02 22:24     ` John Hubbard
2023-06-02  1:33 ` [PATCH 12/12] selftests/mm: fix uffd-unit-tests.c build failure due to missing MADV_COLLAPSE John Hubbard
2023-06-02 10:23   ` David Hildenbrand
2023-06-02 16:34   ` Muhammad Usama Anjum
2023-06-02 22:26     ` John Hubbard
2023-06-02  9:32 ` [PATCH 00/12] A minor flurry of selftest/mm fixes David Hildenbrand
2023-06-02 17:51   ` John Hubbard

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=6f845148-e180-822d-a54f-e2bb844d54f8@nvidia.com \
    --to=jhubbard@nvidia.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=nathan@kernel.org \
    --cc=peterx@redhat.com \
    --cc=shuah@kernel.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