X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Futils%2Ftestapp%2Fgen-ust-events%2Fgen-ust-events.c;h=57c33f59728125fef76b1e79a58d978ba479d5e5;hp=353523b7c2c3ccd18d8f4fcf0b8f908dc35a0065;hb=6ffce1f5bbc5c3e956bc91ce801c779588bf37af;hpb=4e88fe0a93f9520f0b1205c242022c917dfc360b 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 353523b7c..57c33f597 100644 --- a/tests/utils/testapp/gen-ust-events/gen-ust-events.c +++ b/tests/utils/testapp/gen-ust-events/gen-ust-events.c @@ -1,18 +1,8 @@ /* - * Copyright (C) - 2012 David Goulet + * Copyright (C) 2012 David Goulet * - * 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. + * SPDX-License-Identifier: LGPL-2.1-only * - * 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 @@ -48,6 +38,7 @@ 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'}, + {"emit-end-event", no_argument, 0, 'f'}, {0, 0, 0, 0} }; @@ -58,8 +49,10 @@ int main(int argc, char **argv) int option; long values[] = { 1, 2, 3 }; char text[10] = "test"; + char escape[10] = "\\*"; double dbl = 2.0; float flt = 2222.0; + 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; @@ -73,9 +66,15 @@ int main(int argc, char **argv) char *before_exit_file_path_touch = NULL; /* Wait on file before exiting */ char *before_exit_file_path = NULL; + /* Emit an end event */ + bool emit_end_event = false; + + 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:", - long_options, &option_index)) != -1) { + while ((option = getopt_long(argc, argv, "i:w:a:b:c:d:e:f", + long_options, &option_index)) != -1) { switch (option) { case 'a': after_first_event_file_path = strdup(optarg); @@ -92,6 +91,9 @@ int main(int argc, char **argv) case 'e': before_exit_file_path_touch = strdup(optarg); break; + case 'f': + emit_end_event = true; + break; case 'i': nr_iter = atoi(optarg); break; @@ -100,7 +102,6 @@ int main(int argc, char **argv) break; case '?': /* getopt_long already printed an error message. */ - break; default: ret = -1; goto end; @@ -109,6 +110,17 @@ int main(int argc, char **argv) if (optind != argc) { fprintf(stderr, "Error: takes long options only.\n"); + + /* + * Aborting the test program for now because callers typically don't check + * the test program return value, and the transition from positional + * arguments to getopt causes hangs when caller scripts are not updated. + * An abort is easier to diagnose and fix. This is a temporary solution: + * we should eventually ensure that all scripts test and report the test + * app return values. + */ + abort(); + ret = -1; goto end; } @@ -141,7 +153,7 @@ int main(int argc, char **argv) } netint = htonl(i); tracepoint(tp, tptest, i, netint, values, text, - strlen(text), dbl, flt); + strlen(text), escape, net_values, dbl, flt); /* * First loop we create the file if asked to indicate @@ -168,6 +180,10 @@ int main(int argc, char **argv) } } + if (emit_end_event) { + tracepoint(tp, end); + } + if (before_exit_file_path_touch) { ret = create_file(before_exit_file_path_touch); if (ret != 0) {