Bug #59489 Enable setting of env. variables for mysqld from mtr
Added --mysqld-env option, propagate via safe_process Simplified: should be safe to set in parent safe_process after it's started Addendum: catch cases of --mysqld-env w/o value, assume env.var name never begins with "--"
This commit is contained in:
parent
4bc23a061c
commit
215efed133
@ -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,13 @@ 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 =~ /=/;
|
||||
croak("Env string $env_var seen, probably missing value for --mysqld-env")
|
||||
if $env_var =~ /^--/;
|
||||
push @safe_args, "--env $env_var";
|
||||
}
|
||||
|
||||
push(@safe_args, "--");
|
||||
push(@safe_args, $path); # The program safe_process should execute
|
||||
|
||||
|
@ -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
|
||||
@ -175,7 +175,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 +184,15 @@ 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 )
|
||||
{
|
||||
putenv(strdup(arg+6));
|
||||
}
|
||||
else
|
||||
die("Unknown option: %s", arg);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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 <testname>.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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user