Tests: `gen-ust-nevents`: add syncpoints
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Tue, 5 May 2020 16:19:13 +0000 (12:19 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 19 May 2020 19:28:01 +0000 (15:28 -0400)
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 <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: Id501c8b373e1a9b43aad6caef11672fe6c30a55a

tests/utils/testapp/gen-ust-nevents/gen-ust-nevents.c

index abbc72e1285037f5edc8d1b8e78b83d04bd775e8..ec71023de4d872632d59aef98d1f14037bc854bc 100644 (file)
@@ -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);
 }
This page took 0.026991 seconds and 4 git commands to generate.