[lxc-devel] [PATCH] add modes argument to lxc-test-concurrent

Serge Hallyn serge.hallyn at ubuntu.com
Fri Nov 8 21:02:36 UTC 2013


Quoting Dwight Engen (dwight.engen at oracle.com):
> - This allows testing independently the modes with/without threading
> 
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>

Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>

> ---
>  src/tests/concurrent.c | 34 +++++++++++++++++++++++++---------
>  1 file changed, 25 insertions(+), 9 deletions(-)
> 
> diff --git a/src/tests/concurrent.c b/src/tests/concurrent.c
> index 16e93d6..76fae87 100644
> --- a/src/tests/concurrent.c
> +++ b/src/tests/concurrent.c
> @@ -36,6 +36,7 @@ static struct option options[] = {
>      { "iterations",  required_argument, NULL, 'i' },
>      { "template",    required_argument, NULL, 't' },
>      { "delay",       required_argument, NULL, 'd' },
> +    { "modes",       required_argument, NULL, 'm' },
>      { "quiet",       no_argument,       NULL, 'q' },
>      { "help",        no_argument,       NULL, '?' },
>      { 0, 0, 0, 0 },
> @@ -44,13 +45,14 @@ static struct option options[] = {
>  static void usage(void) {
>      fprintf(stderr, "Usage: lxc-test-concurrent [OPTION]...\n\n"
>          "Common options :\n"
> -        "  -j, --threads=N      Threads to run concurrently\n"
> -        "                       (default: 5, use 1 for no threading)\n"
> -        "  -i, --iterations=N   Number times to run the test (default: 1)\n"
> -        "  -t, --template=t     Template to use (default: busybox)\n"
> -        "  -d, --delay=N        Delay in seconds between start and stop\n"
> -        "  -q, --quiet          Don't produce any output\n"
> -        "  -?, --help           Give this help list\n"
> +        "  -j, --threads=N              Threads to run concurrently\n"
> +        "                               (default: 5, use 1 for no threading)\n"
> +        "  -i, --iterations=N           Number times to run the test (default: 1)\n"
> +        "  -t, --template=t             Template to use (default: busybox)\n"
> +        "  -d, --delay=N                Delay in seconds between start and stop\n"
> +        "  -m, --modes=<mode,mode,...>  Modes to run (create, start, stop, destroy)\n"
> +        "  -q, --quiet                  Don't produce any output\n"
> +        "  -?, --help                   Give this help list\n"
>          "\n"
>          "Mandatory or optional arguments to long options are also mandatory or optional\n"
>          "for any corresponding short options.\n\n");
> @@ -135,11 +137,12 @@ int main(int argc, char *argv[]) {
>      pthread_t *threads;
>      struct thread_args *args;
>  
> -    char *modes[] = {"create", "start", "stop", "destroy", NULL};
> +    char *modes_default[] = {"create", "start", "stop", "destroy", NULL};
> +    char **modes = modes_default;
>  
>      pthread_attr_init(&attr);
>  
> -    while ((opt = getopt_long(argc, argv, "j:i:t:d:q", options, NULL)) != -1) {
> +    while ((opt = getopt_long(argc, argv, "j:i:t:d:m:q", options, NULL)) != -1) {
>          switch(opt) {
>          case 'j':
>              nthreads = atoi(optarg);
> @@ -156,6 +159,19 @@ int main(int argc, char *argv[]) {
>          case 'q':
>              quiet = 1;
>              break;
> +        case 'm': {
> +            char *mode_tok, *tok, *saveptr;
> +
> +            modes = NULL;
> +            for (i = 0, mode_tok = optarg;
> +                 (tok = strtok_r(mode_tok, ",", &saveptr));
> +                i++, mode_tok = NULL) {
> +                modes = realloc(modes, sizeof(*modes) * (i+2));
> +                modes[i] = tok;
> +	    }
> +            modes[i] = NULL;
> +            break;
> +	}
>          default: /* '?' */
>              usage();
>              exit(EXIT_FAILURE);
> -- 
> 1.8.3.1
> 




More information about the lxc-devel mailing list