mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
lib/test_vmalloc.c: introduce xfail for failing tests
The test align_shift_alloc_test is expected to fail. Reporting the test as fail confuses to be a genuine failure. Introduce widely used xfail sematics to address the issue. Note: a warn_alloc dump similar to below is still expected: Call Trace: <TASK> dump_stack_lvl+0x64/0x80 warn_alloc+0x137/0x1b0 ? __get_vm_area_node+0x134/0x140 Snippet of dmesg after change: Summary: random_size_align_alloc_test passed: 1 failed: 0 xfailed: 0 .. Summary: align_shift_alloc_test passed: 0 failed: 0 xfailed: 1 .. Summary: pcpu_alloc_test passed: 1 failed: 0 xfailed: 0 .. Link: https://lkml.kernel.org/r/20250702064319.885-1-raghavendra.kt@amd.com Signed-off-by: Raghavendra K T <raghavendra.kt@amd.com> Reviewed-by: "Uladzislau Rezki (Sony)" <urezki@gmail.com> Cc: Dev Jain <dev.jain@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
9640b17a89
commit
ee58e38489
@ -396,25 +396,27 @@ cleanup:
|
|||||||
struct test_case_desc {
|
struct test_case_desc {
|
||||||
const char *test_name;
|
const char *test_name;
|
||||||
int (*test_func)(void);
|
int (*test_func)(void);
|
||||||
|
bool xfail;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct test_case_desc test_case_array[] = {
|
static struct test_case_desc test_case_array[] = {
|
||||||
{ "fix_size_alloc_test", fix_size_alloc_test },
|
{ "fix_size_alloc_test", fix_size_alloc_test, },
|
||||||
{ "full_fit_alloc_test", full_fit_alloc_test },
|
{ "full_fit_alloc_test", full_fit_alloc_test, },
|
||||||
{ "long_busy_list_alloc_test", long_busy_list_alloc_test },
|
{ "long_busy_list_alloc_test", long_busy_list_alloc_test, },
|
||||||
{ "random_size_alloc_test", random_size_alloc_test },
|
{ "random_size_alloc_test", random_size_alloc_test, },
|
||||||
{ "fix_align_alloc_test", fix_align_alloc_test },
|
{ "fix_align_alloc_test", fix_align_alloc_test, },
|
||||||
{ "random_size_align_alloc_test", random_size_align_alloc_test },
|
{ "random_size_align_alloc_test", random_size_align_alloc_test, },
|
||||||
{ "align_shift_alloc_test", align_shift_alloc_test },
|
{ "align_shift_alloc_test", align_shift_alloc_test, true },
|
||||||
{ "pcpu_alloc_test", pcpu_alloc_test },
|
{ "pcpu_alloc_test", pcpu_alloc_test, },
|
||||||
{ "kvfree_rcu_1_arg_vmalloc_test", kvfree_rcu_1_arg_vmalloc_test },
|
{ "kvfree_rcu_1_arg_vmalloc_test", kvfree_rcu_1_arg_vmalloc_test, },
|
||||||
{ "kvfree_rcu_2_arg_vmalloc_test", kvfree_rcu_2_arg_vmalloc_test },
|
{ "kvfree_rcu_2_arg_vmalloc_test", kvfree_rcu_2_arg_vmalloc_test, },
|
||||||
{ "vm_map_ram_test", vm_map_ram_test },
|
{ "vm_map_ram_test", vm_map_ram_test, },
|
||||||
/* Add a new test case here. */
|
/* Add a new test case here. */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct test_case_data {
|
struct test_case_data {
|
||||||
int test_failed;
|
int test_failed;
|
||||||
|
int test_xfailed;
|
||||||
int test_passed;
|
int test_passed;
|
||||||
u64 time;
|
u64 time;
|
||||||
};
|
};
|
||||||
@ -444,7 +446,7 @@ static int test_func(void *private)
|
|||||||
{
|
{
|
||||||
struct test_driver *t = private;
|
struct test_driver *t = private;
|
||||||
int random_array[ARRAY_SIZE(test_case_array)];
|
int random_array[ARRAY_SIZE(test_case_array)];
|
||||||
int index, i, j;
|
int index, i, j, ret;
|
||||||
ktime_t kt;
|
ktime_t kt;
|
||||||
u64 delta;
|
u64 delta;
|
||||||
|
|
||||||
@ -468,11 +470,14 @@ static int test_func(void *private)
|
|||||||
*/
|
*/
|
||||||
if (!((run_test_mask & (1 << index)) >> index))
|
if (!((run_test_mask & (1 << index)) >> index))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
kt = ktime_get();
|
kt = ktime_get();
|
||||||
for (j = 0; j < test_repeat_count; j++) {
|
for (j = 0; j < test_repeat_count; j++) {
|
||||||
if (!test_case_array[index].test_func())
|
ret = test_case_array[index].test_func();
|
||||||
|
|
||||||
|
if (!ret && !test_case_array[index].xfail)
|
||||||
t->data[index].test_passed++;
|
t->data[index].test_passed++;
|
||||||
|
else if (ret && test_case_array[index].xfail)
|
||||||
|
t->data[index].test_xfailed++;
|
||||||
else
|
else
|
||||||
t->data[index].test_failed++;
|
t->data[index].test_failed++;
|
||||||
}
|
}
|
||||||
@ -576,10 +581,11 @@ static void do_concurrent_test(void)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
pr_info(
|
pr_info(
|
||||||
"Summary: %s passed: %d failed: %d repeat: %d loops: %d avg: %llu usec\n",
|
"Summary: %s passed: %d failed: %d xfailed: %d repeat: %d loops: %d avg: %llu usec\n",
|
||||||
test_case_array[j].test_name,
|
test_case_array[j].test_name,
|
||||||
t->data[j].test_passed,
|
t->data[j].test_passed,
|
||||||
t->data[j].test_failed,
|
t->data[j].test_failed,
|
||||||
|
t->data[j].test_xfailed,
|
||||||
test_repeat_count, test_loop_count,
|
test_repeat_count, test_loop_count,
|
||||||
t->data[j].time);
|
t->data[j].time);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user