Re: [PATCH v6 1/2] selftests: vm: bring common functions to a new file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 21, 2022 at 5:06 AM Muhammad Usama Anjum
<usama.anjum@xxxxxxxxxxxxx> wrote:
>
> On 9/9/22 8:06 AM, Nico Pache wrote:
> >
> >
> > On 4/20/22 04:40, Muhammad Usama Anjum wrote:
> >> Bring common functions to a new file while keeping code as much same as
> >> possible. These functions can be used in the new tests. This helps in
> >> avoiding code duplication.
> >
> > This commit breaks a pattern in the way tests are run in the current scheme.
> > Before this commit the only executable (or TEST_PROGS) that was executed was
> > run_vmselftests.sh. Now both madv_populate and split_huge_page_test are being
> > run as well.
> >>
> >> Signed-off-by: Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx>
> >> ---
> >> Changes in V6:
> >> - Correct header files inclusion
> >>
> >> Changes in V5:
> >> Keep moved code as same as possible
> >> - Updated macros names
> >> - Removed macro used to show bit number of dirty bit, added a comment
> >>   instead
> >> - Corrected indentation
> >> ---
> >>  tools/testing/selftests/vm/Makefile           |   7 +-
> >>  tools/testing/selftests/vm/madv_populate.c    |  34 +-----
> >>  .../selftests/vm/split_huge_page_test.c       |  79 +------------
> >>  tools/testing/selftests/vm/vm_util.c          | 108 ++++++++++++++++++
> >>  tools/testing/selftests/vm/vm_util.h          |   9 ++
> >>  5 files changed, 124 insertions(+), 113 deletions(-)
> >>  create mode 100644 tools/testing/selftests/vm/vm_util.c
> >>  create mode 100644 tools/testing/selftests/vm/vm_util.h
> >>
> >> diff --git a/tools/testing/selftests/vm/Makefile b/tools/testing/selftests/vm/Makefile
> >> index 5e43f072f5b76..4e68edb26d6b6 100644
> >> --- a/tools/testing/selftests/vm/Makefile
> >> +++ b/tools/testing/selftests/vm/Makefile
> >> @@ -34,7 +34,7 @@ TEST_GEN_FILES += hugepage-mremap
> >>  TEST_GEN_FILES += hugepage-shm
> >>  TEST_GEN_FILES += hugepage-vmemmap
> >>  TEST_GEN_FILES += khugepaged
> >> -TEST_GEN_FILES += madv_populate
> >> +TEST_GEN_PROGS = madv_populate
> > madv_populate is already being run in run_vmselftests.sh
> >>  TEST_GEN_FILES += map_fixed_noreplace
> >>  TEST_GEN_FILES += map_hugetlb
> >>  TEST_GEN_FILES += map_populate
> >> @@ -47,7 +47,7 @@ TEST_GEN_FILES += on-fault-limit
> >>  TEST_GEN_FILES += thuge-gen
> >>  TEST_GEN_FILES += transhuge-stress
> >>  TEST_GEN_FILES += userfaultfd
> >> -TEST_GEN_FILES += split_huge_page_test
> >> +TEST_GEN_PROGS += split_huge_page_test
> >>  TEST_GEN_FILES += ksm_tests
> >>
> >>  ifeq ($(MACHINE),x86_64)
> >> @@ -91,6 +91,9 @@ TEST_FILES := test_vmalloc.sh
> >>  KSFT_KHDR_INSTALL := 1
> >>  include ../lib.mk
> >>
> >> +$(OUTPUT)/madv_populate: vm_util.c
> >> +$(OUTPUT)/split_huge_page_test: vm_util.c
> > Not sure what this does but if we add a run entry for split_huge_page_test in
> > run_vmselftests.sh we wont really need this patch.
> >
> > I'm not sure the reduction in code size is worth the change in run behavior.
> >
> > Unless I'm missing something I suggest we revert this patch and add a run entry
> > for split_huge_page_test in run_vmselftests.sh. I can do this if no one objects.
> The run behavior isn't being changed here. Only the build behavior is
> being changed as we want to keep the common code in one file. You can
> add the run entry as required. I don't know why do you think the
> Makefile has changed the run behavior.

Before your commit running
    `make TARGETS=vm; make TARGETS=vm run_tests`
had the following run behavior:
    - The only thing executed via the run_tests wrapper is run_vmtests.sh
    - TAP output is 1/1:
        TAP version 13
        1..1
        # selftests: vm: run_vmtests.sh
        # arm64 ia64 mips64 parisc64 ppc64 ppc64le riscv64 s390x sh64
sparc64 x86_64
        # -----------------------
        # running ./hugepage-mmap
        # -----------------------
        ....

After your commit:
    - Multiple executables (madv_populate, soft-dirty,
split_huge_page_test, run_vmtests.sh) are defined and ran:
         # selftests: vm: madv_populate
         not ok 1 selftests: vm: madv_populate # exit=1
         # selftests: vm: soft-dirty
         ok 2 selftests: vm: soft-dirty
         # selftests: vm: split_huge_page_test
         ok 3 selftests: vm: split_huge_page_test
         # selftests: vm: run_vmtests.sh
         ok 4 selftests: vm: run_vmtests.sh # SKIP

I'm not saying utilizing the TEST_GEN_PROG variable is incorrect, I'm
just pointing out that we have a sudden change in run behavior via the
run_test wrapper. I personally think the TEST_GEN_PROG output is
cleaner, but having two different ways of outputting results may be
harder/confusing to parser. Additionally there is still the issue that
madv_populate is being run twice for no reason.

Cheers,
-- Nico

>
> >
> > Cheers,
> > -- Nico
> >
>
> --
> Muhammad Usama Anjum
>





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux