• Michael Ellerman's avatar
    selftests/powerpc: Install tests in sub-directories · dda32e37
    Michael Ellerman authored
    The sources for the powerpc selftests are arranged into sub-directories.
    However when the tests are built and installed, the sub-directories are
    squashed, losing the structure.
    
    For example, with the current code the result of installing the selftests is:
    
      $ tree tools/testing/selftests/kselftest_install
      tools/testing/selftests/kselftest_install
      ├── kselftest
      │   ├── ktap_helpers.sh
      │   ├── module.sh
      │   ├── prefix.pl
      │   └── runner.sh
      ├── kselftest-list.txt
      ├── powerpc
      │   ├── alignment_handler
      │   ├── attr_test
      │   ├── back_to_back_ebbs_test
      │   ├── bad_accesses
      │   ├── bhrb_filter_map_test
      │   ├── bhrb_no_crash_wo_pmu_test
      │   ├── blacklisted_events_test
      │   ├── cache_shape
      │   ├── close_clears_pmcc_test
      │   ├── context_switch
      │   ├── copy_first_unaligned
      ...
      │   ├── settings
      ...
      │   └── wild_bctr
      └── run_kselftest.sh
    
    All the powerpc tests are squashed into the single powerpc directory. In
    particular, note that there is a single `settings` file, even though
    there are multiple settings files in the powerpc selftest sources. One
    of the settings files ends up installed, depending on install order,
    even if they have different contents.
    
    Similarly if there were two tests with the same name in different
    sub-directories they would clobber each other.
    
    Fix it by replicating the directory structure of the source tree into
    the install directory. The result being for example:
    
      $ tree tools/testing/selftests/kselftest_install
      tools/testing/selftests/kselftest_install
      ├── kselftest
      │   ├── ktap_helpers.sh
      │   ├── module.sh
      │   ├── prefix.pl
      │   └── runner.sh
      ├── kselftest-list.txt
      ├── powerpc
      │   ├── alignment
      │   │   ├── alignment_handler
      │   │   └── copy_first_unaligned
      │   ├── benchmarks
      │   │   ├── context_switch
      │   │   ├── exec_target
      │   │   ├── fork
      │   │   ├── futex_bench
      │   │   ├── gettimeofday
      │   │   ├── mmap_bench
      │   │   ├── null_syscall
      │   │   └── settings
      ...
      │   ├── eeh
      │   │   ├── eeh-basic.sh
      │   │   ├── eeh-functions.sh
      │   │   └── settings
      ...
      │   └── vphn
      │       └── test-vphn
      └── run_kselftest.sh
    
    Note multiple settings files in different sub-directories.
    
    This change also has the effect of changing the names of the tests from
    the point of view of the kselftest runner. Before the tests are named
    eg:
    
      powerpc:copy_first_unaligned
      powerpc:cache_shape
      powerpc:reg_access_test
    
    After, the test collection names include the sub-directory:
    
      powerpc/alignment:copy_first_unaligned
      powerpc/cache_shape:cache_shape
      powerpc/pmu/ebb:reg_access_test
    
    That means whereas previously all powerpc tests could be run with:
    
      $ ./run_kselftest.sh -c powerpc
    
    After the change it's necessary to pass a regex that matches all powerpc
    entries, eg:
    
      $ ./run_kselftest.sh -c "powerpc.*"
    
    The latter form also works before and after the change.
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240422133453.1793988-2-mpe@ellerman.id.au
    dda32e37
Makefile 1.56 KB