From: Francis Deslauriers Date: Tue, 5 May 2020 16:19:13 +0000 (-0400) Subject: Tests: `gen-ust-nevents`: add syncpoints X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=4bb5f0b0dcbd4c7bd09342be42f3b062a78c27ed;hp=03f1168604d69a01bb891d2c8745acbd8050a545 Tests: `gen-ust-nevents`: add syncpoints Adds two sync points: `--sync-in-main`: create a file when `gen-ust-nevents` when app is in main, `--sync-before-first-event`: wait on a file before starting to generate any events. Those two sync points allow for tests to do work when the testapp has reached main BUT before any events are generated. This is useful to perform actions on a UST channel once tracing has started and is active on a particular app. For example, we want to test a scenario where events are enabled once an app is already generating other events. Signed-off-by: Francis Deslauriers Signed-off-by: Jérémie Galarneau Change-Id: Id501c8b373e1a9b43aad6caef11672fe6c30a55a --- diff --git a/tests/utils/testapp/gen-ust-nevents/gen-ust-nevents.c b/tests/utils/testapp/gen-ust-nevents/gen-ust-nevents.c index abbc72e12..ec71023de 100644 --- a/tests/utils/testapp/gen-ust-nevents/gen-ust-nevents.c +++ b/tests/utils/testapp/gen-ust-nevents/gen-ust-nevents.c @@ -27,6 +27,8 @@ static struct option long_options[] = /* These options set a flag. */ {"iter", required_argument, 0, 'i'}, {"wait", required_argument, 0, 'w'}, + {"create-in-main", required_argument, 0, 'm'}, + {"wait-before-first-event", required_argument, 0, 'b'}, {0, 0, 0, 0} }; @@ -39,10 +41,18 @@ int main(int argc, char **argv) float flt = 2222.0; unsigned int nr_iter = 100; useconds_t nr_usec = 0; + char *wait_before_first_event_file_path = NULL; + char *create_in_main_file_path = NULL; - while ((option = getopt_long(argc, argv, "i:w:", + while ((option = getopt_long(argc, argv, "i:w:b:m:", long_options, &option_index)) != -1) { switch (option) { + case 'b': + wait_before_first_event_file_path = strdup(optarg); + break; + case 'm': + create_in_main_file_path = strdup(optarg); + break; case 'i': nr_iter = atoi(optarg); break; @@ -62,6 +72,23 @@ int main(int argc, char **argv) goto end; } + /* + * The two following sync points allow for tests to do work after the + * app has started BUT before it generates any events. + */ + if (create_in_main_file_path) { + ret = create_file(create_in_main_file_path); + if (ret != 0) { + goto end; + } + } + + if (wait_before_first_event_file_path) { + ret = wait_on_file(wait_before_first_event_file_path); + if (ret != 0) { + goto end; + } + } for (i = 0; i < nr_iter; i++) { netint = htonl(i); @@ -87,5 +114,7 @@ int main(int argc, char **argv) } end: - exit(!ret ? EXIT_SUCCESS : EXIT_FAILURE); + free(create_in_main_file_path); + free(wait_before_first_event_file_path); + exit(!ret ? EXIT_SUCCESS : EXIT_FAILURE); }