Rename the "metadata regenerate" command to "regenerate metadata"
authorJulien Desfossez <jdesfossez@efficios.com>
Tue, 5 Jul 2016 14:54:33 +0000 (10:54 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 6 Jul 2016 18:25:44 +0000 (14:25 -0400)
Prepare the deprecation of the "metadata regenerate" command since we
need to regenerate the statedump as well, so it is more convenient to
have one command to regenerate various session's attributes.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
32 files changed:
configure.ac
doc/man/Makefile.am
doc/man/lttng-metadata.1.txt
doc/man/lttng-regenerate.1.txt [new file with mode: 0644]
include/lttng/lttng.h
src/bin/lttng-sessiond/cmd.c
src/bin/lttng-sessiond/cmd.h
src/bin/lttng-sessiond/main.c
src/bin/lttng/Makefile.am
src/bin/lttng/command.h
src/bin/lttng/commands/metadata.c
src/bin/lttng/commands/regenerate.c [new file with mode: 0644]
src/bin/lttng/lttng.c
src/common/kernel-ctl/kernel-ctl.c
src/common/kernel-ctl/kernel-ctl.h
src/common/mi-lttng.c
src/common/mi-lttng.h
src/common/sessiond-comm/sessiond-comm.h
src/lib/lttng-ctl/lttng-ctl.c
tests/destructive/metadata-regeneration
tests/fast_regression
tests/regression/Makefile.am
tests/regression/tools/Makefile.am
tests/regression/tools/metadata-regen/Makefile.am [deleted file]
tests/regression/tools/metadata-regen/test_kernel [deleted file]
tests/regression/tools/metadata-regen/test_ust [deleted file]
tests/regression/tools/mi/test_mi
tests/regression/tools/regen-metadata/Makefile.am [new file with mode: 0644]
tests/regression/tools/regen-metadata/test_kernel [new file with mode: 0755]
tests/regression/tools/regen-metadata/test_ust [new file with mode: 0755]
tests/root_regression
tests/utils/utils.sh

index fb2b0136f0dd0d5b0345783e26778e26383f5ea7..89a78587590acca91096adf179f2dd350294f4f1 100644 (file)
@@ -980,7 +980,7 @@ AC_CONFIG_FILES([
        tests/regression/tools/mi/Makefile
        tests/regression/tools/wildcard/Makefile
        tests/regression/tools/crash/Makefile
-       tests/regression/tools/metadata-regen/Makefile
+       tests/regression/tools/regen-metadata/Makefile
        tests/regression/ust/Makefile
        tests/regression/ust/nprocesses/Makefile
        tests/regression/ust/high-throughput/Makefile
index 1090f1ac11a910904c91129c197af7f8bbcc3310..f75db6ed4c46ac1e5a06cb70390317248b552903 100644 (file)
@@ -30,7 +30,8 @@ MAN1_NAMES = \
        lttng-enable-event \
        lttng-disable-event \
        lttng-crash \
-       lttng-metadata
+       lttng-metadata \
+       lttng-regenerate
 MAN3_NAMES =
 MAN8_NAMES = lttng-sessiond lttng-relayd
 MAN1_NO_ASCIIDOC_NAMES =
index 0fa240edea998f2e17a9c3af1f109d94541dc60e..53489163223ed6fa59fe4c56bf3d2020e230d9d4 100644 (file)
@@ -15,21 +15,8 @@ SYNOPSIS
 
 DESCRIPTION
 -----------
-The `lttng metadata` command manages a tracing session's metadata
-generation options.
-
-As of this version, only the `regenerate` command's action is available.
-Regenerating a tracing session's metadata can be used to
-resample the offset between the system's monotonic clock and
-the wall-clock time.
-
-This command is meant to be used to resample the wall-clock time
-following a major
-link:https://en.wikipedia.org/wiki/Network_Time_Protocol[NTP]
-correction. As such, a system booting with an incorrect wall time can be
-traced before its wall time is NTP-corrected. Regenerating the tracing
-session's metadata ensures that trace viewers can accurately determine
-the events time relative to Unix Epoch.
+WARNING: This command is **deprecated**; it has been replaced by the *lttng
+regenerate metadata* command (see man:lttng-regenerate(1)).
 
 
 include::common-cmd-options-head.txt[]
diff --git a/doc/man/lttng-regenerate.1.txt b/doc/man/lttng-regenerate.1.txt
new file mode 100644 (file)
index 0000000..dbbfa4d
--- /dev/null
@@ -0,0 +1,63 @@
+lttng-regenerate(1)
+=================
+
+
+NAME
+----
+lttng-regenerate - Manage an LTTng tracing session's data regeneration
+
+
+SYNOPSIS
+--------
+Regenerate the metadata of a session
+
+[verse]
+*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *regenerate metadata* [option:--session='SESSION']
+
+DESCRIPTION
+-----------
+The `lttng regenerate` command manages a tracing session's data regeneration
+options.
+
+As of this version, only the `metadata` command's action is available.
+Regenerating a tracing session's metadata can be used to
+resample the offset between the system's monotonic clock and
+the wall-clock time.
+
+This command is meant to be used to resample the wall-clock time
+following a major
+link:https://en.wikipedia.org/wiki/Network_Time_Protocol[NTP]
+correction. As such, a system booting with an incorrect wall time can be
+traced before its wall time is NTP-corrected. Regenerating the tracing
+session's metadata ensures that trace viewers can accurately determine
+the events time relative to Unix Epoch.
+
+
+include::common-cmd-options-head.txt[]
+
+
+option:-s, option:--session='SESSION'::
+    Manage the metadata generation of the tracing session named 'SESSION'
+    instead of the current tracing session.
+
+
+include::common-cmd-help-options.txt[]
+
+
+LIMITATIONS
+-----------
+The `lttng regenerate metadata` command can only be used on kernel and
+user space tracing sessions (using per-user buffering), in non-live
+mode.
+
+See man:lttng-enable-channel(1) for more information about
+buffering schemes and man:lttng-create(1) for more information
+about the different tracing session modes.
+
+
+include::common-cmd-footer.txt[]
+
+
+SEE ALSO
+--------
+man:lttng(1)
index 2088864d254e9cb16b42ab31649ebf4603a1db81..09aa969f57f87345d34a43aa27366e717fab5c54 100644 (file)
@@ -159,13 +159,19 @@ extern int lttng_set_consumer_url(struct lttng_handle *handle,
  */
 extern int lttng_data_pending(const char *session_name);
 
+/*
+ * Deprecated, replaced by lttng_regenerate_metadata.
+ */
+LTTNG_DEPRECATED()
+extern int lttng_metadata_regenerate(const char *session_name);
+
 /*
  * Trigger the regeneration of the metadata for a session.
  * The new metadata overwrite the previous one locally or remotely (through
  * the lttng-relayd). Only kernel, per-uid and non-live sessions are supported.
  * Return 0 on success, a negative LTTng error code on error.
  */
-extern int lttng_metadata_regenerate(const char *session_name);
+extern int lttng_regenerate_metadata(const char *session_name);
 
 #ifdef __cplusplus
 }
index c74da94f4cc8ab8ebcbdcccb91fe72f37a125615..bd63389ee94b510986c545644017607a35106152 100644 (file)
@@ -3397,7 +3397,7 @@ error:
  * Return 0 if the metadata can be generated, a LTTNG_ERR code otherwise.
  */
 static
-int check_metadata_regenerate_support(struct ltt_session *session)
+int check_regenerate_metadata_support(struct ltt_session *session)
 {
        int ret;
 
@@ -3436,7 +3436,7 @@ end:
 }
 
 static
-int ust_metadata_regenerate(struct ltt_ust_session *usess)
+int ust_regenerate_metadata(struct ltt_ust_session *usess)
 {
        int ret = 0;
        struct buffer_reg_uid *uid_reg = NULL;
@@ -3497,7 +3497,7 @@ end:
 }
 
 /*
- * Command LTTNG_METADATA_REGENERATE from the lttng-ctl library.
+ * Command LTTNG_REGENERATE_METADATA from the lttng-ctl library.
  *
  * Ask the consumer to truncate the existing metadata file(s) and
  * then regenerate the metadata. Live and per-pid sessions are not
@@ -3505,19 +3505,19 @@ end:
  *
  * Return 0 on success or else a LTTNG_ERR code.
  */
-int cmd_metadata_regenerate(struct ltt_session *session)
+int cmd_regenerate_metadata(struct ltt_session *session)
 {
        int ret;
 
        assert(session);
 
-       ret = check_metadata_regenerate_support(session);
+       ret = check_regenerate_metadata_support(session);
        if (ret) {
                goto end;
        }
 
        if (session->kernel_session) {
-               ret = kernctl_session_metadata_regenerate(
+               ret = kernctl_session_regenerate_metadata(
                                session->kernel_session->fd);
                if (ret < 0) {
                        ERR("Failed to regenerate the kernel metadata");
@@ -3526,7 +3526,7 @@ int cmd_metadata_regenerate(struct ltt_session *session)
        }
 
        if (session->ust_session) {
-               ret = ust_metadata_regenerate(session->ust_session);
+               ret = ust_regenerate_metadata(session->ust_session);
                if (ret < 0) {
                        ERR("Failed to regenerate the UST metadata");
                        goto end;
@@ -3539,7 +3539,6 @@ end:
        return ret;
 }
 
-
 /*
  * Send relayd sockets from snapshot output to consumer. Ignore request if the
  * snapshot output is *not* set with a remote destination.
index a220e3a457c3320fd2db4f1774ea6c0edc512384..320d717a39e28da651ea1d8a1bea8f5ce431237e 100644 (file)
@@ -110,6 +110,6 @@ int cmd_snapshot_record(struct ltt_session *session,
 
 int cmd_set_session_shm_path(struct ltt_session *session,
                const char *shm_path);
-int cmd_metadata_regenerate(struct ltt_session *session);
+int cmd_regenerate_metadata(struct ltt_session *session);
 
 #endif /* CMD_H */
index f47f73e0f2d3128bc8d95898eebc80ad7b1a901e..afd0cc6e14f3cdf5d9ff6793ad4c0d60b917adcc 100644 (file)
@@ -3004,7 +3004,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx, int sock,
        case LTTNG_SNAPSHOT_RECORD:
        case LTTNG_SAVE_SESSION:
        case LTTNG_SET_SESSION_SHM_PATH:
-       case LTTNG_METADATA_REGENERATE:
+       case LTTNG_REGENERATE_METADATA:
                need_domain = 0;
                break;
        default:
@@ -4115,9 +4115,9 @@ error_add_context:
                                cmd_ctx->lsm->u.set_shm_path.shm_path);
                break;
        }
-       case LTTNG_METADATA_REGENERATE:
+       case LTTNG_REGENERATE_METADATA:
        {
-               ret = cmd_metadata_regenerate(cmd_ctx->session);
+               ret = cmd_regenerate_metadata(cmd_ctx->session);
                break;
        }
        default:
index b911f334c7bc39f1012711256884bd8d59101fc9..acd973b255b3898ac2d15025cf6d03eef446f4f0 100644 (file)
@@ -18,6 +18,7 @@ lttng_SOURCES = command.h conf.c conf.h commands/start.c \
                                commands/track-untrack.c \
                                commands/status.c \
                                commands/metadata.c \
+                               commands/regenerate.c \
                                commands/help.c \
                                utils.c utils.h lttng.c
 
index 72cf4e0ff0334ab5add1bf629b0b6aec4f3b8992..3ac61e1e4fd8914e7244094ff630423e201490f7 100644 (file)
@@ -76,6 +76,7 @@ DECL_COMMAND(load);
 DECL_COMMAND(track);
 DECL_COMMAND(untrack);
 DECL_COMMAND(metadata);
+DECL_COMMAND(regenerate);
 
 extern int cmd_help(int argc, const char **argv,
                const struct cmd_struct commands[]);
index f6a821af3d30c4f72b320d6837f47ad7b3eaf128..08d6e5894cdf8366b215329789e03616cd75d944 100644 (file)
@@ -79,7 +79,7 @@ static int metadata_regenerate(int argc, const char **argv)
                ret = -LTTNG_ERR_INVALID;
                goto end;
        }
-       ret = lttng_metadata_regenerate(session_name);
+       ret = lttng_regenerate_metadata(session_name);
        if (ret == 0) {
                MSG("Metadata successfully regenerated for session %s", session_name);
        }
diff --git a/src/bin/lttng/commands/regenerate.c b/src/bin/lttng/commands/regenerate.c
new file mode 100644 (file)
index 0000000..c64d8fe
--- /dev/null
@@ -0,0 +1,266 @@
+/*
+ * Copyright (C) 2015 - Julien Desfossez <jdesfossez@efficios.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2 only,
+ * as published by the Free Software Foundation.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#define _LGPL_SOURCE
+#include <assert.h>
+#include <ctype.h>
+#include <popt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <common/mi-lttng.h>
+
+#include "../command.h"
+
+static char *opt_session_name;
+static char *session_name = NULL;
+
+static int regenerate_metadata(int argc, const char **argv);
+
+enum {
+       OPT_HELP = 1,
+       OPT_LIST_OPTIONS,
+       OPT_LIST_COMMANDS,
+};
+
+static struct mi_writer *writer;
+
+static struct poptOption long_options[] = {
+       /* { longName, shortName, argInfo, argPtr, value, descrip, argDesc, } */
+       { "help",               'h', POPT_ARG_NONE, 0, OPT_HELP, 0, 0, },
+       { "session",            's', POPT_ARG_STRING, &opt_session_name, 0, 0, 0},
+       { "list-options",       0, POPT_ARG_NONE, NULL, OPT_LIST_OPTIONS, 0, 0, },
+       { "list-commands",      0, POPT_ARG_NONE, NULL, OPT_LIST_COMMANDS},
+       { 0, 0, 0, 0, 0, 0, 0, },
+};
+
+static struct cmd_struct actions[] = {
+       { "metadata", regenerate_metadata },
+       { NULL, NULL }  /* Array closure */
+};
+
+/*
+ * Count and return the number of arguments in argv.
+ */
+static int count_arguments(const char **argv)
+{
+       int i = 0;
+
+       assert(argv);
+
+       while (argv[i] != NULL) {
+               i++;
+       }
+
+       return i;
+}
+
+static int regenerate_metadata(int argc, const char **argv)
+{
+       int ret;
+
+       if (argc > 1) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+       ret = lttng_regenerate_metadata(session_name);
+       if (ret == 0) {
+               MSG("Metadata successfully regenerated for session %s", session_name);
+       }
+
+end:
+       return ret;
+}
+
+static int handle_command(const char **argv)
+{
+       struct cmd_struct *cmd;
+       int ret = CMD_SUCCESS, i = 0, argc, command_ret = CMD_SUCCESS;
+
+       if (argv == NULL) {
+               ERR("argv is null");
+               command_ret = CMD_ERROR;
+               goto end;
+       }
+
+       argc = count_arguments(argv);
+
+       cmd = &actions[i];
+       while (cmd->func != NULL) {
+               /* Find command */
+               if (strcmp(argv[0], cmd->name) == 0) {
+                       if (lttng_opt_mi) {
+                               /* Action element */
+                               ret = mi_lttng_writer_open_element(writer,
+                                               mi_lttng_element_command_regenerate_action);
+                               if (ret) {
+                                       ret = CMD_ERROR;
+                                       goto end;
+                               }
+
+                               /* Name of the action */
+                               ret = mi_lttng_writer_write_element_string(writer,
+                                               config_element_name, argv[0]);
+                               if (ret) {
+                                       ret = CMD_ERROR;
+                                       goto end;
+                               }
+                       }
+                       command_ret = cmd->func(argc, argv);
+                       if (lttng_opt_mi) {
+                               /* Close output and action element */
+                               ret = mi_lttng_writer_close_element(writer);
+                               if (ret) {
+                                       ret = CMD_ERROR;
+                                       goto end;
+                               }
+                       }
+                       goto end;
+               }
+
+               cmd = &actions[i++];
+       }
+
+       ret = CMD_UNDEFINED;
+
+end:
+       /* Overwrite ret if an error occurred in cmd->func() */
+       ret = command_ret ? command_ret : ret;
+       return ret;
+}
+
+/*
+ * regenerate command handling.
+ */
+int cmd_regenerate(int argc, const char **argv)
+{
+       int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1;
+       static poptContext pc;
+
+       if (argc < 1) {
+               SHOW_HELP();
+               ret = CMD_ERROR;
+               goto end;
+       }
+
+       pc = poptGetContext(NULL, argc, argv, long_options, 0);
+       poptReadDefaultConfig(pc, 0);
+
+       if (lttng_opt_mi) {
+               writer = mi_lttng_writer_create(fileno(stdout), lttng_opt_mi);
+               if (!writer) {
+                       ret = -LTTNG_ERR_NOMEM;
+                       goto end;
+               }
+               /* Open command element */
+               ret = mi_lttng_writer_command_open(writer,
+                               mi_lttng_element_command_regenerate);
+               if (ret) {
+                       ret = CMD_ERROR;
+                       goto end;
+               }
+
+               /* Open output element */
+               ret = mi_lttng_writer_open_element(writer,
+                               mi_lttng_element_command_output);
+               if (ret) {
+                       ret = CMD_ERROR;
+                       goto end;
+               }
+       }
+
+       while ((opt = poptGetNextOpt(pc)) != -1) {
+               switch (opt) {
+               case OPT_HELP:
+                       SHOW_HELP();
+                       goto end;
+               case OPT_LIST_OPTIONS:
+                       list_cmd_options(stdout, long_options);
+                       goto end;
+               case OPT_LIST_COMMANDS:
+                       list_commands(actions, stdout);
+                       goto end;
+               default:
+                       SHOW_HELP();
+                       ret = CMD_UNDEFINED;
+                       goto end;
+               }
+       }
+
+       if (!opt_session_name) {
+               session_name = get_session_name();
+               if (session_name == NULL) {
+                       ret = CMD_ERROR;
+                       goto end;
+               }
+       } else {
+               session_name = opt_session_name;
+       }
+
+       command_ret = handle_command(poptGetArgs(pc));
+       if (command_ret) {
+               switch (-command_ret) {
+               default:
+                       ERR("%s", lttng_strerror(command_ret));
+                       success = 0;
+                       break;
+               }
+       }
+
+       if (lttng_opt_mi) {
+               /* Close output element */
+               ret = mi_lttng_writer_close_element(writer);
+               if (ret) {
+                       ret = CMD_ERROR;
+                       goto end;
+               }
+
+               /* Success ? */
+               ret = mi_lttng_writer_write_element_bool(writer,
+                               mi_lttng_element_command_success, success);
+               if (ret) {
+                       ret = CMD_ERROR;
+                       goto end;
+               }
+
+               /* Command element close */
+               ret = mi_lttng_writer_command_close(writer);
+               if (ret) {
+                       ret = CMD_ERROR;
+                       goto end;
+               }
+       }
+
+end:
+       /* Mi clean-up */
+       if (writer && mi_lttng_writer_destroy(writer)) {
+               /* Preserve original error code */
+               ret = ret ? ret : -LTTNG_ERR_MI_IO_FAIL;
+       }
+
+       if (!opt_session_name) {
+               free(session_name);
+       }
+
+       /* Overwrite ret if an error occurred during handle_command() */
+       ret = command_ret ? command_ret : ret;
+
+       poptFreeContext(pc);
+       return ret;
+}
index 987a9dda352c4520eeee4815cc3bd4eee0ab6728..34816be561afcc5f8b431d124383b786aec6fcc8 100644 (file)
@@ -88,6 +88,7 @@ static struct cmd_struct commands[] =  {
        { "help", NULL},
        { "version", cmd_version},
        { "view", cmd_view},
+       { "regenerate", cmd_regenerate},
        { NULL, NULL}   /* Array closure */
 };
 
index 3d12df4177db3f686dc482562fab286473efd487..e1de0e71561fd891b6f363b93ffb47cd55ee714f 100644 (file)
@@ -225,7 +225,7 @@ int kernctl_list_tracker_pids(int fd)
        return LTTNG_IOCTL_NO_CHECK(fd, LTTNG_KERNEL_SESSION_LIST_TRACKER_PIDS);
 }
 
-int kernctl_session_metadata_regenerate(int fd)
+int kernctl_session_regenerate_metadata(int fd)
 {
        return LTTNG_IOCTL_CHECK(fd, LTTNG_KERNEL_SESSION_METADATA_REGEN);
 }
index 6736937d0dbbb987bb8c4bc011e01388fef464a9..f30e6f3b42415416e83c1d63d21c0bb79f37022f 100644 (file)
@@ -65,7 +65,7 @@ int kernctl_track_pid(int fd, int pid);
 int kernctl_untrack_pid(int fd, int pid);
 int kernctl_list_tracker_pids(int fd);
 
-int kernctl_session_metadata_regenerate(int fd);
+int kernctl_session_regenerate_metadata(int fd);
 
 /* Buffer operations */
 
index 109fb418a7b03a98ce705df8dfb29509bb1888c3..57678c1b8dbbab1b3d00e3d8a07d4ead219784d3 100644 (file)
@@ -58,6 +58,8 @@ const char * const mi_lttng_element_command_list = "list";
 const char * const mi_lttng_element_command_load = "load";
 LTTNG_HIDDEN const char * const mi_lttng_element_command_metadata = "metadata";
 LTTNG_HIDDEN const char * const mi_lttng_element_command_metadata_action = "metadata_action";
+LTTNG_HIDDEN const char * const mi_lttng_element_command_regenerate = "regenerate";
+LTTNG_HIDDEN const char * const mi_lttng_element_command_regenerate_action = "regenerate_action";
 const char * const mi_lttng_element_command_name = "name";
 const char * const mi_lttng_element_command_output = "output";
 const char * const mi_lttng_element_command_save = "save";
index 585818dae4387b5698dde31af7d5d0355a0c1094..cf5f468f71a92a4c368da541ab36ce65f5587bdb 100644 (file)
@@ -64,6 +64,8 @@ extern const char * const mi_lttng_element_command_list;
 extern const char * const mi_lttng_element_command_load;
 extern const char * const mi_lttng_element_command_metadata;
 extern const char * const mi_lttng_element_command_metadata_action;
+extern const char * const mi_lttng_element_command_regenerate;
+extern const char * const mi_lttng_element_command_regenerate_action;
 extern const char * const mi_lttng_element_command_name;
 extern const char * const mi_lttng_element_command_output;
 extern const char * const mi_lttng_element_command_save;
index 09838655b6f64f3deb749d92e0c7ba185491cf4a..29740c1d0061af15cac53b672df22375baaa3e90 100644 (file)
@@ -94,7 +94,7 @@ enum lttcomm_sessiond_command {
        LTTNG_UNTRACK_PID                   = 33,
        LTTNG_LIST_TRACKER_PIDS             = 34,
        LTTNG_SET_SESSION_SHM_PATH          = 40,
-       LTTNG_METADATA_REGENERATE           = 41,
+       LTTNG_REGENERATE_METADATA           = 41,
 };
 
 enum lttcomm_relayd_command {
@@ -526,7 +526,7 @@ struct lttcomm_consumer_msg {
                } LTTNG_PACKED lost_packets;
                struct {
                        uint64_t session_id;
-               } LTTNG_PACKED metadata_regenerate;
+               } LTTNG_PACKED regenerate_metadata;
        } u;
 } LTTNG_PACKED;
 
index 0ae6b0b6eb2cd2db217809a4d7ec2f9fecff52d9..8c78e1c199d4a8837b882e573262dad69748bdca 100644 (file)
@@ -2384,7 +2384,7 @@ int lttng_list_tracker_pids(struct lttng_handle *handle,
  * Regenerate the metadata for a session.
  * Return 0 on success, a negative error code on error.
  */
-int lttng_metadata_regenerate(const char *session_name)
+int lttng_regenerate_metadata(const char *session_name)
 {
        int ret;
        struct lttcomm_session_msg lsm;
@@ -2395,7 +2395,7 @@ int lttng_metadata_regenerate(const char *session_name)
        }
 
        memset(&lsm, 0, sizeof(lsm));
-       lsm.cmd_type = LTTNG_METADATA_REGENERATE;
+       lsm.cmd_type = LTTNG_REGENERATE_METADATA;
 
        lttng_ctl_copy_string(lsm.session.name, session_name,
                        sizeof(lsm.session.name));
@@ -2410,6 +2410,14 @@ end:
        return ret;
 }
 
+/*
+ * Deprecated, replaced by lttng_regenerate_metadata.
+ */
+int lttng_metadata_regenerate(const char *session_name)
+{
+       return lttng_regenerate_metadata(session_name);
+}
+
 /*
  * lib constructor.
  */
index 32469b5b4390e0d57cd530ab0cacbfb17a6238bb..d4e632a1198d70894b47b7126acaf81535456e2e 100755 (executable)
@@ -89,7 +89,7 @@ function test_kernel_local ()
        validate_trace_date $DATE1 $TRACE_PATH
        start_lttng_tracing_ok $SESSION_NAME
        date "+%Y-%m-%d %H:%M" -s "$DATE2 $HOUR" >/dev/null
-       metadata_regenerate_ok $SESSION_NAME
+       regenerate_metadata_ok $SESSION_NAME
        stop_lttng_tracing_ok $SESSION_NAME
        validate_trace_date $DATE2 $TRACE_PATH
        if [ $? -eq 0 ]; then
@@ -111,7 +111,7 @@ function test_kernel_streaming ()
        validate_trace_date $DATE1 $TRACE_PATH/$HOSTNAME/$SESSION_NAME*
        start_lttng_tracing_ok $SESSION_NAME
        date "+%Y-%m-%d %H:%M" -s "$DATE2 $HOUR" >/dev/null
-       metadata_regenerate_ok $SESSION_NAME
+       regenerate_metadata_ok $SESSION_NAME
        stop_lttng_tracing_ok $SESSION_NAME
        # Validate test
        validate_trace_date $DATE2 $TRACE_PATH/$HOSTNAME/$SESSION_NAME*
@@ -147,7 +147,7 @@ function test_ust_local ()
 
        start_lttng_tracing_ok $SESSION_NAME
        date "+%Y-%m-%d %H:%M" -s "$DATE2 $HOUR" >/dev/null
-       metadata_regenerate_ok $SESSION_NAME
+       regenerate_metadata_ok $SESSION_NAME
 
        stop_lttng_tracing_ok $SESSION_NAME
        destroy_lttng_session_ok $SESSION_NAME
@@ -184,7 +184,7 @@ function test_ust_streaming ()
        start_lttng_tracing_ok $SESSION_NAME
        date "+%Y-%m-%d %H:%M" -s "$DATE2 $HOUR" >/dev/null
 
-       metadata_regenerate_ok $SESSION_NAME
+       regenerate_metadata_ok $SESSION_NAME
 
        stop_lttng_tracing_ok $SESSION_NAME
        destroy_lttng_session_ok $SESSION_NAME
index 0c4f07925865724290cfc409d89026d9dc3813c0..262c846aae2a7e95606d4355e45eaf712568840c 100644 (file)
@@ -16,7 +16,7 @@ regression/tools/save-load/test_load
 regression/tools/mi/test_mi
 regression/tools/wildcard/test_event_wildcard
 regression/tools/crash/test_crash
-regression/tools/metadata-regen/test_ust
+regression/tools/regen-metadata/test_ust
 regression/ust/before-after/test_before_after
 regression/ust/buffers-pid/test_buffers_pid
 regression/ust/multi-session/test_multi_session
index 6a2d24c7bf3cab9b2a57bf1c58f33e9e1d3fb05e..2297ea1e3696b4ffcff968a35c12c2410b587ec2 100644 (file)
@@ -22,7 +22,7 @@ TESTS = tools/filtering/test_invalid_filter \
        tools/mi/test_mi \
        tools/wildcard/test_event_wildcard \
        tools/crash/test_crash \
-       tools/metadata-regen/test_ust
+       tools/regen-metadata/test_ust
 
 if HAVE_LIBLTTNG_UST_CTL
 SUBDIRS += ust
index 6c39c9f18c68c5f783177bac2e04f8e745c0927f..91820ada42471e5503c6c7da3d982c2d0024c849 100644 (file)
@@ -1,2 +1,2 @@
 SUBDIRS = streaming filtering health tracefile-limits snapshots live exclusion save-load mi \
-               wildcard crash metadata-regen
+               wildcard crash regen-metadata
diff --git a/tests/regression/tools/metadata-regen/Makefile.am b/tests/regression/tools/metadata-regen/Makefile.am
deleted file mode 100644 (file)
index d4a92eb..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-noinst_SCRIPTS = test_ust test_kernel
-EXTRA_DIST = test_ust test_kernel
-
-all-local:
-       @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
-               for script in $(EXTRA_DIST); do \
-                       cp -f $(srcdir)/$$script $(builddir); \
-               done; \
-       fi
-
-clean-local:
-       @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
-               for script in $(EXTRA_DIST); do \
-                       rm -f $(builddir)/$$script; \
-               done; \
-       fi
diff --git a/tests/regression/tools/metadata-regen/test_kernel b/tests/regression/tools/metadata-regen/test_kernel
deleted file mode 100755 (executable)
index fb9940a..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) - 2015 Julien Desfossez <jdesfossez@efficios.com>
-#
-# 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
-TEST_DESC="Streaming - Kernel tracing"
-
-CURDIR=$(dirname $0)/
-TESTDIR=$CURDIR/../../..
-EVENT_NAME="lttng_test_filter_event"
-PID_RELAYD=0
-SESSION_NAME=""
-
-TRACE_PATH=$(mktemp -d)
-
-NUM_TESTS=18
-
-source $TESTDIR/utils/utils.sh
-
-# LTTng kernel modules check
-out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
-if [ -z "$out" ]; then
-       BAIL_OUT "LTTng modules not detected."
-fi
-
-function lttng_create_session_uri
-{
-       # Create session with default path
-       $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $SESSION_NAME -U net://localhost >/dev/null 2>&1
-
-       ok $? "Create session $SESSION_NAME"
-}
-
-function test_kernel_streaming ()
-{
-       diag "Test kernel streaming with metadata regeneration"
-       lttng_create_session_uri
-       lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME
-       start_lttng_tracing_ok $SESSION_NAME
-       echo -n "100" > /proc/lttng-test-filter-event
-       metadata_regenerate_ok $SESSION_NAME
-       stop_lttng_tracing_ok $SESSION_NAME
-       # Validate test
-       validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*
-       if [ $? -eq 0 ]; then
-               # Only delete if successful
-               rm -rf $TRACE_PATH
-       else
-               break
-       fi
-       destroy_lttng_session_ok $SESSION_NAME
-}
-
-function test_kernel_local ()
-{
-       diag "Test kernel local with metadata regeneration"
-       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
-       lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME
-       start_lttng_tracing_ok $SESSION_NAME
-       echo -n "100" > /proc/lttng-test-filter-event
-       metadata_regenerate_ok $SESSION_NAME
-       stop_lttng_tracing_ok $SESSION_NAME
-       validate_trace $EVENT_NAME $TRACE_PATH
-       if [ $? -eq 0 ]; then
-               # Only delete if successful
-               rm -rf $TRACE_PATH
-       fi
-       destroy_lttng_session_ok $SESSION_NAME
-}
-
-plan_tests $NUM_TESTS
-
-print_test_banner "$TEST_DESC"
-
-if [ "$(id -u)" == "0" ]; then
-       isroot=1
-else
-       isroot=0
-fi
-
-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
-{
-       start_lttng_relayd "-o $TRACE_PATH"
-       start_lttng_sessiond
-       modprobe lttng-test
-
-       tests=( test_kernel_streaming test_kernel_local )
-
-       for fct_test in ${tests[@]};
-       do
-               SESSION_NAME=$(randstring 16 0)
-               ${fct_test}
-       done
-
-       rmmod lttng-test
-       stop_lttng_sessiond
-       stop_lttng_relayd
-}
diff --git a/tests/regression/tools/metadata-regen/test_ust b/tests/regression/tools/metadata-regen/test_ust
deleted file mode 100755 (executable)
index fe6ffd8..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) - 2015 Julien Desfossez <jdesfossez@efficios.com>
-#
-# 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
-TEST_DESC="Streaming - User space tracing"
-
-CURDIR=$(dirname $0)/
-TESTDIR=$CURDIR/../../..
-NR_ITER=1
-NR_USEC_WAIT=0
-TESTAPP_PATH="$TESTDIR/utils/testapp"
-TESTAPP_NAME="gen-ust-events"
-TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
-SESSION_NAME="stream"
-EVENT_NAME="tp:tptest"
-PID_RELAYD=0
-
-TRACE_PATH=$(mktemp -d)
-
-NUM_TESTS=33
-
-source $TESTDIR/utils/utils.sh
-
-if [ ! -x "$TESTAPP_BIN" ]; then
-       BAIL_OUT "No UST events binary detected."
-fi
-
-function lttng_create_session_uri
-{
-       # Create session with default path
-       $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $SESSION_NAME -U net://localhost >/dev/null 2>&1
-       ok $? "Create session with default path"
-}
-
-function lttng_create_session_uri_live
-{
-       # Create session with default path
-       $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $SESSION_NAME --live -U net://localhost >/dev/null 2>&1
-       ok $? "Create live session"
-}
-
-function enable_channel_per_pid()
-{
-       sess_name=$1
-       channel_name=$2
-
-       $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-pid -u $channel_name -s $sess_name >/dev/null 2>&1
-       ok $? "Enable channel $channel_name per PID for session $sess_name"
-}
-
-# MUST set TESTDIR before calling those functions
-
-function test_ust_streaming ()
-{
-       local file_sync_after_first=$(mktemp -u)
-       local file_sync_before_last=$(mktemp -u)
-
-       diag "Test UST streaming with metadata regeneration"
-       lttng_create_session_uri
-       enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
-
-       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
-
-       start_lttng_tracing_ok $SESSION_NAME
-
-       touch ${file_sync_before_last}
-
-       # Wait for the applications started in background
-       wait
-       metadata_regenerate_ok $SESSION_NAME
-
-       stop_lttng_tracing_ok $SESSION_NAME
-       destroy_lttng_session_ok $SESSION_NAME
-       # Validate test
-       validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*
-       if [ $? -eq 0 ]; then
-               # Only delete if successful
-               rm -rf $TRACE_PATH
-       fi
-       rm -f ${file_sync_after_first}
-       rm -f ${file_sync_before_last}
-}
-
-function test_ust_local ()
-{
-       local file_sync_after_first=$(mktemp -u)
-       local file_sync_before_last=$(mktemp -u)
-
-       diag "Test UST local with metadata regeneration"
-       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
-       enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
-
-       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
-
-       start_lttng_tracing_ok $SESSION_NAME
-
-       touch ${file_sync_before_last}
-
-       # Wait for the applications started in background
-       wait
-       metadata_regenerate_ok $SESSION_NAME
-
-       stop_lttng_tracing_ok $SESSION_NAME
-       destroy_lttng_session_ok $SESSION_NAME
-       # Validate test
-       validate_trace $EVENT_NAME $TRACE_PATH
-       if [ $? -eq 0 ]; then
-               # Only delete if successful
-               rm -rf $TRACE_PATH
-       fi
-       rm -f ${file_sync_after_first}
-       rm -f ${file_sync_before_last}
-}
-
-function test_ust_pid ()
-{
-       local file_sync_after_first=$(mktemp -u)
-       local file_sync_before_last=$(mktemp -u)
-
-       diag "Test UST per-pid with metadata regeneration (expect failure)"
-       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
-       enable_channel_per_pid $SESSION_NAME "channel0"
-       enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0"
-
-       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
-
-       start_lttng_tracing_ok $SESSION_NAME
-
-       touch ${file_sync_before_last}
-
-       # Wait for the applications started in background
-       wait
-       metadata_regenerate_fail $SESSION_NAME
-
-       stop_lttng_tracing_ok $SESSION_NAME
-       destroy_lttng_session_ok $SESSION_NAME
-       # Validate test
-       validate_trace $EVENT_NAME $TRACE_PATH
-       if [ $? -eq 0 ]; then
-               # Only delete if successful
-               rm -rf $TRACE_PATH
-       fi
-       rm -f ${file_sync_after_first}
-       rm -f ${file_sync_before_last}
-}
-
-function test_ust_live ()
-{
-       local file_sync_after_first=$(mktemp -u)
-       local file_sync_before_last=$(mktemp -u)
-
-       diag "Test UST live with metadata regeneration (expect failure)"
-       lttng_create_session_uri_live $SESSION_NAME $TRACE_PATH
-       enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
-
-       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
-
-       start_lttng_tracing_ok $SESSION_NAME
-
-       touch ${file_sync_before_last}
-
-       # Wait for the applications started in background
-       wait
-       metadata_regenerate_fail $SESSION_NAME
-
-       stop_lttng_tracing_ok $SESSION_NAME
-       destroy_lttng_session_ok $SESSION_NAME
-       # Validate test
-       validate_trace $EVENT_NAME $TRACE_PATH
-       if [ $? -eq 0 ]; then
-               # Only delete if successful
-               rm -rf $TRACE_PATH
-       fi
-       rm -f ${file_sync_after_first}
-       rm -f ${file_sync_before_last}
-}
-
-plan_tests $NUM_TESTS
-
-print_test_banner "$TEST_DESC"
-
-start_lttng_relayd "-o $TRACE_PATH"
-start_lttng_sessiond
-
-tests=( test_ust_streaming test_ust_local test_ust_pid test_ust_live )
-
-for fct_test in ${tests[@]};
-do
-       SESSION_NAME=$(randstring 16 0)
-       ${fct_test}
-done
-
-stop_lttng_sessiond
-stop_lttng_relayd
-
-exit $out
index 0e8fa672fc00f6e059a3296942e36f5ef68e1746..380385fa958481e5ae37db88e989e1526cb1fe93 100755 (executable)
@@ -631,9 +631,9 @@ function test_start_stop () {
        ok $? "Mi test: enabled element : $result expected: true"
 
        #Test metadata regenerate command
-       metadata_regenerate_ok $session_name
+       regenerate_metadata_ok $session_name
        $XML_VALIDATE $OUTPUT_DEST
-       ok $? "Mi test: metadata regenerate"
+       ok $? "Mi test: regenerate metadata"
 
        #Test stop command
        stop_lttng_tracing_ok $session_name
diff --git a/tests/regression/tools/regen-metadata/Makefile.am b/tests/regression/tools/regen-metadata/Makefile.am
new file mode 100644 (file)
index 0000000..d4a92eb
--- /dev/null
@@ -0,0 +1,16 @@
+noinst_SCRIPTS = test_ust test_kernel
+EXTRA_DIST = test_ust test_kernel
+
+all-local:
+       @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
+               for script in $(EXTRA_DIST); do \
+                       cp -f $(srcdir)/$$script $(builddir); \
+               done; \
+       fi
+
+clean-local:
+       @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
+               for script in $(EXTRA_DIST); do \
+                       rm -f $(builddir)/$$script; \
+               done; \
+       fi
diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel
new file mode 100755 (executable)
index 0000000..fd139ae
--- /dev/null
@@ -0,0 +1,109 @@
+#!/bin/bash
+#
+# Copyright (C) - 2015 Julien Desfossez <jdesfossez@efficios.com>
+#
+# 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
+TEST_DESC="Streaming - Kernel tracing"
+
+CURDIR=$(dirname $0)/
+TESTDIR=$CURDIR/../../..
+EVENT_NAME="lttng_test_filter_event"
+PID_RELAYD=0
+SESSION_NAME=""
+
+TRACE_PATH=$(mktemp -d)
+
+NUM_TESTS=18
+
+source $TESTDIR/utils/utils.sh
+
+# LTTng kernel modules check
+out=`ls /lib/modules/$(uname -r)/extra | grep lttng`
+if [ -z "$out" ]; then
+       BAIL_OUT "LTTng modules not detected."
+fi
+
+function lttng_create_session_uri
+{
+       # Create session with default path
+       $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $SESSION_NAME -U net://localhost >/dev/null 2>&1
+
+       ok $? "Create session $SESSION_NAME"
+}
+
+function test_kernel_streaming ()
+{
+       diag "Test kernel streaming with metadata regeneration"
+       lttng_create_session_uri
+       lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME
+       start_lttng_tracing_ok $SESSION_NAME
+       echo -n "100" > /proc/lttng-test-filter-event
+       regenerate_metadata_ok $SESSION_NAME
+       stop_lttng_tracing_ok $SESSION_NAME
+       # Validate test
+       validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*
+       if [ $? -eq 0 ]; then
+               # Only delete if successful
+               rm -rf $TRACE_PATH
+       else
+               break
+       fi
+       destroy_lttng_session_ok $SESSION_NAME
+}
+
+function test_kernel_local ()
+{
+       diag "Test kernel local with metadata regeneration"
+       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
+       lttng_enable_kernel_event $SESSION_NAME $EVENT_NAME
+       start_lttng_tracing_ok $SESSION_NAME
+       echo -n "100" > /proc/lttng-test-filter-event
+       regenerate_metadata_ok $SESSION_NAME
+       stop_lttng_tracing_ok $SESSION_NAME
+       validate_trace $EVENT_NAME $TRACE_PATH
+       if [ $? -eq 0 ]; then
+               # Only delete if successful
+               rm -rf $TRACE_PATH
+       fi
+       destroy_lttng_session_ok $SESSION_NAME
+}
+
+plan_tests $NUM_TESTS
+
+print_test_banner "$TEST_DESC"
+
+if [ "$(id -u)" == "0" ]; then
+       isroot=1
+else
+       isroot=0
+fi
+
+skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
+{
+       start_lttng_relayd "-o $TRACE_PATH"
+       start_lttng_sessiond
+       modprobe lttng-test
+
+       tests=( test_kernel_streaming test_kernel_local )
+
+       for fct_test in ${tests[@]};
+       do
+               SESSION_NAME=$(randstring 16 0)
+               ${fct_test}
+       done
+
+       rmmod lttng-test
+       stop_lttng_sessiond
+       stop_lttng_relayd
+}
diff --git a/tests/regression/tools/regen-metadata/test_ust b/tests/regression/tools/regen-metadata/test_ust
new file mode 100755 (executable)
index 0000000..b7f1af1
--- /dev/null
@@ -0,0 +1,208 @@
+#!/bin/bash
+#
+# Copyright (C) - 2015 Julien Desfossez <jdesfossez@efficios.com>
+#
+# 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
+TEST_DESC="Streaming - User space tracing"
+
+CURDIR=$(dirname $0)/
+TESTDIR=$CURDIR/../../..
+NR_ITER=1
+NR_USEC_WAIT=0
+TESTAPP_PATH="$TESTDIR/utils/testapp"
+TESTAPP_NAME="gen-ust-events"
+TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
+SESSION_NAME="stream"
+EVENT_NAME="tp:tptest"
+PID_RELAYD=0
+
+TRACE_PATH=$(mktemp -d)
+
+NUM_TESTS=33
+
+source $TESTDIR/utils/utils.sh
+
+if [ ! -x "$TESTAPP_BIN" ]; then
+       BAIL_OUT "No UST events binary detected."
+fi
+
+function lttng_create_session_uri
+{
+       # Create session with default path
+       $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $SESSION_NAME -U net://localhost >/dev/null 2>&1
+       ok $? "Create session with default path"
+}
+
+function lttng_create_session_uri_live
+{
+       # Create session with default path
+       $TESTDIR/../src/bin/lttng/$LTTNG_BIN create $SESSION_NAME --live -U net://localhost >/dev/null 2>&1
+       ok $? "Create live session"
+}
+
+function enable_channel_per_pid()
+{
+       sess_name=$1
+       channel_name=$2
+
+       $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-pid -u $channel_name -s $sess_name >/dev/null 2>&1
+       ok $? "Enable channel $channel_name per PID for session $sess_name"
+}
+
+# MUST set TESTDIR before calling those functions
+
+function test_ust_streaming ()
+{
+       local file_sync_after_first=$(mktemp -u)
+       local file_sync_before_last=$(mktemp -u)
+
+       diag "Test UST streaming with metadata regeneration"
+       lttng_create_session_uri
+       enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
+
+       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
+
+       start_lttng_tracing_ok $SESSION_NAME
+
+       touch ${file_sync_before_last}
+
+       # Wait for the applications started in background
+       wait
+       regenerate_metadata_ok $SESSION_NAME
+
+       stop_lttng_tracing_ok $SESSION_NAME
+       destroy_lttng_session_ok $SESSION_NAME
+       # Validate test
+       validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*
+       if [ $? -eq 0 ]; then
+               # Only delete if successful
+               rm -rf $TRACE_PATH
+       fi
+       rm -f ${file_sync_after_first}
+       rm -f ${file_sync_before_last}
+}
+
+function test_ust_local ()
+{
+       local file_sync_after_first=$(mktemp -u)
+       local file_sync_before_last=$(mktemp -u)
+
+       diag "Test UST local with metadata regeneration"
+       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
+       enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
+
+       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
+
+       start_lttng_tracing_ok $SESSION_NAME
+
+       touch ${file_sync_before_last}
+
+       # Wait for the applications started in background
+       wait
+       regenerate_metadata_ok $SESSION_NAME
+
+       stop_lttng_tracing_ok $SESSION_NAME
+       destroy_lttng_session_ok $SESSION_NAME
+       # Validate test
+       validate_trace $EVENT_NAME $TRACE_PATH
+       if [ $? -eq 0 ]; then
+               # Only delete if successful
+               rm -rf $TRACE_PATH
+       fi
+       rm -f ${file_sync_after_first}
+       rm -f ${file_sync_before_last}
+}
+
+function test_ust_pid ()
+{
+       local file_sync_after_first=$(mktemp -u)
+       local file_sync_before_last=$(mktemp -u)
+
+       diag "Test UST per-pid with metadata regeneration (expect failure)"
+       create_lttng_session_ok $SESSION_NAME $TRACE_PATH
+       enable_channel_per_pid $SESSION_NAME "channel0"
+       enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0"
+
+       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
+
+       start_lttng_tracing_ok $SESSION_NAME
+
+       touch ${file_sync_before_last}
+
+       # Wait for the applications started in background
+       wait
+       regenerate_metadata_fail $SESSION_NAME
+
+       stop_lttng_tracing_ok $SESSION_NAME
+       destroy_lttng_session_ok $SESSION_NAME
+       # Validate test
+       validate_trace $EVENT_NAME $TRACE_PATH
+       if [ $? -eq 0 ]; then
+               # Only delete if successful
+               rm -rf $TRACE_PATH
+       fi
+       rm -f ${file_sync_after_first}
+       rm -f ${file_sync_before_last}
+}
+
+function test_ust_live ()
+{
+       local file_sync_after_first=$(mktemp -u)
+       local file_sync_before_last=$(mktemp -u)
+
+       diag "Test UST live with metadata regeneration (expect failure)"
+       lttng_create_session_uri_live $SESSION_NAME $TRACE_PATH
+       enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
+
+       $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
+
+       start_lttng_tracing_ok $SESSION_NAME
+
+       touch ${file_sync_before_last}
+
+       # Wait for the applications started in background
+       wait
+       regenerate_metadata_fail $SESSION_NAME
+
+       stop_lttng_tracing_ok $SESSION_NAME
+       destroy_lttng_session_ok $SESSION_NAME
+       # Validate test
+       validate_trace $EVENT_NAME $TRACE_PATH
+       if [ $? -eq 0 ]; then
+               # Only delete if successful
+               rm -rf $TRACE_PATH
+       fi
+       rm -f ${file_sync_after_first}
+       rm -f ${file_sync_before_last}
+}
+
+plan_tests $NUM_TESTS
+
+print_test_banner "$TEST_DESC"
+
+start_lttng_relayd "-o $TRACE_PATH"
+start_lttng_sessiond
+
+tests=( test_ust_streaming test_ust_local test_ust_pid test_ust_live )
+
+for fct_test in ${tests[@]};
+do
+       SESSION_NAME=$(randstring 16 0)
+       ${fct_test}
+done
+
+stop_lttng_sessiond
+stop_lttng_relayd
+
+exit $out
index 19af1ed9aa017a2c193f0ddd9f7d5afb5f32dde1..e1ccdd41bd83c2fa3656e48c17f57af3a59f5b54 100644 (file)
@@ -15,5 +15,5 @@ regression/tools/filtering/test_invalid_filter
 regression/tools/filtering/test_unsupported_op
 regression/tools/filtering/test_valid_filter
 regression/tools/wildcard/test_event_wildcard
-regression/tools/metadata-regen/test_kernel
+regression/tools/regen-metadata/test_kernel
 regression/ust/test_event_perf
index da2efe91a72264b93cd5c67b8d46cf28c53408d2..3d744e258cd631e6ce6e26b0baafdb775185d572 100644 (file)
@@ -1366,29 +1366,29 @@ function validate_trace_empty()
        return $ret
 }
 
-function metadata_regenerate ()
+function regenerate_metadata ()
 {
        local expected_to_fail=$1
        local sess_name=$2
 
-       $TESTDIR/../src/bin/lttng/$LTTNG_BIN metadata regenerate -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
+       $TESTDIR/../src/bin/lttng/$LTTNG_BIN regenerate metadata -s $sess_name 1> $OUTPUT_DEST 2> $ERROR_OUTPUT_DEST
        ret=$?
        if [[ $expected_to_fail -eq "1" ]]; then
                test "$ret" -ne "0"
-               ok $? "Expected fail on regenerate $sess_name"
+               ok $? "Expected fail on regenerate metadata $sess_name"
        else
                ok $ret "Metadata regenerate $sess_name"
        fi
 }
 
-function metadata_regenerate_ok ()
+function regenerate_metadata_ok ()
 {
-       metadata_regenerate 0 "$@"
+       regenerate_metadata 0 "$@"
 }
 
-function metadata_regenerate_fail ()
+function regenerate_metadata_fail ()
 {
-       metadata_regenerate 1 "$@"
+       regenerate_metadata 1 "$@"
 }
 
 function destructive_tests_enabled ()
This page took 0.047984 seconds and 4 git commands to generate.