Commit d898b241 authored by Jiri Olsa's avatar Jiri Olsa Committed by Arnaldo Carvalho de Melo

perf tests: Add attr tests under builtin test command

The test attr suite is run only if it's run under perf source directory,
or tests are found in installed path.

Otherwise tests are omitted (notification is displayed) and finished as
successful.
Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1351634526-1516-25-git-send-email-jolsa@redhat.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent bf779746
...@@ -898,6 +898,11 @@ $(OUTPUT)util/exec_cmd.o: util/exec_cmd.c $(OUTPUT)PERF-CFLAGS ...@@ -898,6 +898,11 @@ $(OUTPUT)util/exec_cmd.o: util/exec_cmd.c $(OUTPUT)PERF-CFLAGS
'-DPREFIX="$(prefix_SQ)"' \ '-DPREFIX="$(prefix_SQ)"' \
$< $<
$(OUTPUT)tests/attr.o: tests/attr.c $(OUTPUT)PERF-CFLAGS
$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \
'-DBINDIR="$(bindir_SQ)"' \
$<
$(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS $(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS
$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
...@@ -1062,6 +1067,10 @@ install: all try-install-man ...@@ -1062,6 +1067,10 @@ install: all try-install-man
$(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin' $(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d' $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d'
$(INSTALL) bash_completion '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf' $(INSTALL) bash_completion '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf'
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'
$(INSTALL) tests/attr.py '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'
$(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'
install-python_ext: install-python_ext:
$(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)' $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
......
...@@ -178,6 +178,7 @@ extern bool test_attr__enabled; ...@@ -178,6 +178,7 @@ extern bool test_attr__enabled;
void test_attr__init(void); void test_attr__init(void);
void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu, void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu,
int fd, int group_fd, unsigned long flags); int fd, int group_fd, unsigned long flags);
int test_attr__run(void);
static inline int static inline int
sys_perf_event_open(struct perf_event_attr *attr, sys_perf_event_open(struct perf_event_attr *attr,
......
...@@ -26,9 +26,12 @@ ...@@ -26,9 +26,12 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include "../perf.h" #include "../perf.h"
#include "util.h" #include "util.h"
#include "exec_cmd.h"
#define ENV "PERF_TEST_ATTR" #define ENV "PERF_TEST_ATTR"
extern int verbose;
bool test_attr__enabled; bool test_attr__enabled;
static char *dir; static char *dir;
...@@ -138,3 +141,35 @@ void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu, ...@@ -138,3 +141,35 @@ void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu,
errno = errno_saved; errno = errno_saved;
} }
static int run_dir(const char *d, const char *perf)
{
char cmd[3*PATH_MAX];
snprintf(cmd, 3*PATH_MAX, "python %s/attr.py -d %s/attr/ -p %s %s",
d, d, perf, verbose ? "-v" : "");
return system(cmd);
}
int test_attr__run(void)
{
struct stat st;
char path_perf[PATH_MAX];
char path_dir[PATH_MAX];
/* First try developement tree tests. */
if (!lstat("./tests", &st))
return run_dir("./tests", "./perf");
/* Then installed path. */
snprintf(path_dir, PATH_MAX, "%s/tests", perf_exec_path());
snprintf(path_perf, PATH_MAX, "%s/perf", BINDIR);
if (!lstat(path_dir, &st) &&
!lstat(path_perf, &st))
return run_dir(path_dir, path_perf);
fprintf(stderr, " (ommitted)");
return 0;
}
...@@ -1454,6 +1454,10 @@ static struct test { ...@@ -1454,6 +1454,10 @@ static struct test {
.desc = "Generate and check syscalls:sys_enter_open event fields", .desc = "Generate and check syscalls:sys_enter_open event fields",
.func = test__syscall_open_tp_fields, .func = test__syscall_open_tp_fields,
}, },
{
.desc = "struct perf_event_attr setup",
.func = test_attr__run,
},
{ {
.func = NULL, .func = NULL,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment