From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> To: mingo@redhat.com, ak@linux.intel.com, Michael Ellerman <mpe@ellerman.id.au>, Jiri Olsa <jolsa@redhat.com>, Arnaldo Carvalho de Melo <acme@kernel.org> Cc: peterz@infradead.org, namhyung@kernel.org, linuxppc-dev@lists.ozlabs.org, <linux-kernel@vger.kernel.org> Subject: [PATCH v9 09/11] perf, tools, test: Add test case for alias and JSON parsing Date: Mon, 13 Apr 2015 23:41:02 -0700 [thread overview] Message-ID: <1428993665-2133-10-git-send-email-sukadev@linux.vnet.ibm.com> (raw) In-Reply-To: <1428993665-2133-1-git-send-email-sukadev@linux.vnet.ibm.com> From: Andi Kleen <ak@linux.intel.com> Add a simple test case to perf test that parses all the available events, including json events. This needs adding an all event iterator to pmu.c Acked-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> --- Changelog[v9] by Sukadev Bhattiprolu Rebase to 4.0 and fix conflicts in: tools/perf/tests/builtin-test.c tools/perf/tests/tests.h Changelog: v2: Rename identifiers v3: Only iterate cpu pmu to avoid bogus errors. Move pmu iterator to extra patch v4: Include aliases.c again v5: Include util/debug.h --- tools/perf/Makefile.perf | 1 + tools/perf/tests/aliases.c | 59 +++++++++++++++++++++++++++++++++++++++ tools/perf/tests/builtin-test.c | 4 +++ tools/perf/tests/tests.h | 1 + 4 files changed, 65 insertions(+) create mode 100644 tools/perf/tests/aliases.c diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index d9c1a4c..d9c03c4 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -456,6 +456,7 @@ endif LIB_OBJS += $(OUTPUT)tests/code-reading.o LIB_OBJS += $(OUTPUT)tests/sample-parsing.o LIB_OBJS += $(OUTPUT)tests/parse-no-sample-id-all.o +LIB_OBJS += $(OUTPUT)tests/aliases.o ifndef NO_DWARF_UNWIND ifeq ($(ARCH),$(filter $(ARCH),x86 arm)) LIB_OBJS += $(OUTPUT)tests/dwarf-unwind.o diff --git a/tools/perf/tests/aliases.c b/tools/perf/tests/aliases.c new file mode 100644 index 0000000..4209e51 --- /dev/null +++ b/tools/perf/tests/aliases.c @@ -0,0 +1,59 @@ +/* Check if we can set up all aliases and can read JSON files */ +#include <stdlib.h> +#include "tests.h" +#include "pmu.h" +#include "evlist.h" +#include "parse-events.h" +#include "util/debug.h" + +static struct perf_evlist *evlist; + +static int num_events; +static int failed; + +static int test__event(const char *pmu, const char *name) +{ + int ret; + + /* Not supported for now */ + if (strcmp(pmu, "cpu")) + return 0; + + ret = parse_events(evlist, name); + + if (ret) { + /* + * We only print on failure because common perf setups + * have events that cannot be parsed. + */ + fprintf(stderr, "invalid or unsupported event: '%s'\n", name); + ret = 0; + failed++; + } else + num_events++; + return ret; +} + +int test__aliases(void) +{ + int err; + + /* Download JSON files */ + /* XXX assumes perf is installed */ + /* For now user must manually download */ + if (0 && system("perf download > /dev/null") < 0) { + /* Don't error out for this for now */ + fprintf(stderr, "perf download failed\n"); + } + + evlist = perf_evlist__new(); + if (evlist == NULL) + return -ENOMEM; + + err = pmu_iterate_events(test__event); + fprintf(stderr, " Parsed %d events :", num_events); + if (failed > 0) + pr_debug(" %d events failed", failed); + perf_evlist__delete(evlist); + return err; +} diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c index 4b7d9ab..2324b1c 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -167,6 +167,10 @@ static struct test { .func = test__fdarray__add, }, { + .desc = "Test parsing JSON aliases", + .func = test__aliases, + }, + { .func = NULL, }, }; diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index 00e776a..ddce231 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -51,6 +51,7 @@ int test__hists_cumulate(void); int test__switch_tracking(void); int test__fdarray__filter(void); int test__fdarray__add(void); +int test__aliases(void); #if defined(__x86_64__) || defined(__i386__) || defined(__arm__) #ifdef HAVE_DWARF_UNWIND_SUPPORT -- 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> To: mingo@redhat.com, ak@linux.intel.com, Michael Ellerman <mpe@ellerman.id.au>, Jiri Olsa <jolsa@redhat.com>, Arnaldo Carvalho de Melo <acme@kernel.org> Cc: peterz@infradead.org, namhyung@kernel.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Subject: [PATCH v9 09/11] perf, tools, test: Add test case for alias and JSON parsing Date: Mon, 13 Apr 2015 23:41:02 -0700 [thread overview] Message-ID: <1428993665-2133-10-git-send-email-sukadev@linux.vnet.ibm.com> (raw) In-Reply-To: <1428993665-2133-1-git-send-email-sukadev@linux.vnet.ibm.com> From: Andi Kleen <ak@linux.intel.com> Add a simple test case to perf test that parses all the available events, including json events. This needs adding an all event iterator to pmu.c Acked-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> --- Changelog[v9] by Sukadev Bhattiprolu Rebase to 4.0 and fix conflicts in: tools/perf/tests/builtin-test.c tools/perf/tests/tests.h Changelog: v2: Rename identifiers v3: Only iterate cpu pmu to avoid bogus errors. Move pmu iterator to extra patch v4: Include aliases.c again v5: Include util/debug.h --- tools/perf/Makefile.perf | 1 + tools/perf/tests/aliases.c | 59 +++++++++++++++++++++++++++++++++++++++ tools/perf/tests/builtin-test.c | 4 +++ tools/perf/tests/tests.h | 1 + 4 files changed, 65 insertions(+) create mode 100644 tools/perf/tests/aliases.c diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index d9c1a4c..d9c03c4 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -456,6 +456,7 @@ endif LIB_OBJS += $(OUTPUT)tests/code-reading.o LIB_OBJS += $(OUTPUT)tests/sample-parsing.o LIB_OBJS += $(OUTPUT)tests/parse-no-sample-id-all.o +LIB_OBJS += $(OUTPUT)tests/aliases.o ifndef NO_DWARF_UNWIND ifeq ($(ARCH),$(filter $(ARCH),x86 arm)) LIB_OBJS += $(OUTPUT)tests/dwarf-unwind.o diff --git a/tools/perf/tests/aliases.c b/tools/perf/tests/aliases.c new file mode 100644 index 0000000..4209e51 --- /dev/null +++ b/tools/perf/tests/aliases.c @@ -0,0 +1,59 @@ +/* Check if we can set up all aliases and can read JSON files */ +#include <stdlib.h> +#include "tests.h" +#include "pmu.h" +#include "evlist.h" +#include "parse-events.h" +#include "util/debug.h" + +static struct perf_evlist *evlist; + +static int num_events; +static int failed; + +static int test__event(const char *pmu, const char *name) +{ + int ret; + + /* Not supported for now */ + if (strcmp(pmu, "cpu")) + return 0; + + ret = parse_events(evlist, name); + + if (ret) { + /* + * We only print on failure because common perf setups + * have events that cannot be parsed. + */ + fprintf(stderr, "invalid or unsupported event: '%s'\n", name); + ret = 0; + failed++; + } else + num_events++; + return ret; +} + +int test__aliases(void) +{ + int err; + + /* Download JSON files */ + /* XXX assumes perf is installed */ + /* For now user must manually download */ + if (0 && system("perf download > /dev/null") < 0) { + /* Don't error out for this for now */ + fprintf(stderr, "perf download failed\n"); + } + + evlist = perf_evlist__new(); + if (evlist == NULL) + return -ENOMEM; + + err = pmu_iterate_events(test__event); + fprintf(stderr, " Parsed %d events :", num_events); + if (failed > 0) + pr_debug(" %d events failed", failed); + perf_evlist__delete(evlist); + return err; +} diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c index 4b7d9ab..2324b1c 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -167,6 +167,10 @@ static struct test { .func = test__fdarray__add, }, { + .desc = "Test parsing JSON aliases", + .func = test__aliases, + }, + { .func = NULL, }, }; diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index 00e776a..ddce231 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -51,6 +51,7 @@ int test__hists_cumulate(void); int test__switch_tracking(void); int test__fdarray__filter(void); int test__fdarray__add(void); +int test__aliases(void); #if defined(__x86_64__) || defined(__i386__) || defined(__arm__) #ifdef HAVE_DWARF_UNWIND_SUPPORT -- 1.7.9.5
next prev parent reply other threads:[~2015-04-14 6:43 UTC|newest] Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-04-14 6:40 [PATCH v9 00/11] Add support for JSON event files Sukadev Bhattiprolu 2015-04-14 6:40 ` Sukadev Bhattiprolu 2015-04-14 6:40 ` [PATCH v9 01/11] perf, tools: Add jsmn `jasmine' JSON parser Sukadev Bhattiprolu 2015-04-14 6:40 ` Sukadev Bhattiprolu 2015-04-14 6:40 ` [PATCH v9 02/11] perf, tools: Add support for text descriptions of events and alias add Sukadev Bhattiprolu 2015-04-14 6:40 ` Sukadev Bhattiprolu 2015-04-14 6:40 ` [PATCH v9 03/11] perf, tools, list: Update perf list to output descriptions Sukadev Bhattiprolu 2015-04-14 6:40 ` Sukadev Bhattiprolu 2015-04-14 6:40 ` [PATCH v9 04/11] perf, tools: Add support for reading JSON event files Sukadev Bhattiprolu 2015-04-14 6:40 ` Sukadev Bhattiprolu 2015-04-14 6:40 ` [PATCH v9 05/11] perf, tools: Automatically look for event file name for cpu Sukadev Bhattiprolu 2015-04-14 6:40 ` Sukadev Bhattiprolu 2015-04-14 6:40 ` [PATCH v9 06/11] powerpc/perf: Implement get_cpu_str() Sukadev Bhattiprolu 2015-04-14 6:40 ` Sukadev Bhattiprolu 2015-04-14 6:41 ` [PATCH v9 07/11] perf, tools: Query terminal width and use in perf list Sukadev Bhattiprolu 2015-04-14 6:41 ` Sukadev Bhattiprolu 2015-04-14 6:41 ` [PATCH v9 08/11] perf, tools: Add a new pmu interface to iterate over all events Sukadev Bhattiprolu 2015-04-14 6:41 ` Sukadev Bhattiprolu 2015-04-14 6:41 ` Sukadev Bhattiprolu [this message] 2015-04-14 6:41 ` [PATCH v9 09/11] perf, tools, test: Add test case for alias and JSON parsing Sukadev Bhattiprolu 2015-04-14 6:41 ` [PATCH v9 10/11] perf, tools: Add a --no-desc flag to perf list Sukadev Bhattiprolu 2015-04-14 6:41 ` Sukadev Bhattiprolu 2015-04-14 6:41 ` [PATCH v9 11/11] perf-download: Download the events json file Sukadev Bhattiprolu 2015-04-14 6:41 ` Sukadev Bhattiprolu 2015-04-14 8:55 ` 'perf upgrade' (was: Re: [PATCH v9 00/11] Add support for JSON event files.) Ingo Molnar 2015-04-14 8:55 ` Ingo Molnar 2015-04-14 11:21 ` Michael Ellerman 2015-04-14 11:21 ` Michael Ellerman 2015-04-14 12:58 ` Ingo Molnar 2015-04-14 12:58 ` Ingo Molnar 2015-04-14 18:03 ` Sukadev Bhattiprolu 2015-04-14 18:03 ` Sukadev Bhattiprolu 2015-04-14 22:53 ` Michael Ellerman 2015-04-14 22:53 ` Michael Ellerman 2015-04-15 9:25 ` Ingo Molnar 2015-04-15 9:25 ` Ingo Molnar 2015-04-15 19:17 ` Andi Kleen 2015-04-15 19:17 ` Andi Kleen 2015-04-15 20:50 ` Sukadev Bhattiprolu 2015-04-15 20:50 ` Sukadev Bhattiprolu 2015-04-17 15:31 ` Jiri Olsa 2015-04-17 15:31 ` Jiri Olsa 2015-04-17 20:09 ` Andi Kleen 2015-04-17 20:09 ` Andi Kleen 2015-04-18 13:05 ` Jiri Olsa 2015-04-18 13:05 ` Jiri Olsa 2015-04-18 13:12 ` Jiri Olsa 2015-04-18 13:12 ` Jiri Olsa 2015-04-14 20:16 ` Andi Kleen 2015-04-14 20:16 ` Andi Kleen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1428993665-2133-10-git-send-email-sukadev@linux.vnet.ibm.com \ --to=sukadev@linux.vnet.ibm.com \ --cc=acme@kernel.org \ --cc=ak@linux.intel.com \ --cc=jolsa@redhat.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=mingo@redhat.com \ --cc=mpe@ellerman.id.au \ --cc=namhyung@kernel.org \ --cc=peterz@infradead.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.