[lttng-dev] [PATCH lttng-tools v3 1/6] Rename the "metadata regenerate" command to "regenerate metadata"

Jérémie Galarneau jeremie.galarneau at efficios.com
Wed Jul 6 20:30:42 UTC 2016


All six patches are merged, thanks!

Jérémie

On Tue, Jul 5, 2016 at 10:54 AM, Julien Desfossez
<jdesfossez at efficios.com> wrote:
> 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 at efficios.com>
> ---
>  configure.ac                                      |   2 +-
>  doc/man/Makefile.am                               |   3 +-
>  doc/man/lttng-metadata.1.txt                      |  17 +-
>  doc/man/lttng-regenerate.1.txt                    |  63 +++++
>  include/lttng/lttng.h                             |   8 +-
>  src/bin/lttng-sessiond/cmd.c                      |  15 +-
>  src/bin/lttng-sessiond/cmd.h                      |   2 +-
>  src/bin/lttng-sessiond/main.c                     |   6 +-
>  src/bin/lttng/Makefile.am                         |   1 +
>  src/bin/lttng/command.h                           |   1 +
>  src/bin/lttng/commands/metadata.c                 |   2 +-
>  src/bin/lttng/commands/regenerate.c               | 266 ++++++++++++++++++++++
>  src/bin/lttng/lttng.c                             |   1 +
>  src/common/kernel-ctl/kernel-ctl.c                |   2 +-
>  src/common/kernel-ctl/kernel-ctl.h                |   2 +-
>  src/common/mi-lttng.c                             |   2 +
>  src/common/mi-lttng.h                             |   2 +
>  src/common/sessiond-comm/sessiond-comm.h          |   4 +-
>  src/lib/lttng-ctl/lttng-ctl.c                     |  12 +-
>  tests/destructive/metadata-regeneration           |   8 +-
>  tests/fast_regression                             |   2 +-
>  tests/regression/Makefile.am                      |   2 +-
>  tests/regression/tools/Makefile.am                |   2 +-
>  tests/regression/tools/metadata-regen/Makefile.am |  16 --
>  tests/regression/tools/metadata-regen/test_kernel | 109 ---------
>  tests/regression/tools/metadata-regen/test_ust    | 208 -----------------
>  tests/regression/tools/mi/test_mi                 |   4 +-
>  tests/regression/tools/regen-metadata/Makefile.am |  16 ++
>  tests/regression/tools/regen-metadata/test_kernel | 109 +++++++++
>  tests/regression/tools/regen-metadata/test_ust    | 208 +++++++++++++++++
>  tests/root_regression                             |   2 +-
>  tests/utils/utils.sh                              |  14 +-
>  32 files changed, 724 insertions(+), 387 deletions(-)
>  create mode 100644 doc/man/lttng-regenerate.1.txt
>  create mode 100644 src/bin/lttng/commands/regenerate.c
>  delete mode 100644 tests/regression/tools/metadata-regen/Makefile.am
>  delete mode 100755 tests/regression/tools/metadata-regen/test_kernel
>  delete mode 100755 tests/regression/tools/metadata-regen/test_ust
>  create mode 100644 tests/regression/tools/regen-metadata/Makefile.am
>  create mode 100755 tests/regression/tools/regen-metadata/test_kernel
>  create mode 100755 tests/regression/tools/regen-metadata/test_ust
>
> diff --git a/configure.ac b/configure.ac
> index fb2b013..89a7858 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -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
> diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am
> index 1090f1a..f75db6e 100644
> --- a/doc/man/Makefile.am
> +++ b/doc/man/Makefile.am
> @@ -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 =
> diff --git a/doc/man/lttng-metadata.1.txt b/doc/man/lttng-metadata.1.txt
> index 0fa240e..5348916 100644
> --- a/doc/man/lttng-metadata.1.txt
> +++ b/doc/man/lttng-metadata.1.txt
> @@ -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
> index 0000000..dbbfa4d
> --- /dev/null
> +++ b/doc/man/lttng-regenerate.1.txt
> @@ -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)
> diff --git a/include/lttng/lttng.h b/include/lttng/lttng.h
> index 2088864..09aa969 100644
> --- a/include/lttng/lttng.h
> +++ b/include/lttng/lttng.h
> @@ -160,12 +160,18 @@ 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
>  }
> diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c
> index c74da94..bd63389 100644
> --- a/src/bin/lttng-sessiond/cmd.c
> +++ b/src/bin/lttng-sessiond/cmd.c
> @@ -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.
> diff --git a/src/bin/lttng-sessiond/cmd.h b/src/bin/lttng-sessiond/cmd.h
> index a220e3a..320d717 100644
> --- a/src/bin/lttng-sessiond/cmd.h
> +++ b/src/bin/lttng-sessiond/cmd.h
> @@ -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 */
> diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c
> index 497f4ee..3623e5d 100644
> --- a/src/bin/lttng-sessiond/main.c
> +++ b/src/bin/lttng-sessiond/main.c
> @@ -3003,7 +3003,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:
> @@ -4114,9 +4114,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:
> diff --git a/src/bin/lttng/Makefile.am b/src/bin/lttng/Makefile.am
> index b911f33..acd973b 100644
> --- a/src/bin/lttng/Makefile.am
> +++ b/src/bin/lttng/Makefile.am
> @@ -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
>
> diff --git a/src/bin/lttng/command.h b/src/bin/lttng/command.h
> index 72cf4e0..3ac61e1 100644
> --- a/src/bin/lttng/command.h
> +++ b/src/bin/lttng/command.h
> @@ -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[]);
> diff --git a/src/bin/lttng/commands/metadata.c b/src/bin/lttng/commands/metadata.c
> index f6a821a..08d6e58 100644
> --- a/src/bin/lttng/commands/metadata.c
> +++ b/src/bin/lttng/commands/metadata.c
> @@ -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
> index 0000000..c64d8fe
> --- /dev/null
> +++ b/src/bin/lttng/commands/regenerate.c
> @@ -0,0 +1,266 @@
> +/*
> + * Copyright (C) 2015 - Julien Desfossez <jdesfossez at 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;
> +}
> diff --git a/src/bin/lttng/lttng.c b/src/bin/lttng/lttng.c
> index 987a9dd..34816be 100644
> --- a/src/bin/lttng/lttng.c
> +++ b/src/bin/lttng/lttng.c
> @@ -88,6 +88,7 @@ static struct cmd_struct commands[] =  {
>         { "help", NULL},
>         { "version", cmd_version},
>         { "view", cmd_view},
> +       { "regenerate", cmd_regenerate},
>         { NULL, NULL}   /* Array closure */
>  };
>
> diff --git a/src/common/kernel-ctl/kernel-ctl.c b/src/common/kernel-ctl/kernel-ctl.c
> index 3d12df4..e1de0e7 100644
> --- a/src/common/kernel-ctl/kernel-ctl.c
> +++ b/src/common/kernel-ctl/kernel-ctl.c
> @@ -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);
>  }
> diff --git a/src/common/kernel-ctl/kernel-ctl.h b/src/common/kernel-ctl/kernel-ctl.h
> index 6736937..f30e6f3 100644
> --- a/src/common/kernel-ctl/kernel-ctl.h
> +++ b/src/common/kernel-ctl/kernel-ctl.h
> @@ -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 */
>
> diff --git a/src/common/mi-lttng.c b/src/common/mi-lttng.c
> index 109fb41..57678c1 100644
> --- a/src/common/mi-lttng.c
> +++ b/src/common/mi-lttng.c
> @@ -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";
> diff --git a/src/common/mi-lttng.h b/src/common/mi-lttng.h
> index 585818d..cf5f468 100644
> --- a/src/common/mi-lttng.h
> +++ b/src/common/mi-lttng.h
> @@ -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;
> diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h
> index 0983865..29740c1 100644
> --- a/src/common/sessiond-comm/sessiond-comm.h
> +++ b/src/common/sessiond-comm/sessiond-comm.h
> @@ -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;
>
> diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c
> index 0ae6b0b..8c78e1c 100644
> --- a/src/lib/lttng-ctl/lttng-ctl.c
> +++ b/src/lib/lttng-ctl/lttng-ctl.c
> @@ -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));
> @@ -2411,6 +2411,14 @@ end:
>  }
>
>  /*
> + * Deprecated, replaced by lttng_regenerate_metadata.
> + */
> +int lttng_metadata_regenerate(const char *session_name)
> +{
> +       return lttng_regenerate_metadata(session_name);
> +}
> +
> +/*
>   * lib constructor.
>   */
>  static void __attribute__((constructor)) init(void)
> diff --git a/tests/destructive/metadata-regeneration b/tests/destructive/metadata-regeneration
> index 32469b5..d4e632a 100755
> --- a/tests/destructive/metadata-regeneration
> +++ b/tests/destructive/metadata-regeneration
> @@ -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
> diff --git a/tests/fast_regression b/tests/fast_regression
> index 0c4f079..262c846 100644
> --- a/tests/fast_regression
> +++ b/tests/fast_regression
> @@ -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
> diff --git a/tests/regression/Makefile.am b/tests/regression/Makefile.am
> index 6a2d24c..2297ea1 100644
> --- a/tests/regression/Makefile.am
> +++ b/tests/regression/Makefile.am
> @@ -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
> diff --git a/tests/regression/tools/Makefile.am b/tests/regression/tools/Makefile.am
> index 6c39c9f..91820ad 100644
> --- a/tests/regression/tools/Makefile.am
> +++ b/tests/regression/tools/Makefile.am
> @@ -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
> index d4a92eb..0000000
> --- a/tests/regression/tools/metadata-regen/Makefile.am
> +++ /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
> index fb9940a..0000000
> --- a/tests/regression/tools/metadata-regen/test_kernel
> +++ /dev/null
> @@ -1,109 +0,0 @@
> -#!/bin/bash
> -#
> -# Copyright (C) - 2015 Julien Desfossez <jdesfossez at 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
> index fe6ffd8..0000000
> --- a/tests/regression/tools/metadata-regen/test_ust
> +++ /dev/null
> @@ -1,208 +0,0 @@
> -#!/bin/bash
> -#
> -# Copyright (C) - 2015 Julien Desfossez <jdesfossez at 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
> diff --git a/tests/regression/tools/mi/test_mi b/tests/regression/tools/mi/test_mi
> index 0e8fa67..380385f 100755
> --- a/tests/regression/tools/mi/test_mi
> +++ b/tests/regression/tools/mi/test_mi
> @@ -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
> index 0000000..d4a92eb
> --- /dev/null
> +++ b/tests/regression/tools/regen-metadata/Makefile.am
> @@ -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
> index 0000000..fd139ae
> --- /dev/null
> +++ b/tests/regression/tools/regen-metadata/test_kernel
> @@ -0,0 +1,109 @@
> +#!/bin/bash
> +#
> +# Copyright (C) - 2015 Julien Desfossez <jdesfossez at 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
> index 0000000..b7f1af1
> --- /dev/null
> +++ b/tests/regression/tools/regen-metadata/test_ust
> @@ -0,0 +1,208 @@
> +#!/bin/bash
> +#
> +# Copyright (C) - 2015 Julien Desfossez <jdesfossez at 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
> diff --git a/tests/root_regression b/tests/root_regression
> index 2981dc6..d0fad04 100644
> --- a/tests/root_regression
> +++ b/tests/root_regression
> @@ -14,5 +14,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
> diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh
> index da2efe9..3d744e2 100644
> --- a/tests/utils/utils.sh
> +++ b/tests/utils/utils.sh
> @@ -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 ()
> --
> 1.9.1
>
>
>
>



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list