Re: [PATCH 73/79] libperf: Add perf_cpu_map test

From: Arnaldo Carvalho de Melo
Date: Thu Jul 25 2019 - 14:05:19 EST


Em Sun, Jul 21, 2019 at 01:25:00PM +0200, Jiri Olsa escreveu:
> Add simple perf_cpu_map tests.

Its not honouring O= and requires that we first build libperf in the
source tree, please fix this in a followup patch:

[acme@quaco perf]$ make -C tools/perf/lib clean
make: Entering directory '/home/acme/git/perf/tools/perf/lib'
CLEAN libperf
CLEAN tests
make: Leaving directory '/home/acme/git/perf/tools/perf/lib'
[acme@quaco perf]$ ls -la tools/perf/lib/tests/
total 16
drwxrwxr-x. 2 acme acme 4096 Jul 25 07:35 .
drwxrwxr-x. 4 acme acme 4096 Jul 25 07:35 ..
-rw-rw-r--. 1 acme acme 857 Jul 25 07:34 Makefile
-rw-rw-r--. 1 acme acme 328 Jul 25 07:34 test-cpumap.c
[acme@quaco perf]$ make O=/tmp/build/perf -C tools/perf/lib/ tests
make: Entering directory '/home/acme/git/perf/tools/perf/lib'
LINK test-cpumap-a
gcc: error: ../libperf.a: No such file or directory
make[1]: *** [Makefile:22: test-cpumap-a] Error 1
make: *** [Makefile:115: tests] Error 2
make: Leaving directory '/home/acme/git/perf/tools/perf/lib'
[acme@quaco perf]$

libperf itself is honouring O=:

[acme@quaco perf]$ make O=/tmp/build/perf -C tools/perf/lib
make: Entering directory '/home/acme/git/perf/tools/perf/lib'
LINK /tmp/build/perf/libperf.so.0.0.1
GEN /tmp/build/perf/libperf.pc
make: Leaving directory '/home/acme/git/perf/tools/perf/lib'
[acme@quaco perf]$ make O=/tmp/build/perf -C tools/perf/lib tests
make: Entering directory '/home/acme/git/perf/tools/perf/lib'
LINK test-cpumap-a
gcc: error: ../libperf.a: No such file or directory
make[1]: *** [Makefile:22: test-cpumap-a] Error 1
make: *** [Makefile:115: tests] Error 2
make: Leaving directory '/home/acme/git/perf/tools/perf/lib'
[acme@quaco perf]$

Its only when I stop using O= that it works:

[acme@quaco perf]$ make -C tools/perf/lib
make: Entering directory '/home/acme/git/perf/tools/perf/lib'
HOSTCC fixdep.o
HOSTLD fixdep-in.o
LINK fixdep
CC core.o
CC cpumap.o
CC threadmap.o
CC evsel.o
CC evlist.o
CC zalloc.o
CC xyarray.o
CC lib.o
LD libperf-in.o
AR libperf.a
LINK libperf.so.0.0.1
GEN libperf.pc
make: Leaving directory '/home/acme/git/perf/tools/perf/lib'
[acme@quaco perf]$ make O=/tmp/build/perf -C tools/perf/lib tests
make: Entering directory '/home/acme/git/perf/tools/perf/lib'
LINK test-cpumap-a
LINK test-cpumap-so
running static:
- running test-cpumap.c...OK
running dynamic:
- running test-cpumap.c...OK
make: Leaving directory '/home/acme/git/perf/tools/perf/lib'
[acme@quaco perf]$

It is already useful albeit this limitation, so I'm applying.

- Arnaldo

> Link: http://lkml.kernel.org/n/tip-143x51wped4tlsb06sapbfp0@xxxxxxxxxxxxxx
> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> ---
> tools/perf/lib/tests/Makefile | 2 +-
> tools/perf/lib/tests/test-cpumap.c | 21 +++++++++++++++++++++
> 2 files changed, 22 insertions(+), 1 deletion(-)
> create mode 100644 tools/perf/lib/tests/test-cpumap.c
>
> diff --git a/tools/perf/lib/tests/Makefile b/tools/perf/lib/tests/Makefile
> index de951ae38dea..b72c8c47df61 100644
> --- a/tools/perf/lib/tests/Makefile
> +++ b/tools/perf/lib/tests/Makefile
> @@ -1,6 +1,6 @@
> # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
>
> -TESTS =
> +TESTS = test-cpumap
>
> TESTS_SO := $(addsuffix -so,$(TESTS))
> TESTS_A := $(addsuffix -a,$(TESTS))
> diff --git a/tools/perf/lib/tests/test-cpumap.c b/tools/perf/lib/tests/test-cpumap.c
> new file mode 100644
> index 000000000000..76a43cfb83a1
> --- /dev/null
> +++ b/tools/perf/lib/tests/test-cpumap.c
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: GPL-2.0
> +#include <perf/cpumap.h>
> +#include <internal/tests.h>
> +
> +int main(int argc, char **argv)
> +{
> + struct perf_cpu_map *cpus;
> +
> + __T_START;
> +
> + cpus = perf_cpu_map__dummy_new();
> + if (!cpus)
> + return -1;
> +
> + perf_cpu_map__get(cpus);
> + perf_cpu_map__put(cpus);
> + perf_cpu_map__put(cpus);
> +
> + __T_OK;
> + return 0;
> +}
> --
> 2.21.0

--

- Arnaldo