1
package MySQL::Sandbox;
4
use English qw( -no_match_vars );
7
# use base qw( Exporter);
8
# our @ISA= qw(Exporter);
10
our $VERSION='2.0.98';
14
$DEBUG = $ENV{'SBDEBUG'} || $ENV{'SBVERBOSE'} || 0;
15
unless ( $ENV{SANDBOX_HOME} ) {
16
$ENV{SANDBOX_HOME} = "$ENV{HOME}/sandboxes";
19
if ( -d "$ENV{HOME}/sandboxes" ) {
20
$ENV{SANDBOX_HOME} = $ENV{SANDBOX_HOME} || "$ENV{HOME}/sandboxes";
24
my @supported_versions = qw( 3.23 4.0 4.1 5.0 5.1 5.2 6.0);
26
our %default_base_port = (
37
parse_options => undef,
39
# my $version = get_version( $install_dir);
40
# $self->{version} = $VERSION;
45
my ($self, $opt ) = @_;
47
$self->{parse_options} = $opt;
49
return $self->{parse_options};
53
my ($self, $msg) = @_;
55
warn "[***] $msg\n\n";
60
sort { $self->parse_options->{$a}{so} <=> $self->parse_options->{$b}{so} }
61
grep { $self->parse_options->{$_}{parse}} keys %{ $self->parse_options } ) {
62
my $param = $self->parse_options->{$op}{parse};
64
my ($short, $long ) = $param =~ / (?: (\w) \| )? (\S+) /x;
66
$param_str .= q{-} . $short . q{ };
68
$long =~ s/ = s \@? / = name/x;
69
$long =~ s/ = i / = number/x;
70
$param_str .= q{--} . $long;
71
$param_str .= (q{ } x (40 - length($param_str)) );
72
my $text_items = $self->parse_options->{$op}{help};
73
for my $titem (@{$text_items}) {
74
$HELP_MSG .= $param_str . $titem . "\n";
75
$param_str = q{ } x 40;
77
if (@{$text_items} > 1) {
83
print $self->credits(),
84
"syntax: $PROGRAM_NAME [options] \n",
87
" $PROGRAM_NAME --my_file=large --sandbox_directory=my_sandbox\n\n";
95
qq( The MySQL Sandbox, version $VERSION\n)
96
. qq( (C) 2006,2007,2008 Giuseppe Maxia, Sun Microsystems, Database Group\n);
101
# my ($install_dir) = @_;
102
# open my $VER , q{<}, "$install_dir/VERSION"
103
# #open my $VER , q{<}, "VERSION"
104
# or die "file 'VERSION' not found\n";
105
# my $version = <$VER>;
112
my ($self, $fname, $mode, $contents) = @_;
113
open my $FILE, $mode, $fname
114
or die "can't open file $fname\n";
115
print $FILE $contents, "\n";
119
sub supported_versions {
120
return \@supported_versions;
125
die "No port" unless $port;
126
my ($host, $iaddr, $paddr, $proto);
129
$iaddr = inet_aton($host)
130
or die "no host: $host";
131
$paddr = sockaddr_in($port, $iaddr);
133
$proto = getprotobyname('tcp');
134
socket(SOCK, PF_INET, SOCK_STREAM, $proto)
135
or die "error creating test socket for port $port: $!";
136
if (connect(SOCK, $paddr)) {
138
or die "error closing test socket: $!";
144
sub first_unused_port {
146
while (is_port_open($port)) {
148
if ($port > 0xFFF0) {
149
die "no ports available\n";