[LTP] [PATCH 1/2] tst_test: Add $LTP_SINGLE_ITERATION to limit variant
Petr Vorel
pvorel@suse.cz
Thu Apr 16 09:01:28 CEST 2026
Hi,
> Allow to test only single struct tst_test->test_variants.
> This is a similar feature to $LTP_SINGLE_FS_TYPE.
> Value is ignored when test does not specify test_variants.
> When value is higher than test_variants value lastest variant is used.
Gently ping for this patch. IMHO it can be useful in some corner case debugging.
Kind regards,
Petr
> # LTP_SINGLE_VARIANT=0 LTP_SINGLE_FS_TYPE=ext4 ./getdents02
> ..
> tst_test.c:1918: TINFO: WARNING: testing only variant 0 of 3
> tst_supported_fs_types.c:161: TINFO: WARNING: testing only ext4
> tst_supported_fs_types.c:97: TINFO: Kernel supports ext4
> tst_supported_fs_types.c:62: TINFO: mkfs.ext4 does exist
> tst_test.c:1834: TINFO: === Testing on ext4 ===
> tst_test.c:1171: TINFO: Formatting /dev/loop0 with ext4 opts='' extra opts=''
> mke2fs 1.47.2 (1-Jan-2025)
> tst_test.c:1183: TINFO: Mounting /dev/loop0 to /tmp/LTP_getx2HrGH/mntpoint fstyp=ext4 flags=0
> getdents.h:148: TINFO: Testing the SYS_getdents syscall
> tst_buffers.c:57: TINFO: Test is using guarded buffers
> getdents02.c:77: TPASS: fd=-5 dirp=0x7f0587803ee9 size=279 : EBADF (9)
> getdents02.c:77: TPASS: fd=3 dirp=0x5641617a31e8 size=1 : EINVAL (22)
> getdents02.c:77: TPASS: fd=4 dirp=0x7f0587803ee9 size=279 : ENOTDIR (20)
> getdents02.c:77: TPASS: fd=5 dirp=0x7f0587803ee9 size=279 : ENOENT (2)
> getdents02.c:77: TPASS: fd=3 dirp=0x7f0587802000 size=279 : EFAULT (14)
> # LTP_SINGLE_VARIANT=2 LTP_SINGLE_FS_TYPE=ext4 ./getdents02
> ...
> tst_test.c:1918: TINFO: WARNING: testing only variant 2 of 3
> tst_supported_fs_types.c:161: TINFO: WARNING: testing only ext4
> tst_supported_fs_types.c:97: TINFO: Kernel supports ext4
> tst_supported_fs_types.c:62: TINFO: mkfs.ext4 does exist
> tst_test.c:1834: TINFO: === Testing on ext4 ===
> tst_test.c:1171: TINFO: Formatting /dev/loop0 with ext4 opts='' extra opts=''
> mke2fs 1.47.2 (1-Jan-2025)
> tst_test.c:1183: TINFO: Mounting /dev/loop0 to /tmp/LTP_getWtBnGE/mntpoint fstyp=ext4 flags=0
> getdents.h:157: TCONF: libc getdents() is not implemented
> # LTP_SINGLE_VARIANT=99 LTP_SINGLE_FS_TYPE=ext4 ./getdents02 # higher value is max value
> tst_test.c:1918: TINFO: WARNING: testing only variant 3 of 3
> tst_supported_fs_types.c:161: TINFO: WARNING: testing only ext4
> tst_supported_fs_types.c:97: TINFO: Kernel supports ext4
> tst_supported_fs_types.c:62: TINFO: mkfs.ext4 does exist
> tst_test.c:1834: TINFO: === Testing on ext4 ===
> tst_test.c:1171: TINFO: Formatting /dev/loop0 with ext4 opts='' extra opts=''
> mke2fs 1.47.2 (1-Jan-2025)
> tst_test.c:1183: TINFO: Mounting /dev/loop0 to /tmp/LTP_get1fX70n/mntpoint fstyp=ext4 flags=0
> getdents.h:162: TINFO: Testing libc getdents64()
> tst_buffers.c:57: TINFO: Test is using guarded buffers
> getdents02.c:77: TPASS: fd=-5 dirp=0x7fcf140f3ee8 size=280 : EBADF (9)
> getdents02.c:77: TPASS: fd=3 dirp=0x55a76e4531e8 size=1 : EINVAL (22)
> getdents02.c:77: TPASS: fd=4 dirp=0x7fcf140f3ee8 size=280 : ENOTDIR (20)
> getdents02.c:77: TPASS: fd=5 dirp=0x7fcf140f3ee8 size=280 : ENOENT (2)
> getdents02.c:77: TPASS: fd=3 dirp=0x7fcf140f2000 size=280 : EFAULT (14)
> Signed-off-by: Petr Vorel <pvorel@suse.cz>
> ---
> Hi all,
> Andrea wanted to run only single variant.
> Kind regards,
> Petr
> lib/tst_test.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
> diff --git a/lib/tst_test.c b/lib/tst_test.c
> index 3823ea109e..6edc310209 100644
> --- a/lib/tst_test.c
> +++ b/lib/tst_test.c
> @@ -581,6 +581,7 @@ static void print_help(void)
> fprintf(stderr, "LTP_DEV Path to the block device to be used (for .needs_device)\n");
> fprintf(stderr, "LTP_DEV_FS_TYPE Filesystem used for testing (default: %s)\n", DEFAULT_FS_TYPE);
> fprintf(stderr, "LTP_SINGLE_FS_TYPE Testing only - specifies filesystem instead all supported (for .all_filesystems)\n");
> + fprintf(stderr, "LTP_SINGLE_VARIANT Testing only - specifies tst_variant to be run\n");
> fprintf(stderr, "LTP_TIMEOUT_MUL Timeout multiplier (must be a number >=1)\n");
> fprintf(stderr, "LTP_RUNTIME_MUL Runtime multiplier (must be a number >=1)\n");
> fprintf(stderr, "LTP_VIRT_OVERRIDE Overrides virtual machine detection (values: \"\"|kvm|microsoft|xen|zvm)\n");
> @@ -1887,6 +1888,7 @@ void tst_run_tcases(int argc, char *argv[], struct tst_test *self)
> int ret = 0;
> unsigned int test_variants = 1;
> struct utsname uval;
> + const char *only_variant;
> lib_pid = getpid();
> tst_test = self;
> @@ -1899,7 +1901,6 @@ void tst_run_tcases(int argc, char *argv[], struct tst_test *self)
> tst_res(TINFO, "LTP version: "LTP_VERSION);
> -
> uname(&uval);
> tst_res(TINFO, "Tested kernel: %s %s %s", uval.release, uval.version, uval.machine);
> @@ -1908,10 +1909,20 @@ void tst_run_tcases(int argc, char *argv[], struct tst_test *self)
> set_overall_timeout();
> - if (tst_test->test_variants)
> + if (tst_test->test_variants) {
> test_variants = tst_test->test_variants;
> + only_variant = getenv("LTP_SINGLE_VARIANT");
> + if (only_variant && only_variant[0] != '\0') {
> + tst_variant = MIN(SAFE_STRTOL((char *)only_variant, 0, INT_MAX),
> + test_variants - 1);
> + tst_res(TINFO, "WARNING: testing only variant %d of %d",
> + tst_variant, test_variants - 1);
> + test_variants = tst_variant + 1;
> + }
> + }
> +
> + for (; tst_variant < test_variants; tst_variant++) {
> - for (tst_variant = 0; tst_variant < test_variants; tst_variant++) {
> if (tst_test->all_filesystems || count_fs_descs() > 1)
> ret |= run_tcases_per_fs();
> else
More information about the ltp
mailing list