perf tests: Add attr tests under builtin test command
authorJiri Olsa <jolsa@redhat.com>
Tue, 30 Oct 2012 22:02:05 +0000 (23:02 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 1 Nov 2012 20:00:40 +0000 (17:00 -0300)
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: Jiri 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.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Makefile
tools/perf/perf.h
tools/perf/tests/attr.c
tools/perf/tests/builtin-test.c

index 1da87a30c73a070ab5de5130b2a65f27b8e463b9..4ffcd02404f8c87a563b5fb90e285c6514d01a83 100644 (file)
@@ -898,6 +898,11 @@ $(OUTPUT)util/exec_cmd.o: util/exec_cmd.c $(OUTPUT)PERF-CFLAGS
                '-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
        $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
 
@@ -1062,6 +1067,10 @@ install: all try-install-man
        $(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) 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:
        $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
index 00472646b3bf4ab176dbbc4546575b1b6bbc4922..054182e41dca23b6492309aa488a7dacee11bb00 100644 (file)
@@ -178,6 +178,7 @@ extern bool test_attr__enabled;
 void test_attr__init(void);
 void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu,
                     int fd, int group_fd, unsigned long flags);
+int  test_attr__run(void);
 
 static inline int
 sys_perf_event_open(struct perf_event_attr *attr,
index 55e9a873a5cb3113a1da13450497bc0bfb397eb4..aacad82634c67acc51c37514e79d4ea2a5b29058 100644 (file)
 #include <linux/kernel.h>
 #include "../perf.h"
 #include "util.h"
+#include "exec_cmd.h"
 
 #define ENV "PERF_TEST_ATTR"
 
+extern int verbose;
+
 bool test_attr__enabled;
 
 static char *dir;
@@ -138,3 +141,35 @@ void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu,
 
        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;
+}
index f6c642415c44ca953fa6a242b97e76a22affe32f..1aa9e99270432575c0ae208c92f9a05be94a5497 100644 (file)
@@ -1454,6 +1454,10 @@ static struct test {
                .desc = "Generate and check syscalls:sys_enter_open event fields",
                .func = test__syscall_open_tp_fields,
        },
+       {
+               .desc = "struct perf_event_attr setup",
+               .func = test_attr__run,
+       },
        {
                .func = NULL,
        },