From: Philippe Proulx Date: Fri, 17 Feb 2017 08:53:43 +0000 (-0500) Subject: Tests: utils: add gen-ust-nevents-str util X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=5400d18f909dbcf6cb8c794cdd33d0c2213fda18 Tests: utils: add gen-ust-nevents-str util This program generates a given number of UST events, each one having in its payload the next command-line argument string in a cycle: gen-ust-nevents-str 10 hello world its me will generate 10 events with the following strings: hello world its me hello world its me hello world Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- diff --git a/configure.ac b/configure.ac index 22533939b..5c12509a4 100644 --- a/configure.ac +++ b/configure.ac @@ -1083,6 +1083,7 @@ AC_CONFIG_FILES([ tests/utils/testapp/Makefile tests/utils/testapp/gen-ust-events/Makefile tests/utils/testapp/gen-ust-nevents/Makefile + tests/utils/testapp/gen-ust-nevents-str/Makefile tests/utils/testapp/gen-ust-tracef/Makefile ]) diff --git a/tests/utils/testapp/Makefile.am b/tests/utils/testapp/Makefile.am index 0341de42b..84113a23c 100644 --- a/tests/utils/testapp/Makefile.am +++ b/tests/utils/testapp/Makefile.am @@ -1,2 +1,2 @@ -SUBDIRS = gen-ust-events gen-ust-nevents gen-ust-tracef +SUBDIRS = gen-ust-events gen-ust-nevents gen-ust-nevents-str gen-ust-tracef diff --git a/tests/utils/testapp/gen-ust-nevents-str/Makefile.am b/tests/utils/testapp/gen-ust-nevents-str/Makefile.am new file mode 100644 index 000000000..57f8350b4 --- /dev/null +++ b/tests/utils/testapp/gen-ust-nevents-str/Makefile.am @@ -0,0 +1,16 @@ +AM_CFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src -I$(srcdir) \ + -I$(top_srcdir)/tests/utils -O2 -g + +if LTTNG_TOOLS_BUILD_WITH_LIBDL +LIBS += -ldl +endif +if LTTNG_TOOLS_BUILD_WITH_LIBC_DL +LIBS += -lc +endif + +if HAVE_LIBLTTNG_UST_CTL +noinst_PROGRAMS = gen-ust-nevents-str +gen_ust_nevents_str_SOURCES = gen-ust-nevents-str.c tp.c tp.h +gen_ust_nevents_str_LDADD = -llttng-ust -lurcu-bp \ + $(top_builddir)/tests/utils/libtestutils.la +endif diff --git a/tests/utils/testapp/gen-ust-nevents-str/gen-ust-nevents-str.c b/tests/utils/testapp/gen-ust-nevents-str/gen-ust-nevents-str.c new file mode 100644 index 000000000..6d90bfc66 --- /dev/null +++ b/tests/utils/testapp/gen-ust-nevents-str/gen-ust-nevents-str.c @@ -0,0 +1,54 @@ +/* + * Copyright (C) - 2017 Philippe Proulx + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation; version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define _LGPL_SOURCE +#include + +#define TRACEPOINT_DEFINE +#include "tp.h" + +int main(int argc, char **argv) +{ + int count; + int i; + int arg_i; + + if (argc <= 3) { + fprintf(stderr, "Usage: %s COUNT STRING [STRING]...\n", + argv[0]); + return 1; + } + + if (argc >= 2) { + count = atoi(argv[1]); + } + + if (count < 0) { + return 0; + } + + for (i = 0, arg_i = 2; i < count; i++) { + tracepoint(tp, the_string, i, arg_i, argv[arg_i]); + + arg_i++; + if (arg_i == argc) { + arg_i = 2; + } + } + + return 0; +} diff --git a/tests/utils/testapp/gen-ust-nevents-str/tp.c b/tests/utils/testapp/gen-ust-nevents-str/tp.c new file mode 100644 index 000000000..a73138be8 --- /dev/null +++ b/tests/utils/testapp/gen-ust-nevents-str/tp.c @@ -0,0 +1,20 @@ +/* + * Copyright (C) - 2017 Philippe Proulx + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation; version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define _LGPL_SOURCE +#define TRACEPOINT_CREATE_PROBES +#include "tp.h" diff --git a/tests/utils/testapp/gen-ust-nevents-str/tp.h b/tests/utils/testapp/gen-ust-nevents-str/tp.h new file mode 100644 index 000000000..9f9ab95b5 --- /dev/null +++ b/tests/utils/testapp/gen-ust-nevents-str/tp.h @@ -0,0 +1,45 @@ +#undef TRACEPOINT_PROVIDER +#define TRACEPOINT_PROVIDER tp + +#if !defined(_TRACEPOINT_TP_H) || defined(TRACEPOINT_HEADER_MULTI_READ) +#define _TRACEPOINT_TP_H + +/* + * Copyright (C) - 2017 Philippe Proulx + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation; version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +TRACEPOINT_EVENT(tp, the_string, + TP_ARGS( + int, i, + int, arg_i, + const char *, str + ), + TP_FIELDS( + ctf_integer(int, i, i) + ctf_integer(long, arg_i, arg_i) + ctf_string(str, str) + ) +) + +#endif /* _TRACEPOINT_TP_H */ + +#undef TRACEPOINT_INCLUDE_FILE +#define TRACEPOINT_INCLUDE_FILE ./tp.h + +/* This part must be outside ifdef protection */ +#include