mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-21 21:12:25 -05:00
perf cpumap: Add more tests for CPU map merging
Add additional tests for CPU map merging to cover more cases. These tests include different types of arguments, such as when one CPU map is a subset of another, as well as cases with or without overlap between the two maps. Reviewed-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Leo Yan <leo.yan@arm.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ian Rogers <irogers@google.com> Cc: James Clark <james.clark@linaro.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/r/20241107125308.41226-3-leo.yan@arm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
a9d2217556
commit
fb953dfa66
@@ -156,21 +156,45 @@ static int test__cpu_map_print(struct test_suite *test __maybe_unused, int subte
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test__cpu_map_merge(struct test_suite *test __maybe_unused, int subtest __maybe_unused)
|
||||
static int __test__cpu_map_merge(const char *lhs, const char *rhs, int nr, const char *expected)
|
||||
{
|
||||
struct perf_cpu_map *a = perf_cpu_map__new("4,2,1");
|
||||
struct perf_cpu_map *b = perf_cpu_map__new("4,5,7");
|
||||
struct perf_cpu_map *a = perf_cpu_map__new(lhs);
|
||||
struct perf_cpu_map *b = perf_cpu_map__new(rhs);
|
||||
char buf[100];
|
||||
|
||||
perf_cpu_map__merge(&a, b);
|
||||
TEST_ASSERT_VAL("failed to merge map: bad nr", perf_cpu_map__nr(a) == 5);
|
||||
TEST_ASSERT_VAL("failed to merge map: bad nr", perf_cpu_map__nr(a) == nr);
|
||||
cpu_map__snprint(a, buf, sizeof(buf));
|
||||
TEST_ASSERT_VAL("failed to merge map: bad result", !strcmp(buf, "1-2,4-5,7"));
|
||||
TEST_ASSERT_VAL("failed to merge map: bad result", !strcmp(buf, expected));
|
||||
perf_cpu_map__put(b);
|
||||
perf_cpu_map__put(a);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test__cpu_map_merge(struct test_suite *test __maybe_unused,
|
||||
int subtest __maybe_unused)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = __test__cpu_map_merge("4,2,1", "4,5,7", 5, "1-2,4-5,7");
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = __test__cpu_map_merge("1-8", "6-9", 9, "1-9");
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = __test__cpu_map_merge("1-8,12-20", "6-9,15", 18, "1-9,12-20");
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = __test__cpu_map_merge("4,2,1", "1", 3, "1-2,4");
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = __test__cpu_map_merge("1", "4,2,1", 3, "1-2,4");
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = __test__cpu_map_merge("1", "1", 1, "1");
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __test__cpu_map_intersect(const char *lhs, const char *rhs, int nr, const char *expected)
|
||||
{
|
||||
struct perf_cpu_map *a = perf_cpu_map__new(lhs);
|
||||
|
||||
Reference in New Issue
Block a user