From: Bjorn Munch Date: January 26 2011 11:34am Subject: bzr commit into mysql-5.5-mtr branch (bjorn.munch:3159) Bug#59489 List-Archive: http://lists.mysql.com/commits/129648 X-Bug: 59489 Message-Id: <201101261134.p0QBYWUK009086@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2075705876==" --===============2075705876== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/bm136801/my/menv-55/ based on revid:bjorn.munch@stripped 3159 Bjorn Munch 2011-01-26 Bug #59489 Enable setting of env. variables for mysqld from mtr Added --mysqld-env option, propagate via safe_process On Windows, we do set it in the parent. modified: mysql-test/lib/My/SafeProcess.pm mysql-test/lib/My/SafeProcess/safe_process.cc mysql-test/lib/My/SafeProcess/safe_process_win.cc mysql-test/mysql-test-run.pl === modified file 'mysql-test/lib/My/SafeProcess.pm' --- a/mysql-test/lib/My/SafeProcess.pm 2011-01-18 10:21:37 +0000 +++ b/mysql-test/lib/My/SafeProcess.pm 2011-01-26 11:33:51 +0000 @@ -1,5 +1,5 @@ # -*- cperl -*- -# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public @@ -139,6 +139,7 @@ sub new { my $host = delete($opts{'host'}); my $shutdown = delete($opts{'shutdown'}); my $user_data= delete($opts{'user_data'}); + my $envs = delete($opts{'envs'}); # if (defined $host) { # $safe_script= "lib/My/SafeProcess/safe_process_cpcd.pl"; @@ -161,6 +162,11 @@ sub new { # Point the safe_process at the right parent if running on cygwin push(@safe_args, "--parent-pid=".Cygwin::pid_to_winpid($$)) if IS_CYGWIN; + foreach my $env_var (@$envs) { + croak("Missing = in env string") unless $env_var =~ /=/; + push @safe_args, "--env $env_var"; + } + push(@safe_args, "--"); push(@safe_args, $path); # The program safe_process should execute === modified file 'mysql-test/lib/My/SafeProcess/safe_process.cc' --- a/mysql-test/lib/My/SafeProcess/safe_process.cc 2011-01-18 10:03:44 +0000 +++ b/mysql-test/lib/My/SafeProcess/safe_process.cc 2011-01-26 11:33:51 +0000 @@ -1,4 +1,4 @@ -/* Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc. +/* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -152,7 +152,9 @@ int main(int argc, char* const argv[] ) pid_t own_pid= getpid(); pid_t parent_pid= getppid(); bool nocore = false; - + char* env_ptrs[50]; // 50 --mysqld-env should be plenty + int num_envs= 0; + /* Install signal handlers */ signal(SIGTERM, handle_signal); signal(SIGINT, handle_signal); @@ -175,7 +177,7 @@ int main(int argc, char* const argv[] ) } else { if ( strcmp(arg, "--verbose") == 0 ) verbose++; - else if ( strncmp(arg, "--parent-pid", 10) == 0 ) + else if ( strncmp(arg, "--parent-pid", 12) == 0 ) { /* Override parent_pid with a value provided by user */ const char* start; @@ -184,10 +186,18 @@ int main(int argc, char* const argv[] ) start++; /* Step past = */ if ((parent_pid= atoi(start)) == 0) die("Invalid value '%s' passed to --parent-id", start); - } else if ( strcmp(arg, "--nocore") == 0 ) + } + else if ( strcmp(arg, "--nocore") == 0 ) { nocore = true; // Don't allow the process to dump core } + else if ( strncmp (arg, "--env ", 6) == 0 ) + { + /* Do not set env.var. here but remember and set in child */ + if (num_envs >= 50) + die("Too many --env settings added, max. 50 allowed"); + env_ptrs[num_envs++]= strdup(arg+6); + } else die("Unknown option: %s", arg); } @@ -240,6 +250,10 @@ int main(int argc, char* const argv[] ) // Close write end close(pfd[1]); + for (int i= 0; i < num_envs; i++) + { + putenv(env_ptrs[i]); + } if (execvp(child_argv[0], child_argv) < 0) die("Failed to exec child"); } === modified file 'mysql-test/lib/My/SafeProcess/safe_process_win.cc' --- a/mysql-test/lib/My/SafeProcess/safe_process_win.cc 2011-01-18 10:21:37 +0000 +++ b/mysql-test/lib/My/SafeProcess/safe_process_win.cc 2011-01-26 11:33:51 +0000 @@ -1,4 +1,4 @@ -/* Copyright (C) 2008 MySQL AB, 2009 Sun Microsystems, Inc. +/* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -220,6 +220,10 @@ int main(int argc, const char** argv ) { nocore= TRUE; } + else if ( strncmp (arg, "--env ", 6) == 0 ) + { + putenv(strdup(arg+6)); + } else die("Unknown option: %s", arg); } === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2011-01-24 10:09:53 +0000 +++ b/mysql-test/mysql-test-run.pl 2011-01-26 11:33:51 +0000 @@ -176,6 +176,7 @@ our $opt_big_test= 0; our @opt_combinations; our @opt_extra_mysqld_opt; +our @opt_mysqld_envs; my $opt_compress; my $opt_ssl; @@ -962,6 +963,7 @@ sub command_line_setup { # Extra options used when starting mysqld 'mysqld=s' => \@opt_extra_mysqld_opt, + 'mysqld-env=s' => \@opt_mysqld_envs, # Run test on running server 'extern=s' => \%opts_extern, # Append to hash @@ -4710,6 +4712,7 @@ sub mysqld_start ($$) { nocore => $opt_skip_core, host => undef, shutdown => sub { mysqld_stop($mysqld) }, + envs => \@opt_mysqld_envs, ); mtr_verbose("Started $mysqld->{proc}"); } @@ -5724,9 +5727,10 @@ Options for test case authoring check-testcases Check testcases for sideeffects mark-progress Log line number and elapsed time to .progress -Options that pass on options +Options that pass on options (these may be repeated) mysqld=ARGS Specify additional arguments to "mysqld" + mysqld-env=VAR=VAL Specify additional environment settings for "mysqld" Options to run test on running server --===============2075705876== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/bjorn.munch@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: bjorn.munch@stripped # target_branch: file:///home/bm136801/my/menv-55/ # testament_sha1: 8a11ee0d6204ecd5244b394c624a8c8fd2905b2b # timestamp: 2011-01-26 12:34:32 +0100 # base_revision_id: bjorn.munch@stripped\ # ehlju2rbff3973hw # # Begin bundle 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 --===============2075705876==--