From: Mathieu Desnoyers via lttng-dev <lttng-dev@lists.lttng.org>
To: Anders Wallin <wallinux@gmail.com>
Cc: lttng-dev <lttng-dev@lists.lttng.org>
Subject: Re: [lttng-dev] [PATCH lttng-tools] testapp: gen-ust-events: added help and sync-before-first-event
Date: Wed, 7 Apr 2021 11:29:48 -0400 (EDT) [thread overview]
Message-ID: <760733085.60423.1617809388155.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <20210401163633.839259-1-wallinux@gmail.com>
----- On Apr 1, 2021, at 12:36 PM, lttng-dev lttng-dev@lists.lttng.org wrote:
> - added verbose option to print traces
> - added sync-before-first-event to wait on file before first event
> - added help option
> - added missing short option "-e"
> - don't allow negative wait times
I don't think this is needed. Will explain in the next patch.
Thanks,
Mathieu
>
> Signed-off-by: Anders Wallin <wallinux@gmail.com>
> ---
> .../testapp/gen-ust-events/gen-ust-events.c | 95 ++++++++++++++++---
> 1 file changed, 82 insertions(+), 13 deletions(-)
>
> diff --git a/tests/utils/testapp/gen-ust-events/gen-ust-events.c
> b/tests/utils/testapp/gen-ust-events/gen-ust-events.c
> index df1e58e4..5fefb2d8 100644
> --- a/tests/utils/testapp/gen-ust-events/gen-ust-events.c
> +++ b/tests/utils/testapp/gen-ust-events/gen-ust-events.c
> @@ -28,6 +28,15 @@
> #define TRACEPOINT_DEFINE
> #include "tp.h"
>
> +/* #define NDEBUG */
> +
> +#ifndef NDEBUG
> +int verbose;
> +#define TRACE(format, ...) { if (verbose) printf(" ---TRACE: " format,
> __VA_ARGS__); }
> +#else
> +#define TRACE(format, ...)
> +#endif
> +
> static struct option long_options[] =
> {
> /* These options set a flag. */
> @@ -38,9 +47,33 @@ static struct option long_options[] =
> {"sync-before-last-event-touch", required_argument, 0, 'c'},
> {"sync-before-exit", required_argument, 0, 'd'},
> {"sync-before-exit-touch", required_argument, 0, 'e'},
> + {"sync-before-first-event", required_argument, 0, 'f'},
> + {"help", no_argument, 0, 'h'},
> +#ifndef NDEBUG
> + {"verbose", no_argument, 0, 'v'},
> +#endif
> {0, 0, 0, 0}
> };
>
> +const char *program_name;
> +
> +static void print_usage(void)
> +{
> + printf("Usage: %s options\n", program_name);
> + printf(" -h --help Display this usage
> information\n"
> +#ifndef NDEBUG
> + " -v --verbose Print verbose
> messages\n"
> +#endif
> + " -i --iter [iterations] Number of iterations,
> default=100, forever=-1\n"
> + " -w --wait [usec] Time in usec between
> events, default=0\n"
> + " -a --sync-after-first-event [filename] Create file after
> first event\n"
> + " -b --sync-before-last-event [filename] Wait for file before
> writing last event\n"
> + " -c --sync-before-last-event-touch [filename] Create file after last
> event\n"
> + " -d --sync-before-exit [filename] Wait for file before
> exit\n"
> + " -e --sync-before-exit-touch [filename] Create file before
> exit\n"
> + " -f --sync-before-first-event [filename] Wait for file before
> creating the first event\n");
> +}
> +
> int main(int argc, char **argv)
> {
> unsigned int i, netint;
> @@ -54,7 +87,7 @@ int main(int argc, char **argv)
> uint32_t net_values[] = { 1, 2, 3 };
> int nr_iter = 100, ret = 0, first_event_file_created = 0;
> useconds_t nr_usec = 0;
> - char *after_first_event_file_path = NULL;
> + char *after_first_event_file_path_touch = NULL;
> char *before_last_event_file_path = NULL;
> /*
> * Touch a file to indicate that all events except one were
> @@ -65,16 +98,20 @@ int main(int argc, char **argv)
> char *before_exit_file_path_touch = NULL;
> /* Wait on file before exiting */
> char *before_exit_file_path = NULL;
> + /* Wait on file before starting */
> + char *before_first_event_file_path = NULL;
> +
> + program_name = argv[0];
>
> for (i = 0; i < 3; i++) {
> net_values[i] = htonl(net_values[i]);
> }
>
> - while ((option = getopt_long(argc, argv, "i:w:a:b:c:d:",
> + while ((option = getopt_long(argc, argv, "i:w:a:b:c:d:e:f:hv",
> long_options, &option_index)) != -1) {
> switch (option) {
> case 'a':
> - after_first_event_file_path = strdup(optarg);
> + after_first_event_file_path_touch = strdup(optarg);
> break;
> case 'b':
> before_last_event_file_path = strdup(optarg);
> @@ -88,22 +125,30 @@ int main(int argc, char **argv)
> case 'e':
> before_exit_file_path_touch = strdup(optarg);
> break;
> + case 'f':
> + before_first_event_file_path = strdup(optarg);
> + break;
> case 'i':
> nr_iter = atoi(optarg);
> break;
> +#ifndef NDEBUG
> + case 'v':
> + verbose = 1;
> + break;
> +#endif
> case 'w':
> - nr_usec = atoi(optarg);
> + /* only postive values are valid */
> + nr_usec = (atoi(optarg) < 0) ? 0 : atoi(optarg);
> break;
> - case '?':
> - /* getopt_long already printed an error message. */
> + case 'h':
> default:
> - ret = -1;
> + print_usage();
> goto end;
> }
> }
>
> if (optind != argc) {
> - fprintf(stderr, "Error: takes long options only.\n");
> + fprintf(stderr, "Error: takes options only.\n");
>
> /*
> * Aborting the test program for now because callers typically don't check
> @@ -113,6 +158,7 @@ int main(int argc, char **argv)
> * we should eventually ensure that all scripts test and report the test
> * app return values.
> */
> + print_usage();
> abort();
>
> ret = -1;
> @@ -125,9 +171,23 @@ int main(int argc, char **argv)
> goto end;
> }
>
> + TRACE("iter: %i\n", nr_iter);
> + TRACE("wait: %i (usec)\n", nr_usec);
> +
> + if (before_first_event_file_path) {
> + TRACE("before_first_event_file_path(%i): %s\n",
> + -1, before_first_event_file_path);
> + ret = wait_on_file(before_first_event_file_path);
> + if (ret != 0) {
> + goto end;
> + }
> + }
> +
> for (i = 0; nr_iter < 0 || i < nr_iter; i++) {
> if (nr_iter >= 0 && i == nr_iter - 1) {
> if (before_last_event_file_path_touch) {
> + TRACE("before_last_event_file_path_touch(%i): %s\n",
> + i, before_last_event_file_path_touch);
> ret = create_file(before_last_event_file_path_touch);
> if (ret != 0) {
> goto end;
> @@ -139,6 +199,8 @@ int main(int argc, char **argv)
> * event.
> */
> if (before_last_event_file_path) {
> + TRACE("before_last_event_file_path(%i): %s\n",
> + i, before_last_event_file_path);
> ret = wait_on_file(before_last_event_file_path);
> if (ret != 0) {
> goto end;
> @@ -153,9 +215,10 @@ int main(int argc, char **argv)
> * First loop we create the file if asked to indicate
> * that at least one tracepoint has been hit.
> */
> - if (after_first_event_file_path && first_event_file_created == 0) {
> - ret = create_file(after_first_event_file_path);
> -
> + if (after_first_event_file_path_touch && first_event_file_created == 0) {
> + TRACE("after_first_event_file_path_touch(%i): %s\n",
> + i, after_first_event_file_path_touch);
> + ret = create_file(after_first_event_file_path_touch);
> if (ret != 0) {
> goto end;
> } else {
> @@ -164,7 +227,7 @@ int main(int argc, char **argv)
> }
>
> if (nr_usec) {
> - if (usleep_safe(nr_usec)) {
> + if (usleep_safe(nr_usec)) {
> ret = -1;
> goto end;
> }
> @@ -175,22 +238,28 @@ int main(int argc, char **argv)
> }
>
> if (before_exit_file_path_touch) {
> + TRACE("before_exit_file_path_touch(%i): %s\n",
> + i, before_exit_file_path_touch);
> ret = create_file(before_exit_file_path_touch);
> if (ret != 0) {
> goto end;
> }
> }
> if (before_exit_file_path) {
> + TRACE("before_exit_file_path(%i): %s\n",
> + i, before_exit_file_path);
> ret = wait_on_file(before_exit_file_path);
> if (ret != 0) {
> goto end;
> }
> }
> end:
> - free(after_first_event_file_path);
> + TRACE("end status: %i\n", ret);
> + free(after_first_event_file_path_touch);
> free(before_last_event_file_path);
> free(before_last_event_file_path_touch);
> free(before_exit_file_path);
> free(before_exit_file_path_touch);
> + free(before_first_event_file_path);
> exit(!ret ? EXIT_SUCCESS : EXIT_FAILURE);
> }
> --
> 2.31.1
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
prev parent reply other threads:[~2021-04-07 15:30 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-01 16:36 [lttng-dev] [PATCH lttng-tools] testapp: gen-ust-events: added help and sync-before-first-event Anders Wallin via lttng-dev
2021-04-07 15:29 ` Mathieu Desnoyers via lttng-dev [this message]
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=760733085.60423.1617809388155.JavaMail.zimbra@efficios.com \
--to=lttng-dev@lists.lttng.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=wallinux@gmail.com \
/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: link
Be 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.